8086CPU 的寻址方式(重点)


指令就是计算机完成某种操作的命令。

在这里插入图片描述

  • 机器指令的格式

每条机器指令都由”0“和”1“组成,包含操作码和地址码。操作码:说明指令的性质和功能;地址码:说明参与运算的操作数或操作数的地址。

8086 CPU寻址方式(重点)

程序员决定应该怎么描述操作数,对于CPU来说,根据程序员在指令中对操作数的描述,如何找到该操作数,即寻址方式。

那么微机中哪些地方可以存放操作数呢?请看下图中的标红部分:

在这里插入图片描述

寻址方式有:

  • 包含在指令中
    一、立即寻址

  • 存放在CPU的某个寄存器中
    二、寄存器寻址

  • 存放在内存储器中

    三、存储器寻址

  • 存放在lO接口电路的端口中
    四、I/O 端口寻址

一、立即寻址

特点:操作数直接存放在指令中,紧跟在操作码之后。

表示方法:立即数,也就是常量,二进制数、八进制数、十进制数、十六进制数均可。

在这里插入图片描述

再看一个例子:

在这里插入图片描述

二、寄存器寻址

特点:操作数在CPU内部的某个寄存器中。

表示方法:寄存器的名称(如AX、BX等)

在这里插入图片描述

三、存储器寻址

特点:操作数存放在内存单元中。

指令中是如何描述操作数呢?

在指令中用逻辑地址表示操作数(段地址:有效地址),有效地址EA 可由以下三部分组成:

  • 基址寄存器(BX、BP)
  • 变址寄存器内容(SI、DI)
  • 位移量(8位或16位立即数)

CPU如何找到操作数

物理地址和逻辑地址的转换

物理地址PA=段地址×16+偏移地址(EA)

1,直接寻址

有效地址EA由指令直接给出

表示方法: [有效地址EA]

物理地址:PA= (DS) × 16 +EA

MOV AX,[2000]
EA=2000H,假设(DS)=3000H,那么(PA)=32000H
2,寄存器间接寻址

有效地址EA由某个寄存器给出

表示方法:[BX]、[SI]、[DI]、[BP]

MOV AX,[BX]
(DS)=2000H,(SS)=1000H,(BP)=120H
(BX)=100H,(AX)=1234H,(20100H)=5678H
EA=(BX)=100H
PA=(DS)× 16+(BX)=20100H

3,基址寻址

表示方法:[基址寄存器+位移量]

物理地址:

PA=(DS) x16+(BX)

PA=(SS) ×16+(BP)

MOV AX,[BX+3]	;源操作数在数据段
MoV AX,3[BX]
Mov [BP],DI		;目的操作数在堆栈段

4,变址寻址

表示方法:[变址寄存器+位移量]

物理地址:

PA=(DS) ×16+(SI)或(DI)

MOV Ax,[Sl+1000H]	;源操作数在数据段
MoV[DI+200H],CL		;目的操作数在数据段

5、基址变址位移寻址

表示方法:[基址寄存器+变址寄存器+位移量]

物理地址:
PA=(DS)x16+(BX)+(变址寄存器)+位移量

PA=(SS) x16+(BP)+(变址寄存器)÷位移量

MoV AX,[BX+DI+80H];源操作数在数据段
Mov cx, [BP+S+1200H] ;源操作数在堆栈段
6,基址变址寻址

表示方法:[基址寄存器+变址寄存器]

MOV CX,[BP+SI]	;源操作数在堆栈段

注意:必须是一个基址寄存器和一个变址寄存器的组合。

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阔升

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值