📄 startup.lst
字号:
A51 MACRO ASSEMBLER STARTUP DATE 12/09/05 PAGE 1
MS-DOS MACRO ASSEMBLER A51 V4.4
OBJECT MODULE PLACED IN STARTUP.OBJ
ASSEMBLER INVOKED BY: A51 STARTUP.ASM DB
LOC OBJ LINE SOURCE
1 ;------------------------------------------------------------------------------
2 ; This file is part of the C-51 Compiler package
3 ; Copyright (c) KEIL ELEKTRONIK GmbH and Franklin Software, Inc., 1990-1992
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 ; L51 invocation:
13 ;
14 ; L51 <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 80H ; the length of IDATA memory in bytes.
25 ;
0000 26 XDATASTART EQU 0H ; the absolute start-address of XDATA memory
0000 27 XDATALEN EQU 0H ; 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 C-51
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 ;------------------------------------------------------------------------------
A51 MACRO ASSEMBLER STARTUP DATE 12/09/05 PAGE 2
LOC OBJ LINE SOURCE
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
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
0000 75BF12 86 MOV 0BFH,#12H ;SCONF.4(PDWUE) SCONF.1(OME)
0003 759F07 87 MOV 9FH, #07H
88 IF IDATALEN <> 0
0006 787F 89 MOV R0,#IDATALEN - 1
0008 E4 90 CLR A
0009 F6 91 IDATALOOP: MOV @R0,A
000A D8FD 92 DJNZ R0,IDATALOOP
93 ENDIF
94
95 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
109
110 IF PDATALEN <> 0
MOV R0,#PDATASTART
MOV R7,LOW (PDATALEN)
CLR A
A51 MACRO ASSEMBLER STARTUP DATE 12/09/05 PAGE 3
LOC OBJ LINE SOURCE
PDATALOOP: MOVX @R0,A
INC R0
DJNZ R7,PDATALOOP
ENDIF
118
119 IF IBPSTACK <> 0
EXTRN DATA (?C_IBP)
MOV ?C_IBP,#LOW IBPSTACKTOP
ENDIF
124
125 IF XBPSTACK <> 0
EXTRN DATA (?C_XBP)
MOV ?C_XBP,#HIGH XBPSTACKTOP
MOV ?C_XBP+1,#LOW XBPSTACKTOP
ENDIF
131
132 IF PBPSTACK <> 0
EXTRN DATA (?C_PBP)
MOV ?C_PBP,#LOW PBPSTACKTOP
ENDIF
136
137 IF PPAGEENABLE <> 0
MOV P2,#PPAGE
ENDIF
140
000C 758100 F 141 MOV SP,#?STACK-1
000F 020000 F 142 LJMP ?C_START
143
144 END
A51 MACRO ASSEMBLER STARTUP DATE 12/09/05 PAGE 4
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
?C_C51STARTUP C SEG 0000H REL=UNIT
?C_START. . . C ADDR ---- EXT
?C_STARTUP. . C ADDR 0000H A PUB
?STACK. . . . I SEG 0001H REL=UNIT
IBPSTACK. . . N NUMB 0000H A
IBPSTACKTOP . N NUMB 0100H A
IDATALEN. . . N NUMB 0080H A
IDATALOOP . . C ADDR 0009H 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
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, NO ERRORS FOUND
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -