汇编语言(二)寻址方式_基址变址寻址

2023-08-10 15:09:00 个人图书馆-instl

8086指令体系总共有7种寻址方式,详细如下:

立即数寻址
mov ax, 3069H

直接将值为3069H的立即数放到ax中。


(资料图片仅供参考)

寄存器寻址
mov AL, BH

将BH寄存器的值放入AL中。

寄存器间接寻址

使用BX寄存器进行间接寻址,BP,BI,DI寄存器也行。

mov ax, [bx]

将bx保存的值当做偏移地址,这里假设为2000H,再到DS:2000H号单元中取出值放到ax中。

tips:注意在通用寄存器组中只有bx能够进行间接寻址,AX、CX、DX不行。

寄存器相对寻址

操作数的有效地址为基址寄存器(BP,SP)和变址寄存器(DI,SI)的内容和指令中指定的偏移量之和。

mov ax, count[SI]mov ax, [count + SI]

这里的count是一个偏移量,可以是一个常数或者一个变量。

内存寻址

直接寻址

mov ax,[2000H]

将DS:2000H号单元的内容放入ax中,如果要指定别的段的话要使用段跨越前缀。例如

mov ax, ES:[2000H]

要写上ES才能指定该段的有效地址为2000H号单元。

同时该寻址方式的操作数地址也可以由变量给出:

value db 10mov ah, valuemov ax, word ptr value# 将value强制转化为字类型

在汇编语言中,变量名即意味着对应单元的偏移地址,因此直接使用变量名的方式也能进行内存寻址。

基址变址寻址

操作数的有效值是一个基址寄存器和一个变址寄存器的内容之和,例如

mov ax, [BX][DI]mov ax, [BX + DI]

其可能的组合为

DS:[BX|BP][DI|SI]
相对基址变址寻址

操作数的有效地址为一个基址寄存器,一个变址寄存器和一个偏移量之和构成

mov ax, count[bx][si]mov ax,[count + bx + si]

注意源对象的位数大小要和目标对象的位数大小相等。

寻址方式汇总如下

寻址方式指令格式
立即数寻址mov ax, 1000H
寄存器寻址mov ax, bx
寄存器间接寻址mov ax, [bx]
寄存器相对寻址mov ax, count[bx]
直接寻址mov ax, [2000H]
基址变址寻址mov ax, [bx + di]
相对基址变址寻址mov ax, count[bx + di]
段寄存器的使用规定
访问方式默认寄存器可跨越偏移地址
取指令csip
堆栈操作sssp
一般数据访问dscs,es,ss有效地址EA
BP作为基址寻址sscs,ds,esBP
串操作的源操作数dscs,es,ssSI
串操作的目的操作数ESDI

关键词:

推荐阅读

猜你喜欢

x 广告

Copyright   2015-2022 华中中介网版权所有  备案号: 京ICP备12018864号-26   联系邮箱:2 913 236 @qq.com