将80C51内部RAM30H~4FH单元中8位无符号相加,结果保留到B(高位)和A(低位)中.

用单片机的汇编语言,不用C语言

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 ;函数返回
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-01-01
SUM: MOV R0,#30H CLR A MOV B,#0LOOP: ADD A,@R0 XCH A,B ADDC A,#0 XCH A,B INC R0 CJNE R0,#40H,LOOP RET追问

ADDC A,#0 有什么意义

相似回答