汇编语言寻址方式
汇编语言寻址方式
立即数寻址
操作数直接写在指令中。
1 | MOV AH, 80H |
注意:立即数只能作为第二操作数,不能作为第一操作数(目的操作数)
寄存器寻址
指令所需操作数存储在寄存器中。
1 | MOV VARD, EAX |
直接寻址
操作数放在内存中,指令中直接给出地址。
1 | MOV AX, [1234H] |
前者第二操作数为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所指示的内存地址存放的数值。