结构推理 设有两个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              ;
   多字节加法子程序:(@R0+@R1→@R0,字节数→R7)
   SADD:CLR   C          ;
   ADD1:MOV   A,@R0      ;取出加数的一个字节
        ADDC  A,@R1      ;加上被加数的一个字节
        MOV   @R0,A      ;保存和数
        INC   R0         ;指向加数的高位字节
        INC   R1         ;指向被加数的高位字节
        DJNZ  R7,ADD1    ;全部加完了吗
        RET              ;子程序返回
【答案解析】