1.8086/8088寻址方式
立即寻址
立即数可以是8位,或者16位,采用高高低低存取的原则。
例:mov ax, 1234h
这种寻址方式用于对存储单元或寄存器赋初值的情况
寄存器寻址
由于不需要访问存取器,这种寻址方式速度比较快
例:mov ax, bx
直接寻址
直接寻址通常用于处理单个存储器变量的情况,可以使用段超越前缀改变不用的段
例:mov ax, [1234h]
使用段超越前缀的话
Mov es:[1234h], bl
寄存器间接寻址
有效地址放于si,di,bx,bp四个寄存器当中,一般在不指定段前缀时,使用si,di,bx默认使用ds段寄存器,如果使用bp寄存器保存地址,则默认使用ss段寄存器
例:mov ax, [si]
使用段超越前缀
例:Mov dl, es:[bx]
当使用bp保存地址引用的则是ss段寄存器
例:mov [bp], cx
寄存器相对寻址
操作数的有效地址为一个基址寄存器(bx, bp)或者一个变址寄存器(si, di)加上一个8位或者16位的偏移量之和
例:mov ax, [di + 1234h]
基址加变址寻址方式
操作数的有效地址由基址寄存器内容加变址寄存器的内容组成
例:mov ax, [bx + si]
相对基址加变址寻址方式
操作数的有效地址由基址寄存器内容加变址寄存器内容加8位或者16位的偏移量构成
例:mov ax, [bx + si + 1234h]
注意问题
基址寄存器可以混用但是不能用两个基址寄存器合用
例:mov ax, [bx + bp]
这个是错误的
80386寻址方式
在80386模式下除了可以兼容之前8086寻址方式外,还提供了更为灵活的32位寄存器的寻址方式:
80386的内存地址可以由3部分构成:一个32基址寄存器,一个可以乘以比例因子1,2,4,8的变址寄存器和一个8位或者32位的常数偏移量这3个部分可以任意省略去其中两部分
例:mov bh, [ebx + esi * 8 + 8]
而所有的8个32位通用寄存器都可以当做基址寄存器,而除了esp外的另外7个通用寄存器都可当做变址寄存器使用
本文详细介绍了8086/8088及80386处理器中的各种寻址方式,包括立即寻址、寄存器寻址、直接寻址等,并对80386新增的32位寄存器寻址方式进行了解析。
882

被折叠的 条评论
为什么被折叠?



