汇编语言寻址方式

立即数寻址

操作数直接写在指令中。

1
2
MOV AH, 80H
ADD AX, 123H

注意:立即数只能作为第二操作数,不能作为第一操作数(目的操作数)

寄存器寻址

指令所需操作数存储在寄存器中。

1
2
3
MOV VARD, EAX
ADD BH, 78H
MOV AX, BX

直接寻址

操作数放在内存中,指令中直接给出地址。

1
2
MOV AX, [1234H]
MOV ES:[1000H], AX

前者第二操作数为DS*16+1234H位置所放置的值。

后者第二操作数为ES*16+1000H位置所放置的值。

寄存器间接寻址

操作数放在内存中,有效地址在寄存器中给出。

只能在SI/DI/BX/BP四个寄存器中进行指定。

1
MOV BX, [DI]

指令第二操作数为DS*16+DI所指示的内存地址存放的数值。

寄存器相对寻址

操作数放在内存中,内存地址由寄存器和指令中的偏移量共同指定。

1
MOV BX, [SI+100H]

其第二操作数为DS*16+SI+100H所指示的内存地址存放的数值。

注意:

  • 若有效地址用SI/DI/BX来指定,则省缺段寄存器为DS
  • 若有效地址用BP来指定,则省缺段寄存器为SS

基址变址寻址

操作数放在内存中,地址由基址寄存器和变址寄存器共同指定

一般默认省缺段寄存器为DS,如地址中含有BP则省缺段寄存器为SS。

1
MOV BX, [BX+SI]

其第二操作数为DS*16+SI+BX所指示的内存地址存放的数值。

基址变址相对寻址

操作数在存储器中,其有效地址是基址寄存器、变址寄存器和指令中的8/16位偏移量的和。

一般默认省缺段寄存器为DS,如地址中含有BP则省缺段寄存器为SS。

1
MOV AX, [BX+SI+200H]

其第二操作数为DS*16+BX+SI+200H所指示的内存地址存放的数值。