📄 startup.lst
字号:
A51 MACRO ASSEMBLER STARTUP 05/18/2004 11:39:28 PAGE 1
MACRO ASSEMBLER A51 V7.00a
OBJECT MODULE PLACED IN C:\WAVE\PEI\YXKEY\STARTUP.OBJ
ASSEMBLER INVOKED BY: c:\keil\c51\BIN\A51.EXE C:\WAVE\PEI\YXKEY\STARTUP.ASM DB SB
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
25
26 extrn data (InitOkNum)
27 extrn data (InitOkNum2)
28
0080 29 IDATALEN EQU 80H ; the length of IDATA memory in bytes.
30 ;
0000 31 XDATASTART EQU 0H ; the absolute start-address of XDATA memory
0000 32 XDATALEN EQU 0H ; the length of XDATA memory in bytes.
33 ;
0000 34 PDATASTART EQU 0H ; the absolute start-address of PDATA memory
0000 35 PDATALEN EQU 0H ; the length of PDATA memory in bytes.
36 ;
37 ; Notes: The IDATA space overlaps physically the DATA and BIT areas of the
38 ; 8051 CPU. At minimum the memory space occupied from the C51
39 ; run-time routines must be set to zero.
40 ;------------------------------------------------------------------------------
41 ;
42 ; Reentrant Stack Initilization
43 ;
44 ; The following EQU statements define the stack pointer for reentrant
45 ; functions and initialized it:
46 ;
47 ; Stack Space for reentrant functions in the SMALL model.
0000 48 IBPSTACK EQU 0 ; set to 1 if small reentrant is used.
0100 49 IBPSTACKTOP EQU 0FFH+1 ; set top of stack to highest location+1.
50 ;
51 ; Stack Space for reentrant functions in the LARGE model.
0000 52 XBPSTACK EQU 0 ; set to 1 if large reentrant is used.
0000 53 XBPSTACKTOP EQU 0FFFFH+1; set top of stack to highest location+1.
54 ;
55 ; Stack Space for reentrant functions in the COMPACT model.
0000 56 PBPSTACK EQU 0 ; set to 1 if compact reentrant is used.
0000 57 PBPSTACKTOP EQU 0FFFFH+1; set top of stack to highest location+1.
58 ;
A51 MACRO ASSEMBLER STARTUP 05/18/2004 11:39:28 PAGE 2
59 ;------------------------------------------------------------------------------
60 ;
61 ; Page Definition for Using the Compact Model with 64 KByte xdata RAM
62 ;
63 ; The following EQU statements define the xdata page used for pdata
64 ; variables. The EQU PPAGE must conform with the PPAGE control used
65 ; in the linker invocation.
66 ;
0000 67 PPAGEENABLE EQU 0 ; set to 1 if pdata object are used.
68 ;
0000 69 PPAGE EQU 0 ; define PPAGE number.
70 ;
00A0 71 PPAGE_SFR DATA 0A0H ; SFR that supplies uppermost address byte
72 ; (most 8051 variants use P2 as uppermost address byte)
73 ;
74 ;------------------------------------------------------------------------------
75
76 ; Standard SFR Symbols
00E0 77 ACC DATA 0E0H
00F0 78 B DATA 0F0H
0081 79 SP DATA 81H
0082 80 DPL DATA 82H
0083 81 DPH DATA 83H
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
102 ;pei上电不清砇AM区 有未初始化但InitOkNum=aa 的情况?
0000 E500 F 103 mov a,InitOkNum
0002 B4AA07 104 cjne a,#0aah,CLRRAM
0005 E500 F 105 mov a,InitOkNum2
0007 B45502 106 cjne a,#55h,clrram
000A 8006 107 sjmp STARTUP2
000C 108 CLRRAM:
109 IF IDATALEN <> 0
000C 787F 110 MOV R0,#IDATALEN - 1
000E E4 111 CLR A
000F F6 112 IDATALOOP: MOV @R0,A
0010 D8FD 113 DJNZ R0,IDATALOOP
114 ENDIF
0012 115 STARTUP2:
116 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
A51 MACRO ASSEMBLER STARTUP 05/18/2004 11:39:28 PAGE 3
XDATALOOP: MOVX @DPTR,A
INC DPTR
DJNZ R7,XDATALOOP
DJNZ R6,XDATALOOP
ENDIF
130
131 IF PPAGEENABLE <> 0
MOV PPAGE_SFR,#PPAGE
ENDIF
134
135 IF PDATALEN <> 0
MOV R0,#LOW (PDATASTART)
MOV R7,#LOW (PDATALEN)
CLR A
PDATALOOP: MOVX @R0,A
INC R0
DJNZ R7,PDATALOOP
ENDIF
143
144 IF IBPSTACK <> 0
EXTRN DATA (?C_IBP)
MOV ?C_IBP,#LOW IBPSTACKTOP
ENDIF
149
150 IF XBPSTACK <> 0
EXTRN DATA (?C_XBP)
MOV ?C_XBP,#HIGH XBPSTACKTOP
MOV ?C_XBP+1,#LOW XBPSTACKTOP
ENDIF
156
157 IF PBPSTACK <> 0
EXTRN DATA (?C_PBP)
MOV ?C_PBP,#LOW PBPSTACKTOP
ENDIF
161
0012 758100 F 162 MOV SP,#?STACK-1
163 ; This code is required if you use L51_BANK.A51 with Banking Mode 4
164 ; EXTRN CODE (?B_SWITCH0)
165 ; CALL ?B_SWITCH0 ; init bank mechanism to code bank 0
0015 020000 F 166 LJMP ?C_START
167
168 END
A51 MACRO ASSEMBLER STARTUP 05/18/2004 11:39:28 PAGE 4
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
?C_C51STARTUP. . . C SEG 0018H 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
CLRRAM . . . . . . C ADDR 000CH R SEG=?C_C51STARTUP
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 000FH R SEG=?C_C51STARTUP
INITOKNUM. . . . . D ADDR ----- EXT
INITOKNUM2 . . . . D ADDR ----- EXT
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
STARTUP2 . . . . . C ADDR 0012H 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 + -