STARTUP.LST
上传用户:zqdhsx28
上传日期:2010-03-30
资源大小:154k
文件大小:11k
- A51 MACRO ASSEMBLER STARTUP 04/04/2005 10:12:53 PAGE 1
- MACRO ASSEMBLER A51 V7.10
- OBJECT MODULE PLACED IN STARTUP.OBJ
- ASSEMBLER INVOKED BY: C:KeilC51BINA51.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/04/2005 10:12:53 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
- 78
- 79 NAME ?C_STARTUP
- 80
- 81
- 82 ?C_C51STARTUP SEGMENT CODE
- 83 ?STACK SEGMENT IDATA
- 84
- ---- 85 RSEG ?STACK
- 0000 86 DS 1
- 87
- 88 EXTRN CODE (?C_START)
- 89 PUBLIC ?C_STARTUP
- 90
- ---- 91 CSEG AT 0
- 0000 020000 F 92 ?C_STARTUP: LJMP STARTUP1
- 93
- ---- 94 RSEG ?C_C51STARTUP
- 95
- 0000 96 STARTUP1:
- 97
- 98 IF IDATALEN <> 0
- 0000 787F 99 MOV R0,#IDATALEN - 1
- 0002 E4 100 CLR A
- 0003 F6 101 IDATALOOP: MOV @R0,A
- 0004 D8FD 102 DJNZ R0,IDATALOOP
- 103 ENDIF
- 104
- 105 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
- 119
- 120 IF PPAGEENABLE <> 0
- MOV PPAGE_SFR,#PPAGE
- ENDIF
- 123
- 124 IF PDATALEN <> 0
- A51 MACRO ASSEMBLER STARTUP 04/04/2005 10:12:53 PAGE 3
- MOV R0,#LOW (PDATASTART)
- MOV R7,#LOW (PDATALEN)
- CLR A
- PDATALOOP: MOVX @R0,A
- INC R0
- DJNZ R7,PDATALOOP
- ENDIF
- 132
- 133 IF IBPSTACK <> 0
- EXTRN DATA (?C_IBP)
-
- MOV ?C_IBP,#LOW IBPSTACKTOP
- ENDIF
- 138
- 139 IF XBPSTACK <> 0
- EXTRN DATA (?C_XBP)
-
- MOV ?C_XBP,#HIGH XBPSTACKTOP
- MOV ?C_XBP+1,#LOW XBPSTACKTOP
- ENDIF
- 145
- 146 IF PBPSTACK <> 0
- EXTRN DATA (?C_PBP)
- MOV ?C_PBP,#LOW PBPSTACKTOP
- ENDIF
- 150
- 0006 758100 F 151 MOV SP,#?STACK-1
- 152 ; This code is required if you use L51_BANK.A51 with Banking Mode 4
- 153 ; EXTRN CODE (?B_SWITCH0)
- 154 ; CALL ?B_SWITCH0 ; init bank mechanism to code bank 0
- 0009 020000 F 155 LJMP ?C_START
- 156
- 157 END
- A51 MACRO ASSEMBLER STARTUP 04/04/2005 10:12:53 PAGE 4
- SYMBOL TABLE LISTING
- ------ ----- -------
- N A M E T Y P E V A L U E ATTRIBUTES
- ?C_C51STARTUP. . . C SEG 000CH 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 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 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)