思维导图: https://pan.baidu.com/s/1fkikTHx-C0TcVlmafzofAg 提取码:java
8086寻址方式
立即寻址
立即寻址
-
解释
- 操作操作数在指令中,跟在操作码后面,8或16位
- 常用来给寄存器赋初值
-
注意
- 可以送到存储单元(8位)或两个连续的存储单元中
- 只能做源操作数, 不能做目的操作数
- A-F开头应该加0,比如 0A234H
-
举例
- MOV AL,03H
- MOV BX,2432H
寄存器寻址
寄存器寻址
-
解释
- 操作数在寄存器中,指令指定寄存器名称
-
注意
- 源操作数长度必须和目的操作数一致
-
举例
- MOV DX,BX
- MOV AL,BH
存储器寻址
直接寻址
-
解释
- 操作数的偏移地址在代码段中指令的操作码之后
-
注意
- 操作数物理地址 = 10H * DS + EA(有效地址)
- 默认使用DS作为数据段寄存器
-
举例
- MOV AX,[2000H]
MOV AX,ES:[1200H] (物理地址为 10H * ES + 1200H)
- MOV AX,[2000H]
寄存器间接寻址
-
解释
- 指令中给出的寄存器中的值为操作数的有效地址
-
注意
- 常用寄存器 BX、BP、DI、SI
- 物理地址 = 16 * DS + BX/SI/DI
物理地址 = 16 * SS + BP
-
举例
- MOV AX,[BP]
- MOV BX,[SI]
寄存器相对寻址
-
解释
- 操作数的有效地址是基址或变址的内容+指令中指定的8/16位位移量之和
-
注意
- 就比寄存器间接寻址多了个位移量
- 常用寄存器 BX、BP、DI、SI
- 物理地址 = 16 * DS + BX/SI/DI + 位移量
物理地址 = 16 * SS + BP + 位移量
-
举例
- MOV BX,COUNT[SI]
- MOV BX,[SI+COUNT]
COUNT 为地址,比如 2000H
基址变址寻址
-
解释
- 有效地址 = 基址寄存器(BX/BP) + 变址寄存器(SI/DI)
-
注意
- 物理地址 = 16 * DS + BX + SI/DI
物理地址 = 16 * SS + BP + SI/DI
- 物理地址 = 16 * DS + BX + SI/DI
-
举例
- MOV AX,[BX][SI]
- MOV AX,[BX+SI]
相对基址变址寻址
-
解释
- 有效地址 = 基址+变址+8/16位位移量
-
注意
- 就是基址变址寻址多了个位移量
- 物理地址 = 16 * DS + BX + SI/DI + 位移量
物理地址 = 16 * SS + BP + SI/DI + 位移量
-
举例
- MOV AX,COUNT[BX][SI]
- MOV AX,[BX][COUNT + SI]
参考资料: 微型计算机原理与接口技术(第6版).周荷琴 冯焕清.中国科学技术大学出版社