汇编基础(一)

汇编是把机器码变成我们所认识的语言,并且一条汇编语句对应一条处理器能够识别的指令。
一、汇编(汇编不区分大小写)
在这里插入图片描述
ARM 指令格式
<操作码> <目标寄存器> <第一操作寄存器> <第二操作数>
在这里插入图片描述

汇编的arm指令分为六大类:
1)数据处理指令: 数学运算(加减乘除)、逻辑运算(&|~)
2)跳转指令 :实现程序的跳转,本质是修改PC的值
3)load/srore指令:访问(读写)内存
4)状态寄存器传送指令:访问(读写)CPSR寄存器
5)软中断指令 :实现软中断
6)协处理器指令: 控制协处理器的指令
(一)、
数据处理指令:
1、数据搬移指令
1)mov:
用法:把数据搬移到寄存器里面或者把一个寄存器里面的数据搬移到另一个寄存器
@ mov 后面只能跟一个立即数,因为一条汇编只能对应一条32位的指令,而mov R1,#0x后面跟的数据才占两个字节即八位理论上是0~256@三个字节位mov 俩个三个字节为R1
在这里插入图片描述
@E3A000012为对应的32汇编机器码,其中E3A代表mov 000代表R0 12表示0x 12
2)MVN
用法=MOV 的数据取反 即mov R1 ,#0xfffffff((当然这会报错,后面是立即数但其实它不会报错,因为处理器会把0xfffffff转换成 mvn R1,#0X00000000)所以0xfffffff也是一个立即数)mov R1,#0XFFFFFFFF = MVN R1 ,#0X0000000
3)ADD 加法指令
用法:ADD , R1 , R2 ,R3
@R1 = R2 + R3 @可以俩个寄存器的值相加 也可以寄存器的值和数相加(且数值必须放在后面),不可以俩个数值相加
ADD R1 , #5 , #5
ADD R1 , #5 , R2 @@这俩种写法是不被允许的
4)SUB 减法指令
SUB R1 , R2,#5(R3)
@ R1 = R2 - 5(R3)
由于被减数只能放第一操作寄存器,当我们寄存器要做减数时SUB R1 , #5 , R2 不符合汇编写法故引入
逆向减法指令:
RSB
@ SUB R1 , R2 , R3 =RSB R1 , R3 , R2
@J减速与被减数的位置不一样
5)乘法指令
MUL :乘法指令只能俩个寄存器相乘不能引入立即数
@ MUL R1 , R2 , R3
@不允许 MUL R1 ,R2 ,#5
(二)、逻辑运算指令
1)按位于指令
AND R1 , R2 , R3(#5)
@ R1 = R2 & R3(#5)
2)按位或指令
ORR R1 , R2 ,R3 (#5)
@ R1 = R2 | R3(#5)
3)按位异或指令
EOR R1 , R2 , R3
@R1 = R2 ^ R3
4) 左移指令
LSL R1 , R2 , R3(#5)
@ R1 = R2 >> R3(#5) R1 等于R2 的值左移R3(5)位
5)右移指令
LSR R1 , R2 , 3
@R1 = R2 << R3(#5) 右移5位 EG: 11101110右移五位等于11011101
6)位清零指令
BIC R1 , R2 , R3(#5)
@ R3 哪几位位1 则 把R2的哪几位变成 0 然后放到R1.R2 R3的值不会改变 EG:R2=00000110
R3=111110010
那么R1=00000100

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值