A-A+

设有两个4字节十六进制数 分别放在内RAM 40H和50H起始的单元中 求这两数之和 并将和

2022-08-13 22:23:37 问答库 阅读 199 次

问题详情

设有两个4字节十六进制数,分别放在内RAM 40H和50H起始的单元中,求这两数之和,并将和存放到40H为起始的单元中(均低位先存)。另有两个6字节的16进制数,分别存放在内RAM 60H和70H起始的单元中,求两数之和,并将和存放在60H为起始的单元中。

参考答案

可以将多字节两数加法编为一个子程序,在主程序中设定其存放地址及字节数等,然后调用。程序设计如下:
主程序:
SUB:MOV R0,#40H ;加数低位地址→R0
MOV R1,#50H ;被加数低位地址→R1
MOV R7,#4 ;置字节数
LCALL SADD ;调用加法子程序
MOV R0,#60H ;加数低位地址→R0
MOV R1,#70H ;被加数低位地址→R1
MOV R7,#6 ;置字节数
LCALL SADD ;调用加法子程序
RET ;
多字节加法子程序:(@[email protected]→@R0,字节数→R7)
SADD:CLR C ;
ADD1:MOV A,@R0 ;取出加数的一个字节
ADDC A,@R1 ;加上被加数的一个字节
MOV @R0,A ;保存和数
INC R0 ;指向加数的高位字节
INC R1 ;指向被加数的高位字节
DJNZ R7,ADD1 ;全部加完了吗
RET ;子程序返回

考点:之和,字节