一、汇编中三种符号(汇编指令、伪指令、伪操作)
二、汇编基本格式
三、数据操作指令
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 >> 4lsr 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,=0x3ldr r1,=0xffffffffldr r2,=0x4ldr r3,=0x1adds 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位相加r5ldr r0,=0x7ldr r1,=0x4ldr r2,=0x4ldr r3,=0x5subs 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
① 条件指令
② 示例
四、跳转指令
① 练习
五、特殊功能寄存器操作指令