1. 进行现场保护,保存工作寄存器,状态寄存器值等中断中用到的寄存器。
2. 将求和用的寄存器(至少4个字节)清零
3. 将最低字节被加数送入工作寄存器,加数最低字节与工作寄存器相加,结果存在工作寄存器
4.工作寄存器内容送入和的最低字节,如有进位和的第2字节加1
5. .将第2字节被加数送入工作寄存器,和的第2字节与工作寄存器相加,结果存在和的第2字节, 如有进位,和的第3字节加1
6. 将第2字节加数送入工作寄存器,和的第2字节与工作寄存器相加,结果存在和的第2字节,.如有进位和的第3字节加1
7..将第3字节被加数送入工作寄存器,和的第3字节与工作寄存器相加,结果存在和的第3字节, 如有进位,和的第4字节加1
8. 将第3字节加数送入工作寄存器,和的第3字节与工作寄存器相加,结果存在和的第3字节,.如有进位和的第4字节加1
9. . 恢复现场,恢复工作寄存器,状态寄存器值等中断中用到的寄存器。
首先:R1+R4和
R2+R5
两个值都大于单字节最大值FF导致存储在单字节寄存器中溢出,导致高字节的数据丢失。
其次:楼主在将R1、R2存放到中间寄存器的时候中间寄存器A应该为16位寄存器才不会丢失高字节的数据。
具体的程序编写,相信楼主经过提示一定能自行解决,这样提高也是最大的。
简单,不用循环结构。MOV A, 40H
ADD A, 43H
MOV 50H,A
MOV A, 41H
ADDC A, 44H
MOV 51H,A
MOV A, 42H
ADDC A, 45H
MOV 52H,A
MOV 20H.0,C
完
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)