寻址方式
8086/8088有七种基本的寻址方式:立即寻址,寄存器寻址,直接寻址,寄存器间接寻址,寄存器相对寻址,基址变址寻址,相对基址变址寻址。
8086中寄存器简介
详解
立即寻址
立即数,这样没有地址的方式就叫做,立即寻址
举例:MOV AX, 1234H ; 给AX寄存器赋值为1234H
寄存器寻址
参考:https://blog.csdn.net/weixin_40913261/article/details/90762210
说 寄存器寻址,就要先说明,8086 中 有哪些寄存器:
共有14个寄存器:8个通用寄存器+2个控制寄存器+4个段寄存器
例如:MOV SI, AX
MOV AL, DH
由于操作数在寄存器中,不需要通过访问存储器来取得操作数,所以采用寄存器寻址方式的指令执行速度较快。
直接寻址
所以操作数的地址由DS加上指令中给出的16位偏移得到。
"MOV AX, DS:[1234H]"
寄存器间接寻址
操作数存在SI、DI、BX、BP 中的一个。
例如:MOV AX, [SI] ; 自动引用DS作为段寄存器
假设 (DS)= 5000H, (SI)= 1234H
那么存储的物理存储单元地址是51234H。再设该字存储单元的内容是6789H,那么在执行该指令后,(AX)= 6789H。
寄存器相对寻址
操作数在存储器中,操作数的有效地址是一个基址寄存器(BX、BP)或变址寄存器的(SI、DI)内容加上指令中给定的8位或16位位移量之和。
在一般情况下,如果SI、DI或BX的内容作为有效地址的一部分,那么引用的段寄存器是DS。如:
MOV AX, [DI+1223H] ; 引用的段寄存器是DS
假设,(DS)= 5000H,(DI)= 3678H。
那么,存取的物理存储单元地址是5489BH。再假设该字存储单元的内容是55AAH,那么在执行该指令后,(AX)= 55AAH。
基址变址寻址
基址寄存器:BX BP 变址寄存器: SI DI
EA = (BX)或(BP) + (SI)或(DI)
相对基址变址寻址
EA = (BX)或(BP) + (SI)或(DI) + 8位或16位位移量