ZERO: INC 72H LOOP1:INC R0
DJNZ R3 , LOOP
;零的个数加1
;调整源数地址指针 ;未送完,继续
SJMP $
END
4.2.4 查表程序设计
查表就是把事先计算或测得的数据按照一 定的顺序编制成表格存放在存储器中,然后根 据输入的数据,从表格中查出所需的结果。
查表指令有: MOVC A,@A+DPTR MOVC A,@A+PC
例 4.6
片内RAM的EGA单元中有一个大写 的英文字母,要求将此字母在英文字母 表中的位置送入片内的COUNT单元中, 如EGA单元中字母为I时,则COUNT单元 中需送入数字9。
分析
如果将26个英文字母按照顺序编成 一个表,通过查表法得到一个字母 与EGA单元中的字母比较,若不相 等再查,同时记录查表的次数。查 完后,将记录次数送COUNT单元。
;设源数地址指针 ;设正数地址指针 ;设负数地址指针
LOOP:MOV A , @R0 JZ ZERO JNB ACC.7 , POSI INC 71H
MOV R4 , A MOV A , R2 XCH A , R1 XCH A , R4 MOV @R1 , A XCH A , R4 XCH A , R1 INC R2 SJMP LOOP1
ORG 1000H
CLR C
MOV R0 , #FIRST ;第一个数地址送R0中
MOV A , @R0
;取第一个数
INC R0
;R0指向第二个数地址
SUBB A , @R0
;两数比较
JC BIG
;第二个数大转BIG
DEC R0
;R0指向第一个数地址
BIG: MOV SECOND , @R0 ;存大数