?? 查表—rom表的 程序設(shè)計(jì).asm
字號(hào):
;; 設(shè)有128個(gè)數(shù)據(jù),所有數(shù)據(jù)均為二字節(jié),數(shù)據(jù)指針為DATA_B1表格放于DATA_B2開(kāi)始的地址單元中,所對(duì)應(yīng)的控制量放于0820H開(kāi)始的地址單元中,對(duì)應(yīng)控制量的數(shù)據(jù)從大到小排列。根據(jù)R4、R5的內(nèi)容查找比較接近的一個(gè)數(shù)據(jù),再找出對(duì)應(yīng)表格的最后結(jié)果。
;;;;程序清單:
DATA_B1 EQU 0204H ;;數(shù)據(jù)指針
DATA_B2 EQU 0200H ; 表格地址
RAED_ROM:MOV DPTR,#DATA_B1 ;設(shè)置數(shù)據(jù)指針
MOV R2,#40H ;初始化
MOV R3,#05H ;初始化
LINE1: CLR C
MOV A,R2 ;將R2內(nèi)容除2再送R2
RR A ;R2右移一位
MOV R2,A
CLR A
MOVC A,@A+DPTR
SUBB A,R5
MOV A,#01H
MOVC A,@A+DPTR
SUBB A,R4 ;DPTR內(nèi)容減1并送R4,R5中
JC LINE2 ;;有借位轉(zhuǎn)LINE2執(zhí)行
MOV A,DPL
ADD A,R2
MOV DPL,A
MOV A,DPH
ADDC A,#00H
MOV DPH,A ;將(DPTR)+(R2)送到DPTR中
SJMP LINE3 ;轉(zhuǎn)LINE3執(zhí)行
LINE2:CLR C
MOV A,DPL
SUBB A,R2
MOV DPL,A
MOV A.DPH
SUBB A,#00H
MOV DPH,A ;將(DPTR)-(R2)送到DPTR中
LINE3:DJNZ R3,LINE1 ;R3不為0,轉(zhuǎn)LINE1執(zhí)行
CLR A
CLR C
MOVC A,@A+DPTR
SUBB A,R5
MOV A,#01H
MOVC A,@A+DPTR
SUBB A,R4 ;(DPTR)-(R4R5)有進(jìn)位嗎?
JNC LINE4 ;無(wú)進(jìn)位,轉(zhuǎn)LINE4執(zhí)行
CLR C
MOV A,DPL
SUBB A,R2
MOV DPL,A
MOV A,DPH
SUBB A,#00H
MOV DPH,A ;(DPTR)-(R2)送到DPTR中
LINE4: MOV A,#80H
MOVC A,@A+DPTR
MOV R6,A
RET
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -