本文主要是介绍ARM下汇编语言编程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、ARM汇编语言程序格式
ARM汇编语言是以段(section)为单位来组织源文件的。段是相对独立的、具有特定名称的、不可分割的指令或者数据序列。
段又可以分为代码段和数据段,代码段存放执行代码,数据段存放代码运行时需要用到的数据。一个ARM源程序至少需要一个代码段,大的程序可以包含多个代码段和数据段。
二、ARM汇编语言中常用的伪操作
例如:
area reset,code,readonly ;声明了一个名为reset的代码段code32 ;代表了后面的指令是ARM指令entry ;代表该段是程序的入口点
start ;标号mov r0, #1 ;r0 =1mov r1, #2 ;r1 = 2add r0, r0, r1 ;r0 = r0 + r1nop ;伪指令b start ;跳转回startend ;源文件结束
在汇编语言中分号代表注释
三、ARM汇编指令集
(1)指令分类
ARM指令集可以分为六大类
1、分别为数据处理指令(完成CPU内部的计算)
2. Load/Store指令(完成CPU与内存 IO外设之间的数据传输)
3.跳转指令 (完成程序的跳转)
4.程序状态寄存器处理指令(完成 CPSR的管理 )
5.协处理器指令(完成CPU扩展功能的实现)
6.异常产生指令(用户程序异常触发)
(2)指令格式中符号说明
(opcode){(cond〉}{S} 〈Rd〉,《Rn〉{,(operand2)}
opcode | 操作码;指令助记符,如LDR、STR等 |
cond | 可选的条件码;执行条件,如EQ、NE等 |
S | 可选后缀;若指定“S” 则根据指令执行结果更新CPSR中的条件码 |
Rd | 目标寄存器 |
Rn | 存放第1操作数的寄存器 |
Operand2 | 第2个操作数 |
(3)数据处理指令一分类
数据处理指令根据指令实现处理功能可分为以下六类:
1、数据传送指令
2、算术运算指令
3、逻辑运算指令
4、比较指令
5、测试指令
6、乘法指令
(4)数据处理指令
1、算术指令:ADD、ADC、SUB、SBC、RSB、RSC
2、位运算指令:AND、ORR、EOR、BIC
3、比较指令:CMP、CMN、TST、TEQ
4、数据搬移:MOV、MVN
上述指令只能对寄存器操作,不能针对存储器
这篇关于ARM下汇编语言编程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!