数据处理指令:数学运算,逻辑运算
立即数
立即数的本质
就是包含在指令当中的数,属于指令的一部分
立即数的优点:取指的时候就可以将其读取到CPU,不用单独去内存读取,速度快
立即数的缺点:不能是任意的32位的数字,有局限性
MOV R0,#0x12345678 无法执行
MOV RO, #0x12 可以执行
MVN 机器码为 E3E开头
MOV 机器码为 E3A开头
特殊的MOV R0,0xFFFFFFFF 等价于 MVN R0 ,0x00000000
数据运算指令的格式
《操作码》《目标寄存器》《第一操作寄存器》《第二操作数》
操作码: 表示执行哪种操作
目标寄存器: 用于存储运算的结果
操作寄存器: 存储第一个参与运算的数据 (只能写寄存器)
第二操作数: 第二个参与运算的数据(可以是寄存器也可以是立即数)
加法指令
乘法指令只能是两个寄存器相乘,不能用立即数
位清零指令 BIC指令
例,把R2的后四位清0,放入寄存器R1中。因为0xF后四位为1
第二操作位的哪一位为1,就将第一操作寄存器的哪一位清零,然后将结果放入到目标寄存器内
数据指令的扩展
数据运算指令对条件位 (N、Z、C、V)的影响默认情况下数据运算不会对条件位产生影响,
当在指令后加后缀"s"后可以影响。
两个64位的数据做加法运算
改善后:
C为CPSR中的条件代码值
减法运算
一个字节(byte)由8个二进制位(bite)组成
1个十六进制数对应4位二进制数
2个十六进制数对应1个字节