STARTUP.A51文件分析
高位地址的数值,有使用外部页面RAM的情况 ; Standard SFR Symbols ?C_C51STARTUP ;存储空间,汇编器产生的这个段符号名在BL51/L51连接定位时用 ;C51编译器的命名规则 ;RSEG伪指令用于选择一个事先用SEGMENT伪指令声明的普通段 ;用于和C相连接在.src文件中可以看到这个符号 ;号,由.src文件中可以看出这个符号的作用。 ;CODE中新段,起始地址是0000H。代码段的起始点 ;后的复位代码第一个就是执行这条语句。 ;的CODE段为当前段,存储程序代码。 STARTUP1: IF IDATALEN <> 0 ; IF XDATALEN <> 0 ;XDATASTART+ XDATALEN的区域清零 ;高地址就代表256字节 XDATALOOP: ENDIF IF PPAGEENABLE <> 0 ;户自己的目标系统。 IF PDATALEN <> 0 IF IBPSTACK <> 0 ;的使用范围,而符号本身则代表的是一个RAM单元的地址址 IF XBPSTACK <> 0 IF PBPSTACK <> 0 ;和栈的利用空间 ;栈和硬件栈。定义的段符号代表该段的首地址 #if #endif
;
;------------------------------------------------------------------------------
ACC
B
SP
DPL
DPH
?STACK
?C_STARTUP:
IDATALOOP:
ENDIF
;IDATALEN
;就是对0~FFH清零。
;一般考虑到这个往往是你的设计中要区分上电复位和程序复位。有时候当程序复位时
;你不希望一些内存单元被清零了,那么你不对startup.a51作点修改,就不行了。
;默认是自动加载这段startup.a51的。
;所以你要这样做:
;把lib目录下的原始startup.a51文件拷到你的项目所在目录下,再把你项目目录下的
;这个startup.a51加入到你的项目中
;比如改成:
;IDATALEN
;然后编译链接。这样你的程序中就不会包含对idata清零的内码了。
;为什么?上面提到的IF语句的作用呀!当定义IDATALEN=0时,清零代码被跳过!
ELSE
ENDIF
ENDIF
PDATALOOP:
ENDIF
EXTRN DATA (?C_IBP)
ENDIF
EXTRN DATA (?C_XBP)
ENDIF
EXTRN DATA (?C_PBP)
ENDIF
; This code is required if you use L51_BANK.A51 with Banking Mode 4
EXTRN CODE (?B_SWITCH0)
STARTUPA51文件分 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)