指令条件码

条件码就是一种简单的测试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指令汇编与机器码的对应关系相关推荐

  1. LDR伪指令和LDR指令及MOV指令的区别

    1.前言 ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令. 2.LDR指令 就是将地址中的值存放到寄存器中 比如想把数据从内存中某处读取到寄存器中 ...

  2. LEA指令与MOV指令区别

    Tips: LEA指令与MOV指令的区别: ① MOV指令是 数据        传送指令-------传送数据 LEA指令是   有效地址 传送指令-------取偏移地址 ② MOV OPRD1 ...

  3. ARM中的MOV指令

    ARM中的MOV指令格式是这样的 op2是占了12位,其中bit11-bit8是移位数(rotate),bit7-0是一个8位的立即数(imm),MOV Rn, op2,执行之后,Rn=op2 > ...

  4. 汇编 lea指令和mov指令

    lea指令 load effective address, 加载有效地址,可以将有效地址传送到指定的的寄存器.指令形式是从存储器读数据到寄存器, 效果是将存储器的有效地址写入到目的操作数, 简单说, ...

  5. 汇编lea 指令与 mov 指令

    比如你用local在栈上定义了一个局部变量LocalVar,你知道实际的指令是什么么?一般都差不多像下面的样子:     push   ebp     mov   esp,   ebp     sub ...

  6. 2020-12-4((ARM汇编)mov指令,LDR指令,LDR伪指令)

    首先说明一下 ARM是RISC("reduced instruction set computer",即"精简指令集计算机")结构 x86是CISC(" ...

  7. 【ARM】数据操作指令(上)

    00. 目录 文章目录 00. 目录 01. 数据操作指令概述 02. MOV指令 03. MVN指令 04. AND指令 05. EOR 指令 06. SUB指令 07. RSB 指令 08. AD ...

  8. MOV指令在32位汇编程序和64位汇编程序下的相同与不同之处

    mov指令原则 两个操作数(目标操作数和源操作数)的大小必须相同 两个操作数不能同时为内存操作数(也就是不能内存 到 内存) 指令指针寄存器不能作为目标操作数 64位汇编程序下    32位汇编程序和 ...

  9. 8086汇编语言寻址方式、基本指令和调试指令

    一.80x86/Pentium 各种寻址方式 1.立即寻址 立即寻址方式下,操作数作为立即数直接包含在指令中,紧跟在操作码之后与其一起 存放在代码段区域.因此,立即数总是和操作码一起被存入 CPU 的 ...

最新文章

  1. 管理Exchange服务器
  2. java冒泡排序找最大的值_(13)數組操作:遍歷、輸出最大值、冒泡排序、選擇排序,java已有的排序方法、折半查找...
  3. React开发(147):开发注意
  4. React开发(132):ant design学习指南之form中控制展开和关闭逻辑
  5. 杨辉再发声明:承认听取付向东报告后受其“鼓舞”,为没及时沟通向其致歉...
  6. prism项目搭建 wpf_Prism 源码解读1-Bootstrapper和Region的创建
  7. 个人所得税如何填写最划算?
  8. 华为双前置摄像头_双录—华为手机前置摄像头双录画质提升办法
  9. CAD 开发 图案填充
  10. 计算机tcpip协议主要功能,tcp协议的主要功能
  11. 论文解读笔记:基于深度学习的行为分析综述
  12. 控制系统 丢包 matlab 程序,基于MATLAB的网络控制系统仿真.pdf
  13. 电路中各种地的区别及处理
  14. M5stack StickCplus ESP32物联网开发板初体验
  15. 在内网使用DBL落地网关,连接公网的freeswitch
  16. 3. Proxmox VE 配置 NTP
  17. MSP430F5529之捕获模式下的HCSR04超声测距(粗略)
  18. ES6中Set方法实现数组去重
  19. 【浅谈】main函数的三个参数
  20. 【原创】c#如何实现RTU远程数据采集功能及RTU在水利工程中的运用

热门文章

  1. 如果我要用Python偷表情包
  2. 基础篇 —— 树莓派换源
  3. 6.1 Burp Suite漏洞扫描使用
  4. python图片修改过、有原图、怎么得到改动的地方_Python + opencv对拍照得到的图片进行背景去除的实现方法...
  5. Week8 作业——B - 猫猫向前冲
  6. 教你如何调用百度编辑器ueditor的上传图片、上传文件等模块
  7. ECS_搭建个人Leanote云笔记本
  8. CSS如何画一个三角形?
  9. 现代语音信号处理-胡航(part 1 - 语音信号处理主要研究内容)
  10. linux ctags目录在哪里,Ctags的基本操作总结