📄 sum.lst
字号:
A51 MACRO ASSEMBLER SUM 07/29/2007 16:12:52 PAGE 1
MACRO ASSEMBLER A51 V7.08a
OBJECT MODULE PLACED IN sum.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE sum.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 ;
3 ;实例九:数据求和并显示 summation (《51单片机应用从零开始》 8.11小节实例)
4 ;
5 ;现象:将78,12,44,81,99这五个数求和,并在七段数码管上显示结果
6 ;
7 ;作者:杨欣,刘长焕,张延强 电路飞翔网 eedesign@163.com
8 ;
9 ; http://www.circuitfly.com
10 ;
11 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
12
13
0000 14 ORG 00H
0000 15 START:
0000 7840 16 MOV R0, #40H ;R0=40H,作为数据的存放起始地址
0002 7678 17 MOV @R0, #78H ;78放到40H中
0004 08 18 INC R0 ;R0=41H
0005 7612 19 MOV @R0, #12H ;12放到41H中
0007 08 20 INC R0
0008 7644 21 MOV @R0, #44H
000A 08 22 INC R0
000B 7681 23 MOV @R0, #81H
000D 08 24 INC R0
000E 7699 25 MOV @R0, #99H
26
0010 27 CAL:
0010 7840 28 MOV R0, #40H ;R0=40H
0012 7A05 29 MOV R2, #5 ;R2=5,作为求和计数器
0014 E4 30 CLR A ;ACC=0,ACC作为和的低位数据存储器
0015 FF 31 MOV R7, A ;R7=0,R7作为和的高位数据存储器
32
0016 33 LOOP:
0016 26 34 ADD A, @R0 ;将R0所指地址中的内容与ACC相加
0017 D4 35 DA A ;十进制调整
0018 FB 36 MOV R3, A ;保存到R3中
0019 5001 37 JNC NEXT ;如果CY=0,说明没有进位,跳到NEXT
001B 0F 38 INC R7 ;如果CY=1,说明有进位,和的高位数据加1
39
001C 40 NEXT:
001C 08 41 INC R0 ;地址指针增加1
001D DAF7 42 DJNZ R2, LOOP ;循环,直到5个数据相加完成为止
43
001F 44 DIS:
45
001F C0E0 46 PUSH ACC ; ACC压栈
0021 540F 47 ANL A, #0FH ; 去掉ACC的高位数据,保留低位数据
0023 758001 48 MOV P0, #01H ; 选通七段数码管D1
0026 F5A0 49 MOV P2, A ; 从P2口输出
0028 1149 50 CALL DELAY ; 延时1ms
002A 53A000 51 ANL P2, #00H ; 熄灭一下
002D D0E0 52 POP ACC ; ACC弹栈
002F C4 53 SWAP A ; ACC高、低字节对换
0030 540F 54 ANL A, #0FH ; 去掉ACC的高位数据,保留低位数据
0032 758002 55 MOV P0, #02H ; 选通七段数码管D2
0035 F5A0 56 MOV P2, A ; 从P2口输出
0037 1149 57 CALL DELAY ; 延时1ms
0039 53A000 58 ANL P2, #00H ; 熄灭一下
A51 MACRO ASSEMBLER SUM 07/29/2007 16:12:52 PAGE 2
003C 758004 59 MOV P0, #04H ; 选通七段数码管D3
003F 8FA0 60 MOV P2, R7 ; 高位数据从P2输出
0041 1149 61 CALL DELAY ; 延时1ms
0043 53A000 62 ANL P2, #00H ; 熄灭一下
0046 EB 63 MOV A, R3 ; 重新装载
0047 80D6 64 JMP DIS
65
0049 66 DELAY: ; 延时子程序,1ms
0049 7902 67 MOV R1, #2
004B 7AF8 68 D1: MOV R2, #248
004D DAFE 69 DJNZ R2, $
004F D9FA 70 DJNZ R1, D1
0051 22 71 RET
72
73 END
A51 MACRO ASSEMBLER SUM 07/29/2007 16:12:52 PAGE 3
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
CAL. . . . . . . . C ADDR 0010H A
D1 . . . . . . . . C ADDR 004BH A
DELAY. . . . . . . C ADDR 0049H A
DIS. . . . . . . . C ADDR 001FH A
LOOP . . . . . . . C ADDR 0016H A
NEXT . . . . . . . C ADDR 001CH A
P0 . . . . . . . . D ADDR 0080H A
P2 . . . . . . . . D ADDR 00A0H A
START. . . . . . . C ADDR 0000H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -