汇编 散转程序

来源:百度知道 编辑:UC知道 时间:2024/05/12 04:17:19
编制程序用单片机实现四则运算。
解:在单片机的键盘上设置“+、-、×、÷”四个运算按键。其键值存放在寄存器R2中,当(R2)=00H时做加法运算,当(R2)=01H时做减法运算,当(R2)=02H时做乘法运算,当(R2)=03H时做除法运算。
P1口输入被加数、被减数、被乘数、被除数,输出商或运算结果的低8位;
P3口输入加数、减数、乘数、除数,输出余数或运算结果的高8位。
程序如下:
ORG 1000H
START: MOV P1, #DATA1H ; 给 P1口、P3口送入数据
DATA1, DATA2, 用于计算
MOV P3, #DATA2H
MOV DPTR, #TABLE ; 将基址TABLE送DPTR
CLR C ; Cy清0
MOV A, R2 ; 将运算键键值送A
SUBB A, #04H ; 将键值和04H相减,用于产生Cy标志
JNC ERROR ; 若输入按键不合理,程序转ERROR处;
否则,按键合理,程序继续执行
ADD A, #04H ; 还原键值
CLR C ; Cy清0
RL A ; 将A左移,即键值×2,
形成正确的散转偏移量
JMP @A+DPTR ; 程序跳到(A)+(DPTR)形成的新地址
TABLE: AJMP P

SUBB A, #04H ; 如果结果Cy=1说明键值小于04H,是合理的,否则键值大于04H就出错。
RL A ; 起键值×2的作用,因为散转表中的每条指令JMP @A+DPTR的代码都是双字节的,所以散转偏移量应该是键值的两倍。如果每组代码是N字节,这里就要×N。