一、汇编中三种符号(汇编指令、伪指令、伪操作)
二、汇编基本格式
三、数据操作指令
3.1 数据搬移指令mov/mvn
① 示例
② 立即数
0xff000000 =====>判断的数
1111 1111 0000 0000 0000 0000 0000 0000 =====>判断的数
0000 0000 0000 0000 0000 0000 1111 1111 =====>找到0xff这个数 =====> 循环右移8位
0xf0000000 =====>判断的数
1111 0000 0000 0000 0000 0000 0000 0000 =====>判断的数
0000 0000 0000 0000 0000 0000 0000 1111 =====>找到0xf这个数 =====> 循环右移4位
0xf000000f =====>判断的数
1111 0000 0000 0000 0000 0000 0000 1111 =====>判断的数
0000 0000 0000 0000 0000 0000 1111 1111 =====>找到0xff这个数 =====> 循环右移4位
0x1FE00000=====>判断的数
0001 1111 1110 0000 0000 0000 0000 0000 =====>判断的数
0000 0000 0000 0000 0000 0000 1111 1111 =====>找到0xff这个数 =====> 循环右移11位
0x1F800000=====>判断的数
0001 1111 1000 0000 0000 0000 0000 0000 =====>判断的数
0000 0000 0000 0000 0000 0000 0111 1110 =====>找到0x7E这个数 =====> 循环右移10位
3.2 移位操作指令lsl/lsr/asr/ror
示例
mov r0,#0xff
@ 1.将r0寄存器中的值,逻辑左移4位,赋值给目标寄存器r1,值
lsl r1,r0,#0x4 @ r1 = r0 << 4 = 0xff0
@ 0000 0000 0000 0000 0000 0000 1111 1111
@ 0000 0000 0000 0000 0000 1111 1111 0000
@ 2.将r1寄存器中的值,逻辑右移4位,赋值给目标寄存器r2,值 r2 = r1 >> 4
lsr r2,r1,#0x4 @ r2 = r1 >> 4 = 0xff
@ 0000 0000 0000 0000 0000 1111 1111 0000
@ 0000 0000 0000 0000 0000 0000 1111 1111
@ 3.将r2寄存器中的值,循环右移4位,赋值给目标寄存器r3,值
ror r3,r2,#0x4 @ r3 = 0xf000000f
@ 0000 0000 0000 0000 0000 0000 1111 1111
@ 1111 0000 0000 0000 0000 0000 0000 1111
ldr r4,=0x800000ff
@ 4.将r4寄存器中的值,算数右移4位,赋值给目标寄存器r5,值
asr r5,r4,#0x4 @ r5 = 0xf800000f
@ 1000 0000 0000 0000 0000 0000 1111 1111
@ 1111 1000 0000 0000 0000 0000 0000 1111
3.3 位运算操作指令and/orr/eor/bic
① 示例1
② 示例2
3.4 算数运算操作指令add/adc/sub/sbc/mul
① 实现两个64位数相加
@第一个64位数:高32位用r0表示0x3 低32位用r1表示0xffffffff
@第二个64位数:高32位用r2表示0x4 低32位用r3表示0x1
@实现两个64位数相加:高32位相加r4,低32位相加r5
ldr r0,=0x3
ldr r1,=0xffffffff
ldr r2,=0x4
ldr r3,=0x1
adds r5,r1,r3 @ r5 = r1 + r3 = 0xffffffff + 0x1 = 0x0 ===> add 影响CPSR寄存器的C位
adc r4,r0,r2 @ r4 = r0 + r2 = 0x3 + 0x4 + C = 0x8 ===> adc
② 实现两个64位数相减
@第一个64位数:高32位用r0表示0x7 低32位用r1表示0x4
@第二个64位数:高32位用r2表示0x4 低32位用r3表示0x5
@实现两个64位数相减法:高32位相加r4,低32位相加r5
ldr r0,=0x7
ldr r1,=0x4
ldr r2,=0x4
ldr r3,=0x5
subs r5,r1,r3 @ r5 = r1 - r3 = 0x4 - 0x5 = 0xffffffff ===> sub 影响CPSR寄存器的C位
sbc r4,r0,r2 @ r4 = r0 - r2 = 0x7 - 0x4 - !C = 0x2 ===> sbc
③ 乘法指令
3.5 比较指令cmp
① 条件指令
② 示例
四、跳转指令
① 练习
五、特殊功能寄存器操作指令