汇编语言(二)寻址方式

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 10
mov ah, value
mov 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值