第三~六字节(BYTE3~BYTE6)

这4个字节是指令的可选字节,通常用来指示存储器操作数的位移量,和/或立即操作数的值。

位移量字节可以是单字节或者双字节。只要有可能,程序语言翻译器(例如汇编器)总是试图生成单字节的位移量。MOD域指示后续有几个字节的位移量。遵循Intel的规范,如果是双字节位移量,则第3字节存储低位字节,第4字节存储高位字节,即低位字节存储在存储器的低地址处,高位字节存储在高地址处。如果是单字节位移量,8086处理器自动地将其符号扩展为16位位移量,然后在用于有效地址计算。

立即数总是在任何的位移量之后出现。立即数的存储规则同位移量。

示例:

Intel的指令文档规格

如下的汇编代码

MOV ax, 1234H

MOV bx, 5678H

经汇编器翻译以后会生成的机器指令

b8 34 12

bb 78 56

将以上指令用二进制格式表示如下

1011 1000 0011 0100 0001 0010

1011 1011 1001 1010 0111 1000

MOV ax, 1234H指令分解如下

第一字节:操作码:1011, W位:1,REG域:000(即AX)

第二字节:立即数低位字节34H

第三字节:立即数高位字节12H

MOV bx, 5678H指令分解如下

第一字节:操作码1011,W位:1,REG域:011(即BX)

第二字节与第三字节:立即数5678H。

REG域的寄存器代码如下表所示

REG

8位寄存器

16位寄存器

32位寄存器

0 (000)

AL

AX

EAX

1 (001)

CL

CX

ECX

2 (010)

DL

DX

EDX

3 (011)

BL

BX

EBX

4 (100)

AH

SP

ESP

5 (101)

CH

BP

EBP

6 (110)

DH

SI

ESI

7 (111)

BH

DI

EDI

Intel 64/x86_64/IA-32/x86处理器 - 指令格式(6) - 8086/16位指令位移量字节/立即数字节相关推荐

  1. Intel 64/x86_64/IA-32/x86处理器 - 指令格式(4) - 8086/16位指令操作码字节

    第一字节(BYTE1) 指令定义了处理器要执行的操作,例如ADD,XOR,HLT等.操作码通常位于第一字节,某些指令的操作码会扩展到第二字节(即ModR/M字节)的REG域,故有时候REG域也被称为R ...

  2. Intel 64/x86_64/IA-32/x86处理器 - 指令格式(3) - 8086/16位指令前缀

    指令前缀 虽然没有明确的在上图中指明,8086处理器上16位实模式下,指令也可以带有下列前缀:Lock前缀,REPNE/REPNZ前缀,段跨越前缀.但是并没有操作数宽度前缀66H和地址宽度前缀67H, ...

  3. Intel 64/x86_64/IA-32/x86处理器 - 指令格式(5) - 8086/16位指令寻址字节

    第二字节(BYTE2) 第二字节是ModR/M字节,基本用途是指示指令的两个操作数,以及该字节之后是否还有其他字节(位移量字节和立即数字节).由于主要用于用于操作数寻址,所以又称为"寻址字节 ...

  4. Intel 64/x86_64/IA-32/x86处理器 - 指令格式(2) - 8086/16位指令格式概述

    本节简单地介绍一下x86指令集的指令格式和特点,当优化文档偶尔提及指令格式时,可供参考.完整的指令集格式在Intel Software Developer's Manual的第二卷Instructio ...

  5. 使用GCC和GNU Binutils编写能在x86实模式运行的16位代码

    使用GCC和GNU Binutils编写能在x86实模式运行的16位代码 不可否认,这次的标题有点长.之所以把标题写得这么详细,主要是为了搜索引擎能够准确地把确实需要了解GCC生成16位实模式代码方法 ...

  6. Intel 64/x86_64/IA-32/x86处理器 - 指令格式(7) - 80386/32位指令格式概述

    32-bit Instruction Format 从80386的指令格式可以看出,32位指令的操作码可以是1个字节或者2个字节,还新引入了SIB(即BYTE4)字节.地址位移量和操作数宽度也都升级为 ...

  7. Intel 64/x86_64/IA-32/x86处理器 - 指令格式(8) - 80386/32位指令前缀

    下面详细讲解一下指令前缀.Pentium Pro处理器支持的前缀可以分成如下四组: 组1: 封锁和重复执行前缀 指令前缀 (十六进制) 描述 F0 H Lock前缀,封锁总线 The LOCK pre ...

  8. Intel 64/x86_64/IA-32/x86处理器 - 指令格式(1) - 概述

    x86 Instruction Introduction 指令用来指示处理器所要执行的操作,指令集就是某个处理器上可以执行的所有指令.通俗的说,指令可以有两种存在方式,一种是汇编程序员看到的汇编文本格 ...

  9. Intel 64/x86_64/IA-32/x86处理器段寄存器 - 32位段寄存器/64位段寄存器

    Segment Registers 本节主要讲述Intel处理器中的段寄存器,用于支持处理器的段式存储器管理机制.16位的8086/Intel286处理器有4个段寄存器CS/DS/SS/ES.32位的 ...

最新文章

  1. vue 中实现异步加载模块
  2. Acronis Disk Director Suite(windows7分区工具)
  3. ubuntu 16.04 安装PhpMyAdmin
  4. Fastboot简介
  5. PHP下实现两种ajax跨域的解决方案之jsonp
  6. 动态数据源切换的底层原理-DynamicDataSourceEntry
  7. c#和python同一主机直接udp_为什么Python 如此之慢
  8. java erlang_Java开发人员的Erlang
  9. NEUACM 2015年一月月赛
  10. c/c++教程 - 2.4.2.7~8 类对象作为类成员,static静态成员变量函数
  11. 饿了么是视障者非常喜欢的APP,你们要加油哦!
  12. Flutter进阶第3篇:下拉刷新 上拉分页加载更多
  13. SDOI2015 约数个数和
  14. 自己写好记的Oracle的 Group By 、 Group By Rollup和Group By Cube基础
  15. 海外拼多多Temu最新动态,怎么快速提升销量和权重?(测评补单)
  16. 切比雪夫不等式例题讲解_数学广角:切比雪夫最佳逼近直线
  17. 计算机硬盘储存怎么增加,如何扩大存储空间?电脑扩大新添加的硬盘的方法
  18. Android单元测试读写文件,Android-单元测试
  19. Cocos2d-x 3.x 图形学渲染系列二十三
  20. 如何应聘项目经理,或成为项目经理

热门文章

  1. 哪些情况下sql索引会失效
  2. day28 java的IO流 (1)对IO的初步了解
  3. android 搜索图标居中,Android中搜索图标和文字居中的EditText
  4. java web redis_java web网页版redis客户端工具
  5. 如何快速的了解java的I/O流,由浅到深
  6. LoRa、LoRaWAN及网关相关技术介绍
  7. mvn linux,Linux安装Maven
  8. c语言输入成绩求不及格,输入一个学生信息,可以输出,不及格那个输出狗后会有程序停止运行...
  9. java高级工程师线程_java高级工程师--------多线程并发
  10. springboot 打印slf4_SpringBoot里slf4j日志功能的默认实现