图3.10 寻址方式字节

表3.1 reg域与w位组合表示寄存器
reg
|
w=1
|
w=0
|
000
|
AX
|
AL
|
001
|
CX
|
CL
|
010
|
DX
|
DL
|
011
|
BX
|
BL
|
100
|
SP
|
AH
|
101
|
BP
|
CH
|
110
|
SI
|
DH
|
111
|
DI
|
BH
|
表3.2
mod与r/m组合代码所对应的寻址方式
mod
r/m
|
00
|
01
|
10
|
11
|
w=0
|
w=1
|
000
|
DS:[BX+SI]
|
DS:[BX+SI+D8]
|
DS:[BX+SI+D16]
|
AL
|
AX
|
001
|
DS:[BX+DI]
|
DS:[BX+DI+D8]
|
DS:[BX+DI+D16]
|
CL
|
CX
|
010
|
SS:[BP+SI]
|
SS:[BP+SI+D8]
|
SS:[BP+SI+D16]
|
DL
|
DX
|
011
|
SS:[BP+DI]
|
SS:[BP+DI+D8]
|
SS:[BP+DI+D16]
|
BL
|
BX
|
100
|
DS:[SI]
|
DS:[SI+D8]
|
DS:[SI+D16]
|
AH
|
SP
|
101
|
DS:[DI]
|
DS:[DI+D8]
|
DS:[DI+D16]
|
CH
|
BP
|
110
|
DS:D16
|
SS:[BP+D8]
|
SS:[BP+D16]
|
DH
|
SI
|
111
|
DS:[BX]
|
DS:[BX+D8]
|
DS:[BX+D16]
|
BH
|
DI
|
注:
⑴ 表中的各种存储器寻址方式均使用缺省的段寄存器
⑵ D8、D16分别表示8位位移量和16位位移量
注意,mod=00与r/m=110的组合,它表示指令只有位移量时的寻址方式,如指令MOV
[1000H],DL所对应的机器语言就是这种组合。但是表中缺少了SS:[BP]的寻址方式。实际上,机器语言中没有无位移量的[BP]寻址方式,每当指令中出现[BP]时,汇编程序将它汇编成[BP+0],也就是mod=01和r/m=110的组合,在寻址方式之后的DATA/DISP字节中,是一个8位的位移量00(见机器指令举例⑶)。
⑴ MOV reg1,reg2或MOV reg,mem或MOV mem,reg

⑵ MOV ac,mem或MOV mem,ac (ac为累加器AH、AL或AX)

⑶ MOV segreg,reg或MOV reg,segreg
MOV segreg,mem或MOV mem,segreg

⑷ MOV reg,data

⑸ MOV mem,data

|
|