⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sum.lst

📁 十五个关于AT89S51的源代码
💻 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 + -