- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章 汇编语言和伪指令; 采用汇编语言,用户可以直接操作到处理器内部的工作寄存器和片内RAM单元,能把数据的处理过程表述得非常具体和详实。
汇编语言并不独立于具体机器,是一种非常通用的低级程序设计语言。
;4.1.1 汇编语言源程序格式;4.1.2 常用伪指令介绍;[伪指令语句] 伪指令语句是用于指示汇编程序如何汇编源程序,所以这种语句又叫命令语句。例如源程序中的伪指令语句告诉汇编程序:该源程序如何分段,有哪些逻辑段在程序段中哪些是当前段,它们分别由哪个段寄存器指向;定义了哪些数据,存储单元是如何分配的等等。伪指令语句除定义的具体数据要生成目标代码外,其他均没有对应的目标代码。伪指令语句的这些命令功能是由汇编程序在汇编源程序时,通过执行一段程序来完成的,而不是在运行目标程序时实现的。;;条件汇编伪指令;4.2 C语言程序设计;C编译器概述;4.3 调试时需要的五种文件;4.3.1 C语言文件文件或汇编语言文件;4.3.2 头文件;头文件部分寄存器和宏定义举例:
;
IMR .set 0004h ;中断屏蔽寄存器
IFR .set 0006h ;中断标志寄存器
;
DELAY_S .macro delay_value ;延时= 0.05μs ×延 时计数
RPT #delay_value
NOP
.endm
调用宏:
DELAY_S 0AC5H
;头文件F2407.h,在该文件中寄存器都以指针方式进行寻址。;4.3.3 命令文件;MEMORY
{
PAGE0:/*程序存储器*/
name1[(attr)]: origin=constant,length=constant;
……
namen[(attr)]: origin=constant,length=constant;
PAGE1:/*数据存储器*/
name1[(attr)]: origin=constant,length=constant;
……
namen[(attr)]: origin=constant,length=constant;
PAGE2:/*I/O空间*/
name1[(attr)]: origin=constant,length=constant;
……
namen[(attr)]: origin=constant,length=constant;
}
; SECTIONS
{
name:[property,property,property,…]
name:[property,property,property,…]
name:[property,property,property,…]
}
; 每一个以name开始的段的规格说明定义了一个输出段。在段名之后是特性列表,定义段的内容以及它们是怎样被分配的。
(1) 装载位置,规定段将被装载在存储器内何处。
(2) 运行位置,定义段将在存储器内何处运行。
(3) 输入段,定义组成输出段的输入段。
(4) 段类型,定义特定段类型的标志。
(5) 填充值,定义用于填充未初始化空位的数值。 ;命令文件举例-MEMORY伪指令和SECTION伪指令:
MEMORY
{
PAGE 0 :
VECS: origin =0000h , length = 0040h /* 程序复位*/
PVECS: origin = 0040h, length = 0F00h /* 外设中断向量*/
PM: origin = 1000h, length = 6000h
PM1: origin = 7000h, length = 1000h
PM2: origin =8000h , length = 800h /* 如果PON=1,则为SARAM*/
B0_PM: origin =0FF00h , length = 100h /* 如果CNF=1,则为DARAM B0块*/
PAGE 1 :
MMRS: origin = 0000h ,length = 0060h
B2: origin = 0060h ,length = 0020h /*DARAM B2 块*/
B0: origin = 0200h ,length = 0100h /*如果CNF=0则为DARAM B0 块*/
B1: origin = 0300h ,length = 0100h /* DARAM B1块*/
SARAM: origin = 0800h ,length = 0800h /* 如果DON=1则为SARAM*/
PERIPH: origin = 7000h ,le
文档评论(0)