checkSum:
CLR A
MOV R1, A ;R1保存和低字节
MOV R2, A ;R2保存高字节
MOV R0, #30H ;R2做计数器
loop:
MOV A, @R0 ;取数到A寄存器
ADD A, R1 ;低字节相加,结果保存到A
MOV R1, A ;将相加后的低字节数据保存到R1
CLR A
RLC A ;将进位标志移进A寄存器,由于A已经被清0,实际上此时A的值就是进位的值
ADD A, R2 ;将进位值和高字节相加,得到新的高字节数
MOV R2, A ;将新的结果保存到高字节
INC R0 ;指针移向下一个地址
CJNE R0,#050H, loop ;还没有达到第50H地址
MOV B, R2 ;B保存结果高字节
MOV A, R1 ;A保存结果低字节
RET ;函数返回
温馨提示:答案为网友推荐,仅供参考