- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 ARM系统硬件设计基础67223.ppt
第 4 章 ARM系统硬件设计基础 4.2.2 ARM汇编语言的基本结构 ★在ARM汇编语言程序中,以程序段为单位来组织代码。 ★段是相对独立的指令或数据序列,具有特定的名称。 ★段可以分为代码段和数据段,代码段的内容为执行代码,数据段存放代码运行时所需的数据。 ★可执行映像文件通常由以下几部分构成: 一个或多个代码段,代码段为只读属性。 零个或多个包含初始化数据的数据段,数据段的属性为 可读写。 零个或多个不包含初始化数据的数据段,数据段的属性为可读写。 4.2.3 ARM汇编语言支持的伪指令 汇编语言的伪指令分为符号定义,数据定义, 汇编控制,宏指令以及其他的伪指令 一、其他的伪指令 1、AREA 定义一个代码段或数据段 格式:AREA 段名称 段属性 段属性:CODE(代码段),DATA(数据 段),READONLY(只读),READWRITE(可读可写) 例:AREA Init,CODE,READONLY 4.2.3 ARM汇编语言伪指令(续) 2、ENTRY 指定汇编程序的入口点 3、END 指定汇编程序的结尾 4、CODE16/CODE32 通知编译器,其后的指令为16位的thumb指令或是32位的arm指令。 5、ALIGN 当前位置的对齐方式 例:ALIGN =2 6、LDR,用32位常量或一个地址加载寄存器。 句法:LDR {cond} register,=32位数据或地址 例:LDR R0,=0XFFFFFFFF LDR R1,=LABEL(符号地址) 例: GET option.s GET memcfg.s GET 2410addr.s …….. AREA Init,CODE,READONLY ;定义代码段 ENTRY b ResetHandler … ResetHandler LDR R0, =WTCON 禁止看门狗 LDR R1, =0x0 STR R1, [R0] LDR R0, =INTMSK ;禁止所有中断 LDR R1, =0xFFFFFFFF STR R1, [R0] ……. AREA Ramdata ,DATA,READWRITE ,ALIGN=2 ;定义数据段 ^ _ISR_STARTADDRESS HandleReset #4 ……. END 4.2.3 ARM汇编语言支持的伪指令(续) 二、符号定义伪指令 定义汇编程序中使用的变量,并对变量赋值 1、GBLA/GBLL/GBLS:分别用于定于全局的数值变量、逻辑变量和字符串变量 2、LCLA/LCALL/LCLS:分别用于定于局部的数字变量、逻辑变量和字符串变量 3、SETA/SETL/SETS:分别用于数据、逻辑、字符串变量的赋值 4.2.3 ARM汇编语言支持的伪指令(续)二、符号定义伪指令(续) 例: GBLL AAA ;定义全局逻辑变量 AAA SETL {TRUE} ;全局逻辑变量赋值 GBLA BBB BBB SETA 16 GBLL THUMBCODE THUMBCODE SETL {TRUE} 4.2.3 ARM汇编语言支持的伪指令(续)三、数据定义伪指令 一般用于为特定的数据分配存储空间,同时可完成存储空间的初始化 1、SPACE 分配一段连续的存储空间,并初始化为0,也可用%代替。 例:data space 100 4.2.3 ARM汇编语言支持的伪指令(续)三、数据定义伪指令(续) 2、MAP,FIELD MAP:定义一个结构化的内存表首地址,可用^代替 FIELD:定义一个结构化内存表的数据域,可用#代替 例: MAP 0X1000 ;定义结构化内存表首地址为0X1000 FIR FIELD 16 ;定义FIR长度为16字节,位置为0X1000 SEC FIELD 32 THR FIELD 256 4.2.3 ARM汇编语言支持的伪指令(续)三、数据定义伪指令(续) 3、存储器单元分配 DCB\DCW\DCD 分
文档评论(0)