请教各位高手一个关于汇编的简单问题
下面这个顺序检索的程序是否可以不管DPTR(把loop1中的INCDPTR去掉、开始的MOVDPTR#TAB4去掉),loop中把AH、AL赋给R2、R3ORG1000H...
下面这个顺序检索的程序是否可以不管DPTR(把loop1中的INC DPTR去掉、开始的MOV DPTR #TAB4去掉),loop中把AH、AL赋给R2、R3
ORG 1000H
MOV 40H,#xxH ;关键字xxH送40H单元
MOV R1,#50 ;查找次数送R1
MOV A,#14 ;修正值送A
MOV DPTR,#TAB4 ;表首地址送DPTR
LOOP: PUSH Acc
MOVC A,@ A+PC ;查表结果送A
CJNE A,40H,LOOP1;(40H)不等于关键字则转LOOP1
MOV R2,DPH ;查到关键字,把地址送R2,R3
MOV R3,DPL
DONE: RET
LOOP1:POP Acc ;修正值弹出
INC A ;A+1→A
INC DPTR ;修改数据指针DPTR
DJNZ R1,LOOP ;R1≠0,未查完,继续查找
MOV R2,#00H ;R1=0,R2和R3清0
MOV R3,#00H ;表中50个数已查完
AJMP DONE ;从子程序返回
TAB4: DB …,…,… ;50个无序数据表 展开
ORG 1000H
MOV 40H,#xxH ;关键字xxH送40H单元
MOV R1,#50 ;查找次数送R1
MOV A,#14 ;修正值送A
MOV DPTR,#TAB4 ;表首地址送DPTR
LOOP: PUSH Acc
MOVC A,@ A+PC ;查表结果送A
CJNE A,40H,LOOP1;(40H)不等于关键字则转LOOP1
MOV R2,DPH ;查到关键字,把地址送R2,R3
MOV R3,DPL
DONE: RET
LOOP1:POP Acc ;修正值弹出
INC A ;A+1→A
INC DPTR ;修改数据指针DPTR
DJNZ R1,LOOP ;R1≠0,未查完,继续查找
MOV R2,#00H ;R1=0,R2和R3清0
MOV R3,#00H ;表中50个数已查完
AJMP DONE ;从子程序返回
TAB4: DB …,…,… ;50个无序数据表 展开
1个回答
展开全部
ORG 1000H
MOV 40H,#xxH ;关键字xxH送40H单元
MOV R1,#50 ;查找次数送R1
MOV R2,#14 ;修正值送A
MOV DPTR,#TAB4-1 ;表首地址减一送DPTR可少转移一下
LOOP: inc dptr
MOVC A,@dptr ; ·DPTR 查表结果送A
CJNE A,40H,LOOP1;(40H)不等于关键字则转LOOP1
MOV R2,DPH ;查到关键字,把地址送R2,R3
MOV R3,DPL ret
loop1: inc r2
djnz r1,loop
MOV R2,#0 ;没查到关键字,把地址R2,R3 清零
MOV R3,#0
DONE: RET
你原的如查到了可没弹出压的ACC就返回了,要出错。
MOV 40H,#xxH ;关键字xxH送40H单元
MOV R1,#50 ;查找次数送R1
MOV R2,#14 ;修正值送A
MOV DPTR,#TAB4-1 ;表首地址减一送DPTR可少转移一下
LOOP: inc dptr
MOVC A,@dptr ; ·DPTR 查表结果送A
CJNE A,40H,LOOP1;(40H)不等于关键字则转LOOP1
MOV R2,DPH ;查到关键字,把地址送R2,R3
MOV R3,DPL ret
loop1: inc r2
djnz r1,loop
MOV R2,#0 ;没查到关键字,把地址R2,R3 清零
MOV R3,#0
DONE: RET
你原的如查到了可没弹出压的ACC就返回了,要出错。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询