📄 startup.lst
字号:
A51 MACRO ASSEMBLER STARTUP 09/20/2005 21:47:35 PAGE 1
MACRO ASSEMBLER A51 V7.10
OBJECT MODULE PLACED IN startup.OBJ
ASSEMBLER INVOKED BY: e:\Keil\C51\BIN\A51.EXE startup.a51 SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1
2
3
4
5
6
7
8
9
10
11
12
13 ;_____ I N C L U D E S ____________________________________________________
14
15
16 ;_____ M A C R O S ________________________________________________________
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
0100 24 IDATALEN EQU 100H ; the length of IDATA memory in bytes.
25 ;
0000 26 XDATASTART EQU 0H ; the absolute start-address of XDATA memory
0800 27 XDATALEN EQU 800H ; the length of XDATA memory in bytes.
28 ;
0000 29 PDATASTART EQU 0H ; the absolute start-address of PDATA memory
0100 30 PDATALEN EQU 100H ; 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.
0000 47 XBPSTACK EQU 0 ; set to 1 if large reentrant is used.
0000 48 XBPSTACKTOP EQU 0FFFFH+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.
0000 52 PBPSTACKTOP EQU 0FFFFH+1; set top of stack to highest location+1.
53 ;
54 ;------------------------------------------------------------------------------
55
56 NAME ?C_STARTUP
57
58
A51 MACRO ASSEMBLER STARTUP 09/20/2005 21:47:35 PAGE 2
59 ;_____ D E F I N I T I O N ________________________________________________
60
61 ?C_C51STARTUP SEGMENT CODE
62 ?STACK SEGMENT IDATA
63
---- 64 RSEG ?STACK
0000 65 DS 1
66
67
68 ;_____ D E C L A R A T I O N ______________________________________________
69
70 EXTRN CODE (?C_START)
71 PUBLIC ?C_STARTUP
72
73 ;*F**************************************************************************
74 ; NAME: C_STARTUP
75 ;----------------------------------------------------------------------------
76 ; PARAMS:
77 ;
78 ; return:
79 ;----------------------------------------------------------------------------
80 ; PURPOSE:
81 ; Reset vector
82 ;----------------------------------------------------------------------------
83 ; EXAMPLE:
84 ;----------------------------------------------------------------------------
85 ; NOTE:
86 ;----------------------------------------------------------------------------
87 ; REQUIREMENTS:
88 ;****************************************************************************
---- 89 CSEG AT 0
90
0000 91 ?C_STARTUP:
0000 020000 F 92 LJMP STARTUP1
93
94
95 ;*F**************************************************************************
96 ; NAME: STARTUP1
97 ;----------------------------------------------------------------------------
98 ; PARAMS:
99 ;
100 ; return:
101 ;----------------------------------------------------------------------------
102 ; PURPOSE:
103 ; Memory initialization
104 ;----------------------------------------------------------------------------
105 ; EXAMPLE:
106 ;----------------------------------------------------------------------------
107 ; NOTE:
108 ;----------------------------------------------------------------------------
109 ; REQUIREMENTS:
110 ;****************************************************************************
---- 111 RSEG ?C_C51STARTUP
112
0000 113 STARTUP1:
114
115 IF IDATALEN <> 0
0000 78FF 116 MOV R0,#IDATALEN - 1
0002 E4 117 CLR A
0003 118 IDATALOOP:
0003 F6 119 MOV @R0,A
0004 D8FD 120 DJNZ R0,IDATALOOP
121 ENDIF
122
123 IF XDATALEN <> 0
0006 900000 124 MOV DPTR,#XDATASTART
A51 MACRO ASSEMBLER STARTUP 09/20/2005 21:47:35 PAGE 3
0009 7F00 125 MOV R7,#LOW (XDATALEN)
126 IF (LOW (XDATALEN)) <> 0
MOV R6,#(HIGH XDATALEN) +1
ELSE
000B 7E08 129 MOV R6,#HIGH (XDATALEN)
130 ENDIF
000D E4 131 CLR A
000E 132 XDATALOOP:
000E F0 133 MOVX @DPTR,A
000F A3 134 INC DPTR
0010 DFFC 135 DJNZ R7,XDATALOOP
0012 DEFA 136 DJNZ R6,XDATALOOP
137 ENDIF
138
139
140 IF PDATALEN <> 0
0014 7800 141 MOV R0,#PDATASTART
0016 7F00 142 MOV R7,#LOW (PDATALEN)
0018 E4 143 CLR A
0019 144 PDATALOOP:
0019 F2 145 MOVX @R0,A
001A 08 146 INC R0
001B DFFC 147 DJNZ R7,PDATALOOP
148 ENDIF
149
150 IF IBPSTACK <> 0
EXTRN DATA (?C_IBP)
MOV ?C_IBP,#LOW IBPSTACKTOP
ENDIF
155
156 IF XBPSTACK <> 0
EXTRN DATA (?C_XBP)
MOV ?C_XBP,#HIGH XBPSTACKTOP
MOV ?C_XBP+1,#LOW XBPSTACKTOP
ENDIF
162
163 IF PBPSTACK <> 0
EXTRN DATA (?C_PBP)
MOV ?C_PBP,#LOW PBPSTACKTOP
ENDIF
167
001D 758100 F 168 MOV SP,#?STACK-1
0020 020000 F 169 LJMP ?C_START
170
171 END
A51 MACRO ASSEMBLER STARTUP 09/20/2005 21:47:35 PAGE 4
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
?C_C51STARTUP. . . C SEG 0023H REL=UNIT
?C_START . . . . . C ADDR ----- EXT
?C_STARTUP . . . . C ADDR 0000H A
?STACK . . . . . . I SEG 0001H REL=UNIT
IBPSTACK . . . . . N NUMB 0000H A
IBPSTACKTOP. . . . N NUMB 0100H A
IDATALEN . . . . . N NUMB 0100H A
IDATALOOP. . . . . C ADDR 0003H R SEG=?C_C51STARTUP
PBPSTACK . . . . . N NUMB 0000H A
PBPSTACKTOP. . . . N NUMB 0000H A
PDATALEN . . . . . N NUMB 0100H A
PDATALOOP. . . . . C ADDR 0019H R SEG=?C_C51STARTUP
PDATASTART . . . . N NUMB 0000H A
SP . . . . . . . . D ADDR 0081H A
STARTUP1 . . . . . C ADDR 0000H R SEG=?C_C51STARTUP
XBPSTACK . . . . . N NUMB 0000H A
XBPSTACKTOP. . . . N NUMB 0000H A
XDATALEN . . . . . N NUMB 0800H A
XDATALOOP. . . . . C ADDR 000EH R SEG=?C_C51STARTUP
XDATASTART . . . . N NUMB 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 + -