指令系统中的寻址方式详解

在8086指令系统中,说明操作数所在地址的寻址方式可分为3大种(7小种)
在这里插入图片描述
程序运行时用到的数据决大部分存放在内存中,如何寻找内存中的数据就是存储器寻址方式。
操作数在存储器中,操作数的有效地址EA在指令中,段地址在默认的或段超越前缀指定的段寄存器中

1.立即寻址

操作数包含在指令中,紧跟着操作码并与操作码一起存放在代码段中,与代码一起被取入CPU的指令队列,指令执行时不需要再访问存贮器。
立即寻址中的操作数可以是计算机有效数制下的数值,也可以是带单引号的字符。
例如: MOV AX,3102H ;
MOV AL,‘A’ ;
在这里插入图片描述

2.寄存器寻址

操作数放在某个寄存器中,注意 源操作数与目的操作数字长要相同(匹配) ,例如:
MOV AX, BX ;
MOV [3F00H], AX;
MOV CL, AL;
错误示例: MOV AX, BL ; 字长不同

3.直接寻址

在指令中直接给出操作数所在单元的位移地址,具体有两种形式。
(1) MOV AX,[2050H] ;AX←[DS×16+2050H]
位移地址通常以变量的形式出现,在指令中就直接写变量的名字
(2) MOV SI , BUF  ; BUF为一变量
默认的段寄存器为DS,但也可以显式地指定其他段寄存器。称为“段超越”前缀。
例如:
MOV DX,ES:[2050H];使用段超越;DX←[ES×16+2050H]

解题示例:
在这里插入图片描述

4.寄存器间接寻址

操作数的位移地址放在寄存器中,只有SI、DI、BX和BP可作间址寄存器。
在这里插入图片描述
解题示例:
在这里插入图片描述

5.寄存器相对寻址

EA=间址寄存器的内容加上一个8/16位的位移量。
在这里插入图片描述
寄存器相对寻址方式操作数的书写形式可以采用多种,以下是与MOV AX,BUF[BX] 指令等价的另外几种书写形式:
MOV AX,[BX+ BUF]
MOV AX,[BUF + BX]
MOV AX,[ BX] BUF

解题示例:
在这里插入图片描述

6.基址+变址寻址

由一个基址寄存器的内容和一个变址寄存器的内容相加而形成操作数的位移地址。
在这里插入图片描述
寄存器 BX 和 BP 为基址寄存器, SI 和 DI 为变址寄存器。这种寻址方式中, 一个基址寄存器加一个变址寄存器构成操作数,操作数的形式只有 4 种:
[BX][SI] ; [BX][DI] ; [BP][SI]; [BP][DI]
这种寻址方式里段基址是 DS 还是 SS 呢?8086 汇编规定以基地址为主,如果基址寄存 器为 BP,则操作数的段基址默认由 SS 提供;若 BX 为基址寄存器,则段基址默认由 DS 提 供。
解题示例:在这里插入图片描述

7.基址+变址相对寻址

在基址+变址寻址的基础上再增加一个8位或16位位移量,三者之和为位移地址
在这里插入图片描述
与基址变址寻址方式相同,基址变址相对寻址方式的操作数也可采用多种等价形式,例:
MOV DX ,disp [ BX ][ SI ]
MOV DX ,disp [ BX + SI ]
MOV DX,[ BX + SI + disp ]
MOV DX,[ BX + SI ]disp

解题示例:
在这里插入图片描述

  • 9
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值