8086/8088指令系统

指令格式

1. 前缀(Prefixes)
  • 功能:前缀用于修改指令的行为,如指定特定的寻址模式或指定段寄存器等。
  • 类型
    • 数据宽度前缀:如BYTE PTRWORD PTR,指定操作数的数据宽度。
    • 重复前缀:如REPREPEREPZ,用于重复执行某些指令直到条件满足。
    • 段超越前缀:如ES:CS:SS:DS:,指定不同的段寄存器。
    • 操作数大小前缀:如LOCKREP,控制锁存状态或重复执行。
2. 操作码(Opcode)
  • 功能:定义了要执行的操作,如算术运算、逻辑运算、数据传输等。
  • 示例
    • ADD AX, BX:将AX寄存器的值与BX寄存器的值相加,结果存入AX。
    • MOV AX, [BX+SI]:将内存地址[BX+SI]处的数据移动到AX寄存器。
3. 模态字节(Mod R/M byte)
  • 功能:指示源或目的操作数的位置。
  • 组成
    • Mod字段:指示寻址模式。
    • Reg字段:指定寄存器。
    • R/M字段:指定寄存器或内存地址。
4. 位移量(Displacement)
  • 功能:是一个8位或16位的偏移量,用于计算实际的内存地址。
  • 示例
    • MOV AX, [BX + 100H]:将内存地址[BX + 100H]处的数据移动到AX寄存器。
5. 立即数(Immediate data)
  • 功能:如果指令需要一个立即数作为操作数。
  • 示例
    • MOV AX, 2000H:将立即数2000H赋值给AX寄存器。

操作数的来源

操作数可以来自多个不同的来源:

1. 立即数(Immediate Data)
  • 定义:立即数是指直接写入指令中的数值。
  • 特点
    • 不需要访问内存或寄存器。
    • 执行速度快。
  • 示例
    MOV AX, 2000H
2. 寄存器(Registers)
  • 定义:寄存器是CPU内部的小型存储单元。
  • 特点
    • 速度快,直接在CPU内部处理。
  • 示例
    ADD AX, BX
3. 存储器(Memory)
  • 定义:操作数位于内存中的某个位置。
  • 特点
    • 需要读取或写入内存。
    • 执行速度较慢。
  • 示例
    MOV AX, [BX+SI]

 

4. I/O 端口(I/O Ports)
  • 定义:用于与外部设备通信的端口。
  • 特点
    • 通常用于输入输出操作。
  • 示例
    IN AL, 60H

 

 

操作数的数量

指令可以有不同数量的操作数:

1. 无操作数(No Operands)
  • 定义:不需要任何操作数。
  • 示例
    HLT
2. 单操作数(Single Operand)
  • 定义:只有一个操作数。
  • 示例
    NOT AX
3. 双操作数(Dual Operands)
  • 定义:有两个操作数。
  • 示例
    SUB AX, BX

操作数的类型

操作数可以有不同的类型:

1. 8位寄存器(8-bit Registers)
  • 定义:常见的8位寄存器包括AL、AH、BL、BH、CL、CH、DL 和 DH。
  • 示例
    XOR AL, 0FFH
2. 16位寄存器(16-bit Registers)
  • 定义:常用的16位寄存器包括AX、BX、CX 和 DX。
  • 示例
    CMP AX, BX
3. 指针和索引寄存器(Pointer and Index Registers)
  • 定义:包括BP、SI 和 DI,常用于寻址。
  • 示例
    MOV SI, 1000H
4. 段寄存器(Segment Registers)
  • 定义:包括CS、DS、SS 和 ES,用于分段寻址。
  • 示例
    MOV ES, AX
5. 存储器地址(Memory Addresses)
  • 定义:通过寄存器组合或其他寻址方式计算得出。
  • 示例
    MOV AX, [BX + 100H]

 

寻址方式

寻址方式用于确定操作数的实际内存地址:

1. 直接寻址(Direct Addressing)
  • 定义:操作数的地址直接出现在指令中。
  • 示例
    MOV AX, [2000H]
2. 寄存器间接寻址(Register Indirect Addressing)
  • 定义:使用寄存器的内容作为内存地址。
  • 示例
    MOV AX, [BX]
3. 寄存器相对寻址(Register Relative Addressing)
  • 定义:基址寄存器加上一个位移量。
  • 示例
    MOV AX, [BX + 100H]
4. 基址加变址寻址(Base Plus Index Addressing)
  • 定义:使用基址寄存器和变址寄存器的组合。
  • 示例
    MOV AX, [BX + SI]
5. 比例缩放寻址(Scaled Index Addressing)
  • 定义:在变址寻址基础上乘以一个比例因子(1, 2, 4, 8)。
  • 示例
    MOV AX, [BX + SI * 4]
6. 基址加变址加比例缩放寻址(Base Plus Index Plus Scaled Index Addressing)
  • 定义:结合了基址、变址和比例缩放。
  • 示例
    MOV AX, [BP + DI * 2]
7. 段超越寻址(Segment Override Addressing)
  • 定义:使用不同的段寄存器来定位内存区域。
  • 示例
    MOV AX, ES:[BX]

 

 

下面是我根据寻址方式整理的思维导图: 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值