?? fdd1.asm
字號:
;入口條件:待查找的內(nèi)容在累加器A中,表格首址在DPTR中,字節(jié)數(shù)在R7中。
;出口信息:OV=0 時,順序號在累加器A中 ;OV=1 時,未找到。
;影響資源:PSW、A、B、R2、R3、R4 堆棧需求: 2字節(jié)
FDD1: MOV B,A ;保存待查找的內(nèi)容
MOV R2,#0 ;區(qū)間低端指針初始化(指向第一個數(shù)據(jù))
MOV A,R7
DEC A
MOV R3,A ;區(qū)間高端指針初始化(指向最后一個數(shù)據(jù))
FD61: CLR C ;判斷區(qū)間大小
MOV A,R3
SUBB A,R2
JC FD69 ;區(qū)間消失,查找失敗
RRC A ;取區(qū)間大小的一半
ADD A,R2 ;加上區(qū)間的低端
MOV R4,A ;得到區(qū)間的中心
MOVC A,@A+DPTR ;讀取該點的內(nèi)容
CJNE A,B,FD65 ;與待查找的內(nèi)容比較
CLR OV ;相同,查找成功
MOV A,R4 ;取順序號
RET
FD65: JC FD68 ;該點的內(nèi)容比待查找的內(nèi)容大否?
MOV A,R4 ;偏大,取該點位置
DEC A ;減一
MOV R3,A ;作為新的區(qū)間高端
SJMP FD61 ;繼續(xù)查找
FD68: MOV A,R4 ;偏小,取該點位置
INC A ;加一
MOV R2,A ;作為新的區(qū)間低端
SJMP FD61 ;繼續(xù)查找
FD69: SETB OV ;查找失敗
RET
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -