📄 startup.lst
字号:
A51 MACRO ASSEMBLER STARTUP 04/09/2005 13:15:57 PAGE 1
MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN STARTUP.OBJ
ASSEMBLER INVOKED BY: d:\Keil\C51\BIN\A51.EXE STARTUP.A51 SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 $nomod51
2 ;------------------------------------------------------------------------------
3 ; This file is part of the C51 Compiler package
4 ; Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
5 ;------------------------------------------------------------------------------
6 ; STARTUP.A51: This code is executed after processor reset.
7 ;
8 ; To translate this file use A51 with the following invocation:
9 ;
10 ; A51 STARTUP.A51
11 ;
12 ; To link the modified STARTUP.OBJ file to your application use the following
13 ; BL51 invocation:
14 ;
15 ; BL51 <your object file list>, STARTUP.OBJ <controls>
16 ;
17 ;------------------------------------------------------------------------------
18 ;
19 ; User-defined Power-On Initialization of Memory
20 ;
21 ; With the following EQU statements the initialization of memory
22 ; at processor reset can be defined:
23 ;
24 ; ; the absolute start-address of IDATA memory is always 0
0080 25 IDATALEN EQU 80H ; the length of IDATA memory in bytes.
26 ;
0000 27 XDATASTART EQU 0H ; the absolute start-address of XDATA memory
0000 28 XDATALEN EQU 0H ; the length of XDATA memory in bytes.
29 ;
0000 30 PDATASTART EQU 0H ; the absolute start-address of PDATA memory
0000 31 PDATALEN EQU 0H ; the length of PDATA memory in bytes.
32 ;
33 ; Notes: The IDATA space overlaps physically the DATA and BIT areas of the
34 ; 8051 CPU. At minimum the memory space occupied from the C51
35 ; run-time routines must be set to zero.
36 ;------------------------------------------------------------------------------
37 ;
38 ; Reentrant Stack Initilization
39 ;
40 ; The following EQU statements define the stack pointer for reentrant
41 ; functions and initialized it:
42 ;
43 ; Stack Space for reentrant functions in the SMALL model.
0000 44 IBPSTACK EQU 0 ; set to 1 if small reentrant is used.
0100 45 IBPSTACKTOP EQU 0FFH+1 ; set top of stack to highest location+1.
46 ;
47 ; Stack Space for reentrant functions in the LARGE model.
0000 48 XBPSTACK EQU 0 ; set to 1 if large reentrant is used.
0000 49 XBPSTACKTOP EQU 0FFFFH+1; set top of stack to highest location+1.
50 ;
51 ; Stack Space for reentrant functions in the COMPACT model.
0000 52 PBPSTACK EQU 0 ; set to 1 if compact reentrant is used.
0000 53 PBPSTACKTOP EQU 0FFFFH+1; set top of stack to highest location+1.
54 ;
55 ;------------------------------------------------------------------------------
56 ;
57 ; Page Definition for Using the Compact Model with 64 KByte xdata RAM
58 ;
A51 MACRO ASSEMBLER STARTUP 04/09/2005 13:15:57 PAGE 2
59 ; The following EQU statements define the xdata page used for pdata
60 ; variables. The EQU PPAGE must conform with the PPAGE control used
61 ; in the linker invocation.
62 ;
0000 63 PPAGEENABLE EQU 0 ; set to 1 if pdata object are used.
64 ;
0000 65 PPAGE EQU 0 ; define PPAGE number.
66 ;
00A0 67 PPAGE_SFR DATA 0A0H ; SFR that supplies uppermost address byte
68 ; (most 8051 variants use P2 as uppermost address byte)
69 ;
70 ;------------------------------------------------------------------------------
71
72 ; Standard SFR Symbols
00E0 73 ACC DATA 0E0H
00F0 74 B DATA 0F0H
0081 75 SP DATA 81H
0082 76 DPL DATA 82H
0083 77 DPH DATA 83H
0080 78 P0 EQU 80H
0090 79 P1 EQU 90H
00A0 80 P2 EQU 0A0H
00B0 81 P3 EQU 0B0H
82
83 NAME ?C_STARTUP
84
85
86 ?C_C51STARTUP SEGMENT CODE
87 ?STACK SEGMENT IDATA
88
---- 89 RSEG ?STACK
0000 90 DS 1
91
92 EXTRN CODE (?C_START)
93 PUBLIC ?C_STARTUP
94
---- 95 CSEG AT 0
0000 020000 F 96 ?C_STARTUP: LJMP STARTUP1
97
---- 98 RSEG ?C_C51STARTUP
99
0000 100 STARTUP1:
0000 C280 101 CLR P0
0002 C290 102 CLR P1
0004 C2A0 103 CLR P2
0006 C2B0 104 CLR P3
105
106 IF IDATALEN <> 0
0008 787F 107 MOV R0,#IDATALEN - 1
000A E4 108 CLR A
000B F6 109 IDATALOOP: MOV @R0,A
000C D8FD 110 DJNZ R0,IDATALOOP
111 ENDIF
112
113 IF XDATALEN <> 0
MOV DPTR,#XDATASTART
MOV R7,#LOW (XDATALEN)
IF (LOW (XDATALEN)) <> 0
MOV R6,#(HIGH (XDATALEN)) +1
ELSE
MOV R6,#HIGH (XDATALEN)
ENDIF
CLR A
XDATALOOP: MOVX @DPTR,A
INC DPTR
DJNZ R7,XDATALOOP
A51 MACRO ASSEMBLER STARTUP 04/09/2005 13:15:57 PAGE 3
DJNZ R6,XDATALOOP
ENDIF
127
128 IF PPAGEENABLE <> 0
MOV PPAGE_SFR,#PPAGE
ENDIF
131
132 IF PDATALEN <> 0
MOV R0,#LOW (PDATASTART)
MOV R7,#LOW (PDATALEN)
CLR A
PDATALOOP: MOVX @R0,A
INC R0
DJNZ R7,PDATALOOP
ENDIF
140
141 IF IBPSTACK <> 0
EXTRN DATA (?C_IBP)
MOV ?C_IBP,#LOW IBPSTACKTOP
ENDIF
146
147 IF XBPSTACK <> 0
EXTRN DATA (?C_XBP)
MOV ?C_XBP,#HIGH XBPSTACKTOP
MOV ?C_XBP+1,#LOW XBPSTACKTOP
ENDIF
153
154 IF PBPSTACK <> 0
EXTRN DATA (?C_PBP)
MOV ?C_PBP,#LOW PBPSTACKTOP
ENDIF
158
000E 758100 F 159 MOV SP,#?STACK-1
160 ; This code is required if you use L51_BANK.A51 with Banking Mode 4
161 ; EXTRN CODE (?B_SWITCH0)
162 ; CALL ?B_SWITCH0 ; init bank mechanism to code bank 0
0011 020000 F 163 LJMP ?C_START
164
165 END
A51 MACRO ASSEMBLER STARTUP 04/09/2005 13:15:57 PAGE 4
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
?C_C51STARTUP. . . C SEG 0014H REL=UNIT
?C_START . . . . . C ADDR ----- EXT
?C_STARTUP . . . . C ADDR 0000H A
?STACK . . . . . . I SEG 0001H REL=UNIT
ACC. . . . . . . . D ADDR 00E0H A
B. . . . . . . . . D ADDR 00F0H A
DPH. . . . . . . . D ADDR 0083H A
DPL. . . . . . . . D ADDR 0082H A
IBPSTACK . . . . . N NUMB 0000H A
IBPSTACKTOP. . . . N NUMB 0100H A
IDATALEN . . . . . N NUMB 0080H A
IDATALOOP. . . . . C ADDR 000BH R SEG=?C_C51STARTUP
P0 . . . . . . . . N NUMB 0080H A
P1 . . . . . . . . N NUMB 0090H A
P2 . . . . . . . . N NUMB 00A0H A
P3 . . . . . . . . N NUMB 00B0H A
PBPSTACK . . . . . N NUMB 0000H A
PBPSTACKTOP. . . . N NUMB 0000H A
PDATALEN . . . . . N NUMB 0000H A
PDATASTART . . . . N NUMB 0000H A
PPAGE. . . . . . . N NUMB 0000H A
PPAGEENABLE. . . . N NUMB 0000H A
PPAGE_SFR. . . . . D ADDR 00A0H 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 0000H A
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 + -