📄 startup.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 + -