BTW–符号的阐明:
PA
EA
(地址)
[地址]
DEST
SOUR
–
?
?
⊕
—-
____
Flags
在EU履行指令的过程中,BIU担任从内存指定区域取出传送给EU部分去履行。在履行指令时,所需的操作数也是由BIU从内存指定区域取出传送给EU部分履行。
1 当即寻址办法(Immediate addressing)
当即寻址办法常用于给寄存器赋初值,而且只能用于源操作数字段,不能用于意图操作数字段。
指令履行后,(AL)= 09H
指令履行后,(AX)= 3064H
留意:不能直接给段寄存器和标志寄存器赋予当即数。
明显,下面的指令是过错的:
MOV DS, 1250H
2 寄存器寻址办法(Register addressing)
关于16位操作数,寄存器可所以AX、BX、CX、DX、SI、DI、SP、BP、CS、DS、ES和SS;关于8位操作数,寄存器可所以AL、AH、BL、BH、CL、CH、DL、DH。因为操作数就在寄存器中,指令履行时不需要拜访存储器,因而这是一种快速的寻址办法。
如指令履行前(AX)= 1234H,(BX)= 5678H;
则指令履行后(AX)= 5678H,(BX)坚持不变。
留意:源寄存器和意图寄存器的位数有必要共同。
例如:MOV CL, BX是一条过错指令。
除上述两种寻址办法外,下面五种寻址办法的操作数都在除代码段以外的存储区中。
这儿先引进有用地址EA(Effective Address)的概念:在8086里,把操作数的偏移地址称为有用地址,下面五种核算EA的办法表现了五种寻址办法。
3 直接寻址办法(Direct addressing)
在这种寻址办法中,操作数寄存在存储单元中,而这个存储单元的有用地址就在指令的操作码之后,操作数的物理地址可经过((DS)×16)再加上这个有用地址构成。
在汇编语言指令中,能够用符号地址(变量名或标号)替代数值地址。
例如: MOV AX, DATA
或 MOV AX, [DATA]
这儿DATA是寄存操作数单元的符号地址。
直接寻址办法默许操作数在数据段中,假如操作数界说在其它段中,则应在指令中指定段跨过前缀。
例如: MOV AX, ES:NUMBER
或 MOV AX, ES:[NUMBER]
这儿NUMBER是附加段中的字变量。
直接寻址办法适合于处理单个变量。
假如(DS)= 3000H,则履行情况如图3.2所示。
最终的履行成果为(AX)= 3050H。
4 寄存器相对寻址办法(Register indirect addressing)
这种寻址办法经过基址寄存器BX、BP或变址寄存器SI、DI与一个位移量相加构成有用地址,核算物理地址的缺省段仍然是SI、DI和BX为DS,BP为SS。
寄存器相对寻址办法也能够运用段跨过前缀。
例如:MOV AX, ES:[DI+10]
这种寻址办法相同可用于表格处理。
表格的首地址可设置为位移量,修正基址或变址寄存器的内容获得表格中的值。
其间COUNT为16位位移量的符号地址。
假如 (DS)= 3000H,(SI)= 2000H,COUNT = 3000H
则物理地址 = 30000H + 2000H + 3000H = 35000H
指令履行情况如图3.4所示,最终的履行成果是(AX)= 1234H。
5 基址变址寻址办法(Based indexed addressing)
这是一种基址加变址来定位操作数地址的办法,也就是说,操作数的有用地址是一个基址寄存器(BP或BX)和一个变址寄存器(SI或DI)的内容之和。如基址寄存器为BX时,与DS构成的物理地址指向数据段;如基址寄存器为BP时,与SS构成的物理地址指向仓库段。如左图所示。
此种寻址办法也可运用段跨过前缀。
例如:MOV AX, ES:[BX][SI]
留意:一条指令中一起运用基址寄存器或变址寄存器是过错的。
例如:MOV CL, [BX+BP] 或 MOV AX, [SI+DI] 均为不合法指令。
这种寻址办法相同适用于数组或表格处理。
首地址可寄存在基址寄存器中,而用变址寄存器来拜访数组中的各个元素。因为两个寄存器的值都能够修正,所以它比寄存器相对寻址办法愈加灵敏。
如 (DS ) = 2100H,(BX)= 0158H,(DI)= 10A5H
则 EA = 0158H +10A5H = 11FDH
物理地址 = 21000H +11FDH = 221FDH
指令履行情况如图3.5所示,最终的履行成果是(AX)= 1234H。
6 相对基址变址寻址办法(Relative based indexed addressing)
这种寻址办法与基址变址寻址办法相似,不同的是基址加变址再加上一个位移量构成操作数的有用地址。缺省段的运用仍然是DS与BX组合,SS与BP组合。
这种寻址办法一般用于对二维数组的寻址。
例如,存储器中寄存着由多个记载组成的文件,则位移量可指向文件之首,基址寄存器指向某个记载,变址寄存器则指向该记载中的一个元素。