stc系列单片机汇编:求1+2+……+99,并送入单片机基本RAM高128B
核心思想:边加边使用bcd加法调整指令(DA A)调整
注意:1、bcd加法调整指令两个加数必须为bcd码
2、bcd加法调整指令只能紧跟在加法指令后进行
3、因为bcd加法调整指令两个加数必须为bcd码,所以程序首先进行的是将加数调整为bcd码。
ORG 0000H
LJMP START
ORG 0100H
START:
MOV R2,#00H ; bcd码数1-19
MOV R3,#63H ;循环19次
MOV R4,#00H ;百位
MOV R5,#00H ;十位、个位
LOOP:
MOV A,R2 ;将R2送入累加器
ADD A,#01H ;累加器加1
DA A ;bcd码调整
MOV R2,A ;将调整后的bcd码值送入R2
MOV A,R5 ;将R5值送入累加器A
ADD A,R2 ;码数相加
DA A ;调整
MOV R5,A ;bcd码送入R4
CLR A ;累加器清零
ADDC A,#00H ;cy值送入A
JNZ BAIWEI ;累加器A为非0转移
DJNZ R3,LOOP ;减1非0转移进行循环
SJMP stop
BAIWEI:
ADDC A,R4 ;将进位1与百位寄存器R4相加结果送给A
DA A ;bcd码调整
MOV R4,A ;调整后的bcd码送回R4
DJNZ R3,LOOP ;减1非0转移进行循环
SJMP stop
stop:
MOV R0,#80H ;以下代码为将计算结果送入基本RAM高128B
MOV R1,#81H
MOV A,R4
MOV @R0,A
MOV A,R5
MOV @R1,A
SJMP $
END