ARM指令之MOV指令汇编与机器码的对应关系
指令条件码
条件码就是一种简单的测试ALU状态标志位的方法。
mov指令机器码
比如:
mov r1,#3
立即数:3
第一个操作数:寄存器1
S:0 (注意:mov指令后面加主机符为s时S位为1)
指令操作数:0011101,这是mov指令特有的
条件码:1110,无条件执行
所以它的指令机器码就是:1110 0011 1010 0000 0001 0000 0000 0011
看一下keil编译的结果:(这里是16进制)E3A01003
有效立即数
立即数:在汇编指令中操作数是一个小于等于32bit的数,该数即为立即数。
合法立即数:该32位的立即数中最多只有8bit位的有效位,其他位是0的立即数。
@---mov 合法立即数---
mov r0,#0xFF
@mov r1,#0x1FF @ 有效位9位所以报错
mov r2,#0x003AC0000 @ 32位中有效位最多8位
mov r3,#0xF000000F @ 该数有连续24位0所以有效
@mov r4,#0xF00F0000 @ 这个没有连续24个0所以报错
mov r5,#0xFFFFFFFF @ 这是一个特殊的合法立即数
mov r5,#0xFFFFFFFD @ 也是合法的
mov r5,#0xFFFFFF00 @ 特殊值:最多连续8位0,而且其他位必须都不是0,而且这8个0必须连续
mov r6,#0xFFFF00FF @ 连续8位0所以合法
@mov r7,#0xFFF0F0FF @ 这就不合法
总结: 要不有有效位连续8位,要不连续24位0,要不是特殊值,满足其一即为有效立即数。
为什么mov指令只能将合法立即数装载到通用寄存器?
上面机器码对应关系可以看到,只有12bit位存放立即数,
而且这12bit被分为了两部分,存放立即数的位数只有0-7bit,8-11bit存放轮换规则,
如果这个立即数不合法,将会造成机器码错位。
所以mov指令存放的数必须是合法的。
轮换规则
轮换规则:决定了立即数的样式
a-h表示8个有效位。
此时12bit的立即数就是 4位轮换规则+8位的有效位。
最后会根据轮换规则还原出的具体数。
ARM指令之MOV指令汇编与机器码的对应关系相关推荐
- LDR伪指令和LDR指令及MOV指令的区别
1.前言 ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令. 2.LDR指令 就是将地址中的值存放到寄存器中 比如想把数据从内存中某处读取到寄存器中 ...
- LEA指令与MOV指令区别
Tips: LEA指令与MOV指令的区别: ① MOV指令是 数据 传送指令-------传送数据 LEA指令是 有效地址 传送指令-------取偏移地址 ② MOV OPRD1 ...
- ARM中的MOV指令
ARM中的MOV指令格式是这样的 op2是占了12位,其中bit11-bit8是移位数(rotate),bit7-0是一个8位的立即数(imm),MOV Rn, op2,执行之后,Rn=op2 > ...
- 汇编 lea指令和mov指令
lea指令 load effective address, 加载有效地址,可以将有效地址传送到指定的的寄存器.指令形式是从存储器读数据到寄存器, 效果是将存储器的有效地址写入到目的操作数, 简单说, ...
- 汇编lea 指令与 mov 指令
比如你用local在栈上定义了一个局部变量LocalVar,你知道实际的指令是什么么?一般都差不多像下面的样子: push ebp mov esp, ebp sub ...
- 2020-12-4((ARM汇编)mov指令,LDR指令,LDR伪指令)
首先说明一下 ARM是RISC("reduced instruction set computer",即"精简指令集计算机")结构 x86是CISC(" ...
- 【ARM】数据操作指令(上)
00. 目录 文章目录 00. 目录 01. 数据操作指令概述 02. MOV指令 03. MVN指令 04. AND指令 05. EOR 指令 06. SUB指令 07. RSB 指令 08. AD ...
- MOV指令在32位汇编程序和64位汇编程序下的相同与不同之处
mov指令原则 两个操作数(目标操作数和源操作数)的大小必须相同 两个操作数不能同时为内存操作数(也就是不能内存 到 内存) 指令指针寄存器不能作为目标操作数 64位汇编程序下 32位汇编程序和 ...
- 8086汇编语言寻址方式、基本指令和调试指令
一.80x86/Pentium 各种寻址方式 1.立即寻址 立即寻址方式下,操作数作为立即数直接包含在指令中,紧跟在操作码之后与其一起 存放在代码段区域.因此,立即数总是和操作码一起被存入 CPU 的 ...
最新文章
- 管理Exchange服务器
- java冒泡排序找最大的值_(13)數組操作:遍歷、輸出最大值、冒泡排序、選擇排序,java已有的排序方法、折半查找...
- React开发(147):开发注意
- React开发(132):ant design学习指南之form中控制展开和关闭逻辑
- 杨辉再发声明:承认听取付向东报告后受其“鼓舞”,为没及时沟通向其致歉...
- prism项目搭建 wpf_Prism 源码解读1-Bootstrapper和Region的创建
- 个人所得税如何填写最划算?
- 华为双前置摄像头_双录—华为手机前置摄像头双录画质提升办法
- CAD 开发 图案填充
- 计算机tcpip协议主要功能,tcp协议的主要功能
- 论文解读笔记:基于深度学习的行为分析综述
- 控制系统 丢包 matlab 程序,基于MATLAB的网络控制系统仿真.pdf
- 电路中各种地的区别及处理
- M5stack StickCplus ESP32物联网开发板初体验
- 在内网使用DBL落地网关,连接公网的freeswitch
- 3. Proxmox VE 配置 NTP
- MSP430F5529之捕获模式下的HCSR04超声测距(粗略)
- ES6中Set方法实现数组去重
- 【浅谈】main函数的三个参数
- 【原创】c#如何实现RTU远程数据采集功能及RTU在水利工程中的运用
热门文章
- 如果我要用Python偷表情包
- 基础篇 —— 树莓派换源
- 6.1 Burp Suite漏洞扫描使用
- python图片修改过、有原图、怎么得到改动的地方_Python + opencv对拍照得到的图片进行背景去除的实现方法...
- Week8 作业——B - 猫猫向前冲
- 教你如何调用百度编辑器ueditor的上传图片、上传文件等模块
- ECS_搭建个人Leanote云笔记本
- CSS如何画一个三角形?
- 现代语音信号处理-胡航(part 1 - 语音信号处理主要研究内容)
- linux ctags目录在哪里,Ctags的基本操作总结