ARM指令集

格式:opcode{cond}{s} Rd, Rn, shifter_operand

opcode : 指令码

cond : 条件码 默认汇编指令是无条件执行的,使用条件码之后可以让汇编有条件的执行

s: 状态位 指令的执行结果会影响cpsr的NZCV位

Rd : 目标寄存器 运行的结果放到目标寄存器

Rn : 第一个操作寄存器,只能是一个寄存器

shifter_operand : 第二个操作数 1> 可以是一个普通的寄存器 2> 可以是一个立即数 3> 可以是经过移位操作的寄存器

1.基本的数据处理指令

数据搬移指令

opcode{cond}{s} Rd, shifter_operand
1. mov:将操作数搬移到寄存器中
2. mvn:将操作数按位取反后搬移到目标寄存器中

    mov r0,#0XFF  @将0XFF搬移到r0寄存器中
    mvn r1,#0XFF  @将0XFF按位取反结果存放到R1寄存器中

数据移位指令

格式:opcode{cond}{s} Rd, Rn, shifter_operand
lsl:左移运算 低位补0
lsr:右移运算  高位补0
ror:循环右移  低位移出的数据补到最高位

    mov r0,#0XFF
    lsl r1,r0,#4  @ 将r0的值左移4位结果放到r1中 R1==0XFF0
    lsr r2,r0,#4  @将r0的值右移4位结果放到r2中 R2==0XF
    ror r3,r0,#4   @ 将r0的值循环右移4位结果放到r3中 R3==0XF000000F

算数运算指令

格式:opcode{cond}{s} Rd, Rn, shifter_operand
1.add :进行加法运算
2.adc:进行加法运算的时候考虑到CPSR的c位    
3.sub:进行减法运算
4.sbc:进行减法运算时考虑到CPSR的C位
5.mul:乘法运算

位运算指令

格式:opcode{cond}{s}  Rd, Rn, shifter_operand

1. and:按位与  与0清0,与1不变
2. orr:按位或  或1置1 或0不变
3. eor:按位异或  相同为0 不同为1
4. bic:按位清0  想要哪一位设置为0,只需要将这一位用bic指令和相同位为1的数进行运算

比较指令

格式: opcode Rn, shifter_operand
opcode:比较指令的指令码是cmp
功能:将第一操作寄存器和第二操作数的值进行比较
本质:比较指令的本质就是拿进行比较的两个数值进行减法运算,并且减法运算的结果会影响到CPSR的条件位
我们可以根据条件位的数值进行两个数值的判断,再根据判断的结果做不同的操作
一般比较指令和条件码都是一起使用的

2.跳转指令

格式:opcode{cond} label
功能:跳转到指定的标签下

功能码:
1. b :跳转到指定的标签下,返回地址不保存
2. bl:跳转到指定的标签下,返回地址保存至 LR寄存器中

3.内存读写指令

指令码{条件码} 目标寄存器 [目标地址]
str r1,[r0]:将目标寄存器的数值写入到目标地址对应的内存中
ldr r1,[r0]:从目标地址中读取一个字的数据到目标寄存器中

写:
str:向指定的内存中写入一个字的数据
strh:向内存中写入半个字的数据
strb:向内存中写入一个字节的数据
读:
ldr:从内存中读取一个字的数据
ldrh:从内存中读取半个字的数据
ldrb:从内存中读取一个字节的数据

1.前索引
        mov r0,#0X40000000   
    mov r1,#0XFFFFFFFF
    STR R1,[R0,#8] @将r1的数值写入到0X40000000+8内存位置
    LDR R2,[R0,#8]@读取R0+8对应的地址内存中一个字的数据到R2中
2.后索引
        mov r0,#0X40000000   
    mov r1,#0XFFFFFFFF
    STR R1,[R0],#8 @将r1的数值写入到R0数值为首地址的内存位置
    @R0的数值+8
3.自动索引
        mov r0,#0X40000000   
    mov r1,#0XFFFFFFFF
    STR R1,[R0,#8]! @将r1的数值写入到R0+8数值为首地址的内存位置
    @R0d的数值+8

4.程序状态寄存器读写指令

读:
MRS Rd,CPSR:将CPSR寄存器的数值读取到目标寄存器中
写:
MSR cpsr,操作数:将操作数写道CPSR寄存器中

1.USER模式作为唯一的非特权模式,我们不可以直接修改CPSR的数值将模式切换为其他特权模式,为了保护系统
2.想要从USER模式切换到其他模式,需要特定的异常出现,才可以切换到对应的模式

5.软中断指令

swi 中断号
注意:
1.swi是软中断的指令码
2.中断号是系统中中断的标识,这里的中断号是一个由24位数据组成的一个立即数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值