【汇编】 寻址方式
一、立即数寻址
立即数 操作数包含在指令中,它作为指令的一部分,跟在操作码后存放在代码段,这种操作数成为立即数
立即寻址方事所提供的操作数紧跟在操作码后面,与操作码一起放在指令代码段中,不需要到其他地址单元中去取。立即数可以是8位,也可以是16位。这种寻址方式主要用于给寄存器或存储单元赋初值的场合。立即寻址方式是这七种寻址中速度最快的寻址方式
MOV AX, 34H ; 源操作数是直接寻址方式
二、寄存器寻址
寄存器寻址的特点是操作数在CPU内部的寄存器中,在指令中指定寄存器号。
由于操作数在寄存器中,不需要通过访问存储器来取得操作数,所以采用寄存器寻址方事的指令执行速度较快
MOV AX, DS
MOV AX, 34H ; 目的操作数是寄存器寻址方式
MOV AX, BX ; 目的操作数和源操作数都是寄存器寻址方式
三、直接寻址
直接寻址的操作数在存储器中,指令直接包含有操作数的有效地址
MOV AX,[0001H]
四、寄存器间接寻址
寄存器间接寻址的操作数在存储器中,操作数有效地址在寄存器中
- 若有效地址用SI、DI和BX等之一来指定,则其缺省的段寄存器为DS;
- 若有效地址用BP来指定,则其缺省的段寄存器为SS(即:堆栈段)。
MOV SI, 0001H
MOV AX, [SI]
MOV BX, 0001H
MOV AX, [BX]
五、寄存器相对寻址
该寻址方式是以指定的寄存器内容,加上指令中给出的位移量(8位或16位),并以一个段寄存器为基准,作为操作数的地址。指定的寄存器一般是一个基址寄存器或变址寄存器
MOV SI, 0001H
MOV AX, [SI+100H]
MOV BX, 0001H
MOV AX, [BX+100H]
六、基址变址寻址
操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)和一个变址寄存器(SI、DI)的内容之和。其有效地址的计算公式如下图所示。
在不使用段超越前缀的情况下,规定:如果有效地址中含有BP,则缺省的段寄存器为SS;否则,缺省的段寄存器为DS。