📄 startup.lst
字号:
A51 MACRO ASSEMBLER STARTUP 06/10/2007 23:11:21 PAGE 1
MACRO ASSEMBLER A51 V7.10
OBJECT MODULE PLACED IN .\out\STARTUP.obj
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE STARTUP.A51 INCDIR(C:\KEIL\C51\LIB\;D:\TEST_C020\MC_55_C\) SET(LARGE) DEBU
G OBJECT(.\out\STARTUP.obj) EP
LOC OBJ LINE SOURCE
1 $nomod51
2
3 ;------------------------------------------------------------------------------
4 ; This file is part of the C51 Compiler package
5 ; Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
6 ;------------------------------------------------------------------------------
7 ; STARTUP.A51: This code is executed after processor reset.
8 ;
9 ; To translate this file use A51 with the following invocation:
10 ;
11 ; A51 STARTUP.A51
12 ;
13 ; To link the modified STARTUP.OBJ file to your application use the following
14 ; BL51 invocation:
15 ;
16 ; BL51 <your object file list>, STARTUP.OBJ <controls>
17 ;
18 ;------------------------------------------------------------------------------
19 ;
20 ; User-defined Power-On Initialization of Memory
21 ;
22 ; With the following EQU statements the initialization of memory
23 ; at processor reset can be defined:
24 ;
25 ; ; the absolute start-address of IDATA memory is always 0
0100 26 IDATALEN EQU 100H ; the length of IDATA memory in bytes.
27 ;
0000 28 XDATASTART EQU 0H ; the absolute start-address of XDATA memory
0000 29 XDATALEN EQU 0H ; the length of XDATA memory in bytes.
30 ;
0000 31 PDATASTART EQU 0H ; the absolute start-address of PDATA memory
0000 32 PDATALEN EQU 0H ; the length of PDATA memory in bytes.
33 ;
34 ; Notes: The IDATA space overlaps physically the DATA and BIT areas of the
35 ; 8051 CPU. At minimum the memory space occupied from the C51
36 ; run-time routines must be set to zero.
37 ;------------------------------------------------------------------------------
38 ;
39 ; Reentrant Stack Initilization
40 ;
41 ; The following EQU statements define the stack pointer for reentrant
42 ; functions and initialized it:
43 ;
44 ; Stack Space for reentrant functions in the SMALL model.
0000 45 IBPSTACK EQU 0 ; set to 1 if small reentrant is used.
0100 46 IBPSTACKTOP EQU 0FFH+1 ; set top of stack to highest location+1.
47 ;
48 ; Stack Space for reentrant functions in the LARGE model.
0001 49 XBPSTACK EQU 1 ; set to 1 if large reentrant is used.
0000 50 XBPSTACKTOP EQU 0FFFFH+1; set top of stack to highest location+1.
51 ;
52 ; Stack Space for reentrant functions in the COMPACT model.
0000 53 PBPSTACK EQU 0 ; set to 1 if compact reentrant is used.
0000 54 PBPSTACKTOP EQU 0FFFFH+1; set top of stack to highest location+1.
55 ;
56 ;------------------------------------------------------------------------------
57 ;
A51 MACRO ASSEMBLER STARTUP 06/10/2007 23:11:21 PAGE 2
58 ; Page Definition for Using the Compact Model with 64 KByte xdata RAM
59 ;
60 ; The following EQU statements define the xdata page used for pdata
61 ; variables. The EQU PPAGE must conform with the PPAGE control used
62 ; in the linker invocation.
63 ;
0000 64 PPAGEENABLE EQU 0 ; set to 1 if pdata object are used.
65 ;
0000 66 PPAGE EQU 0 ; define PPAGE number.
67 ;
00A0 68 PPAGE_SFR DATA 0A0H ; SFR that supplies uppermost address byte
69 ; (most 8051 variants use P2 as uppermost address byte)
70 ;
71 ;------------------------------------------------------------------------------
72
73 ; Standard SFR Symbols
00E0 74 ACC DATA 0E0H
00F0 75 B DATA 0F0H
0081 76 SP DATA 81H
0082 77 DPL DATA 82H
0083 78 DPH DATA 83H
79
00F6 80 CHPENR DATA 0F6H
00BF 81 CHPCON DATA 0BFH
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:
101 IF IDATALEN <> 0
0000 78FF 102 MOV R0,#IDATALEN - 1
0002 E4 103 CLR A
0003 F6 104 IDATALOOP: MOV @R0,A
0004 D8FD 105 DJNZ R0,IDATALOOP
106 ENDIF
107
108 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
DJNZ R6,XDATALOOP
ENDIF
122
123 IF PPAGEENABLE <> 0
A51 MACRO ASSEMBLER STARTUP 06/10/2007 23:11:21 PAGE 3
MOV PPAGE_SFR,#PPAGE
ENDIF
126
127 IF PDATALEN <> 0
MOV R0,#LOW (PDATASTART)
MOV R7,#LOW (PDATALEN)
CLR A
PDATALOOP: MOVX @R0,A
INC R0
DJNZ R7,PDATALOOP
ENDIF
135
136 IF IBPSTACK <> 0
EXTRN DATA (?C_IBP)
MOV ?C_IBP,#LOW IBPSTACKTOP
ENDIF
141
142 IF XBPSTACK <> 0
143 EXTRN DATA (?C_XBP)
144
0006 750000 F 145 MOV ?C_XBP,#HIGH XBPSTACKTOP
0009 750000 F 146 MOV ?C_XBP+1,#LOW XBPSTACKTOP
147 ENDIF
148
149 IF PBPSTACK <> 0
EXTRN DATA (?C_PBP)
MOV ?C_PBP,#LOW PBPSTACKTOP
ENDIF
153
000C 758100 F 154 MOV SP,#?STACK-1
155 ; This code is required if you use L51_BANK.A51 with Banking Mode 4
156 ; EXTRN CODE (?B_SWITCH0)
157 ; CALL ?B_SWITCH0 ; init bank mechanism to code bank 0
000F 020000 F 158 LJMP ?C_START
159
160 END
A51 MACRO ASSEMBLER STARTUP 06/10/2007 23:11:21 PAGE 4
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
?C_C51STARTUP. . . C SEG 0012H REL=UNIT
?C_START . . . . . C ADDR ----- EXT
?C_STARTUP . . . . C ADDR 0000H A
?C_XBP . . . . . . D ADDR ----- EXT
?STACK . . . . . . I SEG 0001H REL=UNIT
ACC. . . . . . . . D ADDR 00E0H A
B. . . . . . . . . D ADDR 00F0H A
CHPCON . . . . . . D ADDR 00BFH A
CHPENR . . . . . . D ADDR 00F6H A
DPH. . . . . . . . D ADDR 0083H A
DPL. . . . . . . . D ADDR 0082H A
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 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 0001H 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 + -