嵌入式系统与应用chapter06汇编语言程序设计.ppt

嵌入式系统与应用chapter06汇编语言程序设计.ppt

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式系统与应用chapter06汇编语言程序设计

ARM伪指令 伪指令不像机器指令那样在处理器运行期间由机器执行,而是在汇编时会被合适的机器指令代替,实现真正机器指令操作; 地址读取伪指令 ADR伪指令 小范围的地址读取伪指令.ADR 指令将基于 PC 相对偏移的地址值读取到寄存器中. 在汇编编译源程序时,ADR伪指令被编译器替换成一条合适的指令.通常,编译器用一条ADD指令或SUB指令来实现该ADR伪指令的功能; 指令格式: ADR{cond} register,exper 地址读取伪指令 ADRL伪指令 中等范围的地址读取伪指令.ADRL 指令将基于 PC 相对偏移的地址值或基于寄存器 相对偏移的地址值读取到寄存器中,比 ADR 伪指令可以读取更大范围的地址。在汇编编译源程序时,ADRL 伪指令被编译器替换成两个条合适的指令。 指令格式 ADRL{cond} register,exper 地址读取伪指令 LDR伪指令 大范围的地址读取伪指令.LDR 伪指令用于加载 32 位的立即数或一个地址值到指定 寄存器. 指令格式 LDR{cond}register,=expr/label_expr 举例 LDR R0,=0x123456 LDR R0,=DATA_BUFFER+0x10 ... LTORG NOP伪指令 空操作伪指令,无操作,用于实现延时; 举例 变量定义伪指令 全局变量声明 GBLA variable:全局数值变量 GBLL variable:全局逻辑变量 GBLS variable:全局字符串变量 局部变量声明 LBLA variable:局部数值变量 LBLL variable:局部逻辑变量 LBLS variable:局部字符串变量 变量赋值伪指令 给变量复制: SETA 伪指令用于给一个全局/局部的算术变量赋值. SETL 伪指令用于给一个全局/局部的逻辑变量赋值. SETS 伪指令用于给一个全局/局部的字符串变量赋值. 变量定义/赋值伪指令举例 GBLL CodeDbg CodeDbg SETL {TRUE} ... GBLA ByteNo ByteNo SETA 8 ... GBLS ErrStr ErrStr SETS No semaphone. RLIST伪指令 RLIST 为一个通用寄存器列表定义名称: name RLIST {reglist} 举例: LoReg RLIST {R0-R7} 数据定义伪指令 数据定义伪指令用于数据表定义,文字池定义,数据空间分配等: 声明一个文字池:LTORG 分配一块内存空间,并用0初始化:SPACE 分配一段字节的内存单元,并用指定的数据初始化:DCB 分配一段字的内存单元,并用指令的数据初始化:DCD 和 DCDU LTORG伪指令 LTORG 用于声明一个文字池(literal-pool),在使用 LDR 伪指令时,要在适当的地址加入 LTORG 声明 文字池,这样就会把要加载的数据保存在文字池内,再用 ARM 的加载指令读出数据: LTORG 举例: LDR R0,=0 ADD R1,R1,R0 MOV PC,LR LTORG SPACE伪指令 SPACE 用于分配一块内存单元,并用 0 初始化.%与 SPACE 同义: {label} SPACE expr 举例: DataBuf SPACE 1000 ;分配1000字节 DCB伪指令 DCB 用于分配一段字节内存单元,并用伪指令中的 expr 初始化.一般可用来定义数 据表格,或文字符串.=与 DCB 同义: {label} DCB expr{,expr}{,expr}... 举例: DISPTAB DCB 0x33,0x43,0x53 DCB 0x10,0x20,0x30 ERRSTR DCB Send data error.,0 DCD伪指令 DCD用于分配一段字内存单元,并用伪指令中的expr初始化. 与 DCD 同义: {label} DCD expr{,expr}{,expr}? 举例: Vectors LDR PC,ResetAddr LDR PC,UndefinedAddr ResetAddr DCD Reset UndefinedAddr DCD Undefined Reset ... 汇编控制伪指令 汇编控制伪指令用于条件汇编,宏定义,重复汇编控制等: 条件汇编控制: IF,ELSE 和 ENDIF 宏定义: MACRO 和 MEND 重复汇编: WHILE 及 WEND IF、ELSE和ENDIF伪指令 IF,ELSE和ENDIF 伪指令能够根据条件把一段代码包括在汇编程序内或将其排除

文档评论(0)

jgx3536 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档