




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、寻址方式 立即寻址SUBS R0,R0,#1;R0 - 1 - R0MOV R0,#0 xFF00;0 xFF00 - R0 寄存器偏移寻址MOV R0,R2,LSL #3;R2的值左移3位,结果放入R0,即R0=R2*8第1页/共29页 寄存器间接寻址LDR R1,R2;将R2中的数值作为地址,取出此地址中的数据保存在R1中 基址寻址Immediate Offset、Register Offset Scaled Register OffsetLDR R2,R3,#0 x0F;将R3中的数值加0 x0F作为地址,取出此地址的数值保存在R2中第2页/共29页 多寄存器寻址LDMIA R1!,R2
2、-R7,R12;将R1单元中的数据读出到R2-R7,R12,R1自动加1 堆栈寻址STMFD SP!,R1-R7,LR;将R1-R7,LR入栈。满递减堆栈第3页/共29页 块拷贝寻址STMIB R0!,R1-R7;将R1-R7的数据保存到存储器中,存储器指针在保存第一个值之前增加,增加方向为向上增长 相对寻址BL ROUTE1;调用到ROUTE1子程序BEQ LOOP;条件跳转到LOOP标号处.LOOP MOV R2,#2.ROUTE1.第4页/共29页指令格式 基本格式数据处理类 S ,内存访问类: BT ,内的项是必须的内的项是可选的opcode指令助记符,如LDR,STR等cond 执行
3、条件,如EQ,NE等S 是否影响CPSR寄存器的值Rd目标寄存器Rn第一个操作数的寄存器operand2 第二个操作数第5页/共29页第6页/共29页 第二个操作数 #immed_8r常数表达式,必须是一个8位常数的偶数次循环移位合法常量:0 x3FC、0、0 xF0000000、200、0 xF0000001非法常量:0 x1FE、511、0 xFFFF、0 x1010、0 xF0000010AND R1,R2,#0 x0F;R2与0 x0F,结果保存在R1LDR R0,R1,#-4;读取R1地址上的存储器单元内容,且R1=R1-4第7页/共29页 Rm 寄存器方式,操作数位寄存器的数值SU
4、B R1,R1,R2;R1-R2-R1MOV PC,R0;PC=R0,程序跳转到制定地址LDR R0,R1,-R2;读取R1地址上的存储器单元内容并存入R0,且R1=R1-R2 Rm,shift寄存器移位方式,将寄存器的移位结果作为操作数,但Rm值保持不变第8页/共29页形式1:type #n其中type 为 ASR(算术右移) 、LSL(逻辑左移)、 ROR(循环右移)、 RRX (带扩展的循环右移1位)中的一种ADD R1,R1,R1,LSL #3;R1=R1*8形式2:type Rs 其中type ASR(算术右移) 、LSL(逻辑左移)、 ROR(循环右移) 中的一种;Rs是偏移量寄存
5、器,低8位有效,若其值大于或等于32则第二个操作数的结果为0(ASR,ROR例外)第9页/共29页ARM汇编程序设计 文件格式汇编文件 *.s引入文件 *.INCC程序 *.C头文件 *.H 汇编语句格式标号 ;注释标号顶格写,指令不可顶格书写标号后没有:程序中可以有空行分行用 (用于比较长的语句)第10页/共29页 常量 数字常量十进制 12,5,876,0十六进制 0 xFF,0 x1N进制 n-XXX,2-010111 字符常量 布尔常量第11页/共29页 段定义AREA Hello,CODE,READONLYENTRYSTART MOV R7,#10MOV R6,#5ADD R6,R6
6、,R7BEND 第12页/共29页ARM汇编伪指令 在 ARM 汇编语言程序里,有一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,也就是不会生成机器码,仅仅是在编译器软件中起着格式化的作用,通常称这些特殊指令助记符为伪指令。伪指令在源程序中的作用是为完成汇编程序作各种准备工作的,这些伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成。 在 ARM 的汇编程序中,有如下几种伪指令:数据常量定义伪指令、数据变量定义伪指令、内存分配伪指令及其他伪指令。第13页/共29页数据常量定义伪指令 数据常量定义伪指令EQU用于为程序中的常量、标号等定义一个等效的字符名称,类
7、似于 C 语言中的#define 。 EQU语法格式 : 名称 EQU 表达式 ,类型 ;其中 EQU 可用 “ * ” 代替。 名称为 EQU 伪指令定义的字符名称,当表达式为 32 位的常量时,可以指定表达式的数据类型,可以有以下三种类型: CODE16 、 CODE32 和 DATA 。 第14页/共29页数据变量定义伪指令(Cont.) 数据变量定义伪指令用于定义ARM汇编程序中的变量、对变量赋值以及定义寄存器的别名等操作。常见的数据变量定义伪指令有如下几种: (1)GBLA、GBLL 和GBLS 语法格式:GBLA ( GBLL 或 GBLS ) 全局变量名 GBLA 、 GBLL
8、和 GBLS 伪指令用于定义全局变量,并将其初始化。其中: GBLA用于定义一个全局的数字变量,并初始化为 0 ; GBLL用于定义一个全局的逻辑变量,并初始化F(假); GBLS用于定义一个全局的字符串变量,并初始化为空;第15页/共29页数据变量定义伪指令(Cont.) (2)LCLA、LCLL 和LCLS 语法格式: LCLA ( LCLL 或 LCLS ) 局部变量名 LCLA 、 LCLL 和 LCLS 伪指令用于定义一个 ARM 程序中的局部变量,并将其初始化。其中: LCLA伪指令用于定义一个局部的数字变量,并初始化为 0 ; LCLL伪指令用于定义一个局部的逻辑变量,并初始化为
9、 F(假); LCLS 伪指令用于定义一个局部的字符串变量,并初始化为空;第16页/共29页数据变量定义伪指令(Cont.) (3)SETA、SETL 和SETS 语法格式:变量名 SETA ( SETL 或 SETS ) 表达式 伪指令 SETA 、 SETL 、 SETS 用于给一个已经定义的全局变量或局部变量赋值。 SETA 伪指令用于给一个数学变量赋值; SETL 伪指令用于给一个逻辑变量赋值; SETS 伪指令用于给一个字符串变量赋值;第17页/共29页数据变量定义伪指令(Cont.) (4)RLIST 语法格式:名称 RLIST 寄存器列表 RLIST 伪指令可用于对一个通用寄存器
10、列表定义名称,使用该伪指令定义的名称可在 ARM 指令 LDM/STM 中使用。在 LDM/STM 指令中,列表中的寄存器访问次序为根据寄存器的编号由低到高,而与列表中的寄存器排列次序无关。 第18页/共29页3 内存分配伪指令 内存分配伪指令一般用于为特定的数据分配存储单元,同时可完成已分配存储单元的初始化。常见的数据定义伪指令有如下几种: (1)DCB 语法格式: 标号 DCB 表达式 (2) DCW(或DCWU) 语法格式: 标号 DCW (或 DCWU ) 表达式 第19页/共29页3 内存分配伪指令(Cont.) (3)DCD(或DCDU) 语法格式: 标号 DCD (或 DCDU
11、) 表达式 (4)DCFD(或DCFDU) 语法格式: 标号 DCFD (或 DCFDU ) 表达式 (5)DCFS(或DCFSU) 语法格式: 标号 DCFS (或 DCFSU ) 表达式第20页/共29页3 内存分配伪指令(Cont.) (6)DCQ(或DCQU) 语法格式: 标号 DCQ (或 DCQU ) 表达式 (7) SPACE 语法格式: 标号 SPACE 表达式 (8)MAP 语法格式: MAP 表达式 ,基址寄存器 (9)FILED 语法格式:标号 FIELD 表达式第21页/共29页4 汇编控制伪指令 汇编控制伪指令用于控制汇编程序的执行流程,常用的汇编控制伪指令包括以下几
12、条: (1) IF、ELSE、ENDIF 语法格式: IF 逻辑表达式 指令序列 1 ELSE 指令序列 2 ENDIF 第22页/共29页汇编控制伪指令(Cont.) (2) WHILE、WEND 语法格式: WHILE 逻辑表达式 指令序列 WEND (3) MEXIT 语法格式: MEXIT MEXIT 用于从宏定义中跳转出去。第23页/共29页4 汇编控制伪指令(Cont.) (4) MACRO、MEND 语法格式: MACRO $ 标号 宏名 $ 参数 1 , $ 参数 2 , 指令序列 MEND MACRO、MEND伪指令可以将一段代码定义为一个整体,然后就可以在程序中通过宏指令多
13、次调用该段代码。 第24页/共29页2008年10月23日南京大学计算机系25子程序结果返回规则 子程序中结果返回的规则如下: 结果为一个32位整数时,可以通过寄存器R0返回; 结果为一个64位整数时,可以通过寄存器R0和Rl返回; 结果为一个浮点数时,可以通过浮点运算部件的寄存器f0、d0或s0来返回; 结果为复合型浮点数(如复数)时,可以通过寄存器f0fn或d0dn来返回; 对于位数更多的结果,需要通过内存来传递。第25页/共29页2008年10月23日南京大学计算机系26ARM编译器保有的特定关键字 ARM编译器支持一些对ANSI C进行扩展的关键词。这些关键词用于声明变量、声明函数、对特定的数据类型进行一定的限制。第26页/共29页2008年10月23日南京大学计算机系27用于声明函数的关键词(双下划线起头) _asm,内嵌汇编 _inline,内联展开 _irq,声明IRQ或FIQ的ISR _pure,函数不修改该函数之外的数据
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗差错分析与防范对策
- 医疗行业中的区块链技术选举透明化的新路径
- 医疗数据挖掘与健康预测模型研究
- 儿童获得性免疫缺陷综合征的临床护理
- 医疗创新引领下的智能办公设备设计思考
- 考研心得体会模版
- 范稿模板15财务部出纳年度个人工作总结模版(修改)
- epc提供合同范例
- 个人车库互换合同范例
- 学校开展世界无烟日的活动总结模版
- 任务一淘米(教学课件)一年级下册劳动技术(人美版)
- 顶管机租凭合同协议
- 2025年湖南中考英命题分析及复习备考策略指导课件
- 四年级下册英语竞赛试题
- 湖北省武汉市2025届高中毕业生四月调研考试语文试卷及答案(武汉四调)
- 4.1.2-元素周期表-课件 高一上学期化学人教版(2019)必修第一册
- 中华人民共和国能源法
- GB-T 1040.2-2022 塑料 拉伸性能的测定 第2部分:模塑和挤塑塑料的试验条件
- 广东开放大学计算机应用技术(互联网营销)专业毕业设计0
- 数学中考复习:一次函数与反比例函数综合课件
- 2022年《科学》新课标《义务教育科学课程标准(2022年版)》全文学习2022年新版义务教育科学课程标准(2022年版)课件
评论
0/150
提交评论