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

📄 startup.lst

📁 51单片机C语言常用模块与综合系统设计实例精讲
💻 LST
字号:
A51 MACRO ASSEMBLER  STARTUP                                                              10/12/2006 20:16:00 PAGE     1


MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN Startup.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE Startup.asm SET(LARGE) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;------------------------------------------------------------------------------
                       2     ;  This file is part of the C51 Compiler package
                       3     ;  Copyright (c) 1988-1999 Keil Elektronik GmbH and Keil Software, Inc.
                       4     ;------------------------------------------------------------------------------
                       5     ;  STARTUP.A51:  This code is executed after processor reset.
                       6     ;
                       7     ;  To translate this file use A51 with the following invocation:
                       8     ;
                       9     ;     A51 STARTUP.A51
                      10     ;
                      11     ;  To link the modified STARTUP.OBJ file to your application use the following
                      12     ;  BL51 invocation:
                      13     ;
                      14     ;     BL51 <your object file list>, STARTUP.OBJ <controls>
                      15     ;
                      16     ;------------------------------------------------------------------------------
                      17     ;
                      18     ;  User-defined Power-On Initialization of Memory
                      19     ;
                      20     ;  With the following EQU statements the initialization of memory
                      21     ;  at processor reset can be defined:
                      22     ;
                      23     ;               ; the absolute start-address of IDATA memory is always 0
  0080                24     IDATALEN        EQU     080H    ; the length of IDATA memory in bytes.
                      25     ;
  A000                26     XDATASTART      EQU     0A000H  ; the absolute start-address of XDATA memory
  2000                27     XDATALEN        EQU     02000H  ; the length of XDATA memory in bytes.
                      28     ;
  0000                29     PDATASTART      EQU     0H      ; the absolute start-address of PDATA memory
  0000                30     PDATALEN        EQU     0H      ; the length of PDATA memory in bytes.
                      31     ;
                      32     ;  Notes:  The IDATA space overlaps physically the DATA and BIT areas of the
                      33     ;          8051 CPU. At minimum the memory space occupied from the C51 
                      34     ;          run-time routines must be set to zero.
                      35     ;------------------------------------------------------------------------------
                      36     ;
                      37     ;  Reentrant Stack Initilization
                      38     ;
                      39     ;  The following EQU statements define the stack pointer for reentrant
                      40     ;  functions and initialized it:
                      41     ;
                      42     ;  Stack Space for reentrant functions in the SMALL model.
  0000                43     IBPSTACK        EQU     0       ; set to 1 if small reentrant is used.
  0100                44     IBPSTACKTOP     EQU     0FFH+1  ; set top of stack to highest location+1.
                      45     ;
                      46     ;  Stack Space for reentrant functions in the LARGE model.      
  0001                47     XBPSTACK        EQU     1       ; set to 1 if large reentrant is used.
  3F00                48     XBPSTACKTOP     EQU     03EFFH+1; set top of stack to highest location+1.
                      49     ;
                      50     ;  Stack Space for reentrant functions in the COMPACT model.    
  0000                51     PBPSTACK        EQU     0       ; set to 1 if compact reentrant is used.
  3F00                52     PBPSTACKTOP     EQU     03EFFH+1; set top of stack to highest location+1.
                      53     ;
                      54     ;------------------------------------------------------------------------------
                      55     ;
                      56     ;  Page Definition for Using the Compact Model with 64 KByte xdata RAM
                      57     ;
                      58     ;  The following EQU statements define the xdata page used for pdata
A51 MACRO ASSEMBLER  STARTUP                                                              10/12/2006 20:16:00 PAGE     2

                      59     ;  variables. The EQU PPAGE must conform with the PPAGE control used
                      60     ;  in the linker invocation.
                      61     ;
  0000                62     PPAGEENABLE     EQU     0       ; set to 1 if pdata object are used.
  0000                63     PPAGE           EQU     0       ; define PPAGE number.
                      64     ;
                      65     ;------------------------------------------------------------------------------
                      66     
                      67                     NAME    ?C_STARTUP
                      68     
                      69     
                      70     ?C_C51STARTUP   SEGMENT   CODE
                      71     ?STACK          SEGMENT   IDATA
                      72     
----                  73                     RSEG    ?STACK
0000                  74                     DS      1
                      75     
                      76                     EXTRN CODE (?C_START)
                      77                     PUBLIC  ?C_STARTUP
                      78     
----                  79                     CSEG    AT      0
0000 020000   F       80     ?C_STARTUP:     LJMP    STARTUP1
                      81     
----                  82                     RSEG    ?C_C51STARTUP
                      83     
0000                  84     STARTUP1:
                      85     
                      86     IF IDATALEN <> 0
0000 787F             87                     MOV     R0,#IDATALEN - 1
0002 E4               88                     CLR     A
0003 F6               89     IDATALOOP:      MOV     @R0,A
0004 D8FD             90                     DJNZ    R0,IDATALOOP
                      91     ENDIF
                      92     
                      93     IF XDATALEN <> 0
                      94     ;test memory 55
0006 90A000           95                     MOV     DPTR,#XDATASTART
0009 7F00             96                     MOV     R7,#LOW (XDATALEN)
                      97       IF (LOW (XDATALEN)) <> 0
                                             MOV     R6,#(HIGH XDATALEN) +1
                               ELSE
000B 7E20            100                     MOV     R6,#HIGH (XDATALEN)
                     101       ENDIF
000D 7455            102                     MOV     A,#55H
000F F0              103     XDATALOOP1:     MOVX    @DPTR,A
0010 A3              104                     INC     DPTR
0011 DFFC            105                     DJNZ    R7,XDATALOOP1
0013 DEFA            106                     DJNZ    R6,XDATALOOP1
                     107     ;check each address
0015 90A000          108                     MOV     DPTR,#XDATASTART
0018 7F00            109                     MOV     R7,#LOW (XDATALEN)
                     110       IF (LOW (XDATALEN)) <> 0
                                             MOV     R6,#(HIGH XDATALEN) +1
                               ELSE
001A 7E20            113                     MOV     R6,#HIGH (XDATALEN)
                     114       ENDIF
001C E0              115     XDATALOOP2:     MOVX    A,@DPTR
001D 6455            116                     XRL     A,#55H
001F 70FE            117                     JNZ     $
0021 A3              118                     INC     DPTR
0022 DFF8            119                     DJNZ    R7,XDATALOOP2
0024 DEF6            120                     DJNZ    R6,XDATALOOP2
                     121     ;test memory aa
0026 90A000          122                     MOV     DPTR,#XDATASTART
0029 7F00            123                     MOV     R7,#LOW (XDATALEN)
                     124       IF (LOW (XDATALEN)) <> 0
A51 MACRO ASSEMBLER  STARTUP                                                              10/12/2006 20:16:00 PAGE     3

                                             MOV     R6,#(HIGH XDATALEN) +1
                               ELSE
002B 7E20            127                     MOV     R6,#HIGH (XDATALEN)
                     128       ENDIF
002D 74AA            129                     MOV     A,#0AAH
002F F0              130     XDATALOOP3:     MOVX    @DPTR,A
0030 A3              131                     INC     DPTR
0031 DFFC            132                     DJNZ    R7,XDATALOOP3
0033 DEFA            133                     DJNZ    R6,XDATALOOP3
                     134     ;check each address
0035 90A000          135                     MOV     DPTR,#XDATASTART
0038 7F00            136                     MOV     R7,#LOW (XDATALEN)
                     137       IF (LOW (XDATALEN)) <> 0
                                             MOV     R6,#(HIGH XDATALEN) +1
                               ELSE
003A 7E20            140                     MOV     R6,#HIGH (XDATALEN)
                     141       ENDIF
003C E0              142     XDATALOOP4:     MOVX    A,@DPTR
003D 64AA            143                     XRL     A,#0AAH
003F 70FE            144                     JNZ     $
0041 A3              145                     INC     DPTR
0042 DFF8            146                     DJNZ    R7,XDATALOOP4
0044 DEF6            147                     DJNZ    R6,XDATALOOP4
                     148     ;set xdata to all 0s
0046 90A000          149                     MOV     DPTR,#XDATASTART
0049 7F00            150                     MOV     R7,#LOW (XDATALEN)
                     151       IF (LOW (XDATALEN)) <> 0
                                             MOV     R6,#(HIGH XDATALEN) +1
                               ELSE
004B 7E20            154                     MOV     R6,#HIGH (XDATALEN)
                     155       ENDIF
004D E4              156                     CLR     A
004E F0              157     XDATALOOP:      MOVX    @DPTR,A
004F A3              158                     INC     DPTR
0050 DFFC            159                     DJNZ    R7,XDATALOOP
0052 DEFA            160                     DJNZ    R6,XDATALOOP
                     161     ENDIF
                     162     
                     163     IF PPAGEENABLE <> 0
                                             MOV     P2,#PPAGE
                             ENDIF
                     166     
                     167     IF PDATALEN <> 0
                                             MOV     R0,#PDATASTART
                                             MOV     R7,#LOW (PDATALEN)
                                             CLR     A
                             PDATALOOP:      MOVX    @R0,A
                                             INC     R0
                                             DJNZ    R7,PDATALOOP
                             ENDIF
                     175     
                     176     IF IBPSTACK <> 0
                             EXTRN DATA (?C_IBP)
                             
                                             MOV     ?C_IBP,#LOW IBPSTACKTOP
                             ENDIF
                     181     
                     182     IF XBPSTACK <> 0
                     183     EXTRN DATA (?C_XBP)
                     184     
0054 75003F   F      185                     MOV     ?C_XBP,#HIGH XBPSTACKTOP
0057 750000   F      186                     MOV     ?C_XBP+1,#LOW XBPSTACKTOP
                     187     ENDIF
                     188     
                     189     IF PBPSTACK <> 0
                             EXTRN DATA (?C_PBP)
A51 MACRO ASSEMBLER  STARTUP                                                              10/12/2006 20:16:00 PAGE     4

                                             MOV     ?C_PBP,#LOW PBPSTACKTOP
                             ENDIF
                     193     
005A 758100   F      194                     MOV     SP,#?STACK-1
005D 020000   F      195                     LJMP    ?C_START
                     196     
                     197                     END
A51 MACRO ASSEMBLER  STARTUP                                                              10/12/2006 20:16:00 PAGE     5

SYMBOL TABLE LISTING
------ ----- -------


N A M E             T Y P E  V A L U E   ATTRIBUTES

?C_C51STARTUP. . .  C SEG    0060H       REL=UNIT
?C_START . . . . .  C ADDR   -----       EXT
?C_STARTUP . . . .  C ADDR   0000H   A   
?C_XBP . . . . . .  D ADDR   -----       EXT
?STACK . . . . . .  I SEG    0001H       REL=UNIT
IBPSTACK . . . . .  N NUMB   0000H   A   
IBPSTACKTOP. . . .  N NUMB   0100H   A   
IDATALEN . . . . .  N NUMB   0080H   A   
IDATALOOP. . . . .  C ADDR   0003H   R   SEG=?C_C51STARTUP
PBPSTACK . . . . .  N NUMB   0000H   A   
PBPSTACKTOP. . . .  N NUMB   3F00H   A   
PDATALEN . . . . .  N NUMB   0000H   A   
PDATASTART . . . .  N NUMB   0000H   A   
PPAGE. . . . . . .  N NUMB   0000H   A   
PPAGEENABLE. . . .  N NUMB   0000H   A   
SP . . . . . . . .  D ADDR   0081H   A   
STARTUP1 . . . . .  C ADDR   0000H   R   SEG=?C_C51STARTUP
XBPSTACK . . . . .  N NUMB   0001H   A   
XBPSTACKTOP. . . .  N NUMB   3F00H   A   
XDATALEN . . . . .  N NUMB   2000H   A   
XDATALOOP. . . . .  C ADDR   004EH   R   SEG=?C_C51STARTUP
XDATALOOP1 . . . .  C ADDR   000FH   R   SEG=?C_C51STARTUP
XDATALOOP2 . . . .  C ADDR   001CH   R   SEG=?C_C51STARTUP
XDATALOOP3 . . . .  C ADDR   002FH   R   SEG=?C_C51STARTUP
XDATALOOP4 . . . .  C ADDR   003CH   R   SEG=?C_C51STARTUP
XDATASTART . . . .  N NUMB   A000H   A   


REGISTER BANK(S) USED: 0 

ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -