此篇文章中涉及的新指令如下:
数量 助记符 说明 字节数 执行时间 指令代码
26,MOV direct,A 将累加器A中的内容送至direct地址单元中 2 1 F5H,direct
27,ADDC A,@Ri 间接寻址RAM内容加到累加器A中(带进位) 1 1 36H-37H
28,SUBB A,direct 累加器中的内容减去直接寻址字节direct(带借位) 2 1 95H,data
29,MOV A,@Ri 寄存器Ri内为RAM地址,将该地址单元内的数据送累加器A中 1 1 E6H-E7H
30,ADD A,@Ri 间接寻址RAM内容加到累加器A中 1 1 26H-27H
题6
设两个16位二进制数分别存放在地址为44H、45H和46H、47H的内部RAM单元中(低8位先存),求:
(1)两数相加,其和存放地址为48H、49H
(2)两数相减(设存放地址高的16位二进制数为被减数,且结果不产生溢出,即差>=0),其差存放地址为4AH、4BH
解析:此种题考查对16位二进制数的运算
程序源码:
注:方便验证程序正确性,通过手动赋值:
(44H)=90/5AH (45H)=1/01H (46H)=200/C8H(47H)=3/03H
计算结果应该为:
1314,即(48H)=34/22H(49H)=5/05H
(1)
ORG 0000H
MOV 44H,#90
MOV 45H,#1
MOV 46H,#200
MOV 47H,#3
;上述地址内容通过手动赋值,用于测试
CLR C
MOV R0,#44H
MOV R1,#46H
MOV A,@R0
ADD A,@R1
MOV 48H,A
INC R0
INC R1
MOV A,@R0
ADDC A,@R1
MOV 49H,A
SJMP $
END
查看内存值:由此可知程序正确
(2)
注:方便验证程序正确性,通过手动赋值:
(44H)=90/5AH (45H)=1/01H (46H)=200/C8H(47H)=3/03H
计算结果应该为:
622,即(4AH)=110/6EH(4BH)=2/02H
ORG 0000H
MOV 44H,#90
MOV 45H,#1
MOV 46H,#200
MOV 47H,#3
;上述地址内容通过手动赋值,用于测试
CLR C
MOV A,47H
SUBB A,45H
MOV 4BH,A
MOV A,46H
SUBB A,44H
MOV 4AH,A
SJMP $
END
查看内存值:由此可知程序正确