怎样用AT89S51单片机的汇编语言编写1到100的和

如题所述

用循环指令就可以实现了,程序如下:
SUM:
MOV R2,#100

MOV R3,#0 ;结果存入R4R3

MOV R4,#0

LOOP:
MOV A,R2 ;R2从100到1逐步送入

CLR C

ADD A,R3 ;低八位直接加

MOV R3,A

CLR A

ADDC A,R4 ;高八位带进位加
MOV R4,A

DJNZ R2,LOOP

RET
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-10
我告诉你方法
先设置累加器为1

然后设置另个寄存器为2

然后累加到第一个累加器,

假如第二寄存器小于100,循环这俩步骤
ORG 0

mov r0,#100 ;共100个数
mov a,#0 ;累加结果先清0
mov R2,#0 ;结果的低位
mov R3,#0 ;结果的高位

Loop:
MOV A,R2
ADD A,R0
MOV R2,A

MOV A,R3
ADDC A,#0
MOV R3,A
DJNZ R0, Loop

SJMP $

END
第2个回答  2010-11-02
在内部RAM20~2FH单元中查找0AAH的程序如下:
MOV 30H, #0 ;先假设没有找到.
MOV R0, #20H ;起始地址.
MOV R2, #16 ;查找16个单元.
LOOP:
CJNE @R0, #0AAH, _NEXT ;比较不等转移.
_FOUND:
MOV 30H, #1 ;没有转移,就是找到了.
SJMP _END
_NEXT:
INC R0 ;查找下一个.
DJNZ R2, LOOP ;用R2控制循环次数.
_END:
SJMP $ ;停机.

END
请参考
第3个回答  2010-10-31
第4个回答  2013-03-27
org 00h
mov r0,#100
mov a,#0
mov r2,#0
mov r3,#0
loop:
mov a,r2
add a,r0
mov r2,a
mov a,r3
addc a,#0
mov r3,a
djnz r0,loop
sjmp $
end