单片机汇编语言1加到100怎么编?

如题所述

org 0

mov r0,#100 ;共100个数
mov a,#0 ;累加结果先清0
mov r1,#1 ;第1个数为1

loop:
add a,r1 ;把数累加起来
inc r1 ;下一个数
djnz r0,loop;共100个数,未完转 LOOP循环

sjmp $ ;完成
end追问

好像不对啊!累加器只能放8位数,而结果是16位,不好意思,请在检查一遍,谢谢了!

追答

再用个Addc指令不就OK了。

追问

不好意思,我是初学者,我还是不会,请写详细点,谢谢!

追答

测试正确
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

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-27
这个用查表话很简单的, ORG 0000H
SJMP MIAN
ORG 0030H
MIAN: MOV 30H,#00H
MOV 31H,#00H
MOV A,30H
L1: MOV DPTR,#TAB
MOV B,#100
DIV AB
MOVC A,@A+DPTR
SETB P2.0
MOV P1, #0FEH
CLR P2.0
SETB P2.1
MOV P1,A
CALL DE
CLR P2.1
MOV A,B
MOV B,#10
DIV AB
MOVC A,@A+DPTR
SETB P2.0
MOV P1, #0FDH
CLR P2.0
SETB P2.1
MOV P1,A
CALL DE
CLR P2.1
MOV A,B
MOVC A,@A+DPTR
SETB P2.0
MOV P1, #0FBH
CLR P2.0
SETB P2.1
MOV P1,A
CALL DE
CLR P2.1
MOV A,30H
MOV R0,31H
INC 31H
CJNE R0,#66,L1
MOV 31H,#00H
INC 30H
MOV A,30H
CJNE A,#256,L1
AJMP MIAN
DE:
MOV R5,#1
L4: MOV R6,#10
L3: MOV R7,#248
DJNZ R7,$
DJNZ R6,L3
DJNZ R5,L4
RET
TAB: DB 3FH,06H,5BH,4FH
DB 66H,6DH,7DH,07H
DB 7FH,6FH
END

这是0到255的程序,考你一下,你改一个数就可以实现0到100了,呵呵,我是用开发板写的,用了锁存器的
第2个回答  2011-10-28
ORG 0000H
MOV A,#1
MOV R0,A
CJNE R0,#100,NEXT
SJMP $
NEXT: INC A
END
第3个回答  2011-10-27
请问是什么型号的单片机呢?追问

是80c51单片机,我是初学者,拜托写详细点,谢谢了!