ARM指令集--数据处理指令

数据处理指令:数学运算,逻辑运算

立即数

立即数的本质

就是包含在指令当中的数,属于指令的一部分

立即数的优点:取指的时候就可以将其读取到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个字节

相关推荐
brave and determined几秒前
可编程逻辑器件学习(day22):“让ARM穿上FPGA的马甲“:赛灵思Zynq的命名哲学与技术革命
arm开发·嵌入式硬件·fpga开发·zynq·fpga设计·嵌入式设计·fpga开发流程
wa的一声哭了1 天前
Linux服务器配置ssh免密登陆多台服务器、服务器别名配置
linux·运维·服务器·网络·arm开发·python·ssh
蓁蓁啊1 天前
ARM交叉编译中编译与链接参数不一致导致的问题
开发语言·arm开发·嵌入式硬件
青柚~2 天前
【鲲鹏服务器麒麟系统arm架构部署docker】
服务器·arm开发·docker·架构
应用市场2 天前
ARM编译器深度解析:从Keil到VSCode的STM32开发之
arm开发·vscode·stm32
代码AI弗森2 天前
为什么 AI 推理天然更偏向 ARM(而不是 x86)
arm开发·人工智能
亿道电子Emdoor3 天前
【Arm】Encountered an improper argument
arm开发·stm32·单片机
GilgameshJSS3 天前
STM32H743-ARM例程43-SD_IAP_FPGA
arm开发·stm32·fpga开发
XINVRY-FPGA3 天前
XC95288XL-10TQG144I Xilinx AMD CPLD
arm开发·单片机·嵌入式硬件·mcu·fpga开发·硬件工程·fpga
瑞禧生物ruixibio4 天前
5-脱氧-5-甲硫腺苷标记生物素,5-MTA-Biotin,Biotin-5-脱氧-5-甲硫腺苷,5-MTA-生物素复合物
arm开发