汇编语言基础教程-寻址方式

1立即寻址

在指令中使用的操作数为常数

如:

mov eax,190;与mov eax,00BEH相同,低字节在前s

mov eax,0FFFFFFFFH;与 mov eax,-1相同

eax可以存放一个双字

 

2寄存器寻址

操作数已经在CPU的寄存器中

如:

mov EAX,EBX

 

3直接寻址

操作数为一个已经定义好的变量

如:

mov eax,dvar;dvar为一个双字变量

mov dvar,eax

在翻译成及其指令后,以上指令就变成了类似以下形式

mov eax,[00404011];地址外面加一个方括号,表示取这个地址的内容

 

4寄存器间接寻址

操作数的地址放在寄存器中

如:

mov ESI,00404011H

mov EAX,[ESI]

32位CPU中EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP能用作间接寻址

 

5寄存器相对寻址

如:

mov ESI,00404011H

mov EAX,[ESI+4]

 

6基址变址寻址

如:

mov ESI,00404011H

mov EBX,4

mov EAX,[ESI+EBX]

 

7基址变址相对寻址

如:

mov ESI,00404011H

mov EBX,4

mov EAX,[ESI+EBX+4]

 

8基址变址比例相对寻址

如:

mov ESI,00404011H

mov EBX,4

mov EAX,[ESI+EBX*2+4]

 

9*段超越

内存操作数的地址由两个部分指定:段和有效地址。

寻址方式中确定操作数的有效地址后,还要依靠段寄存器一起来确定操作数的内存地址

默认情况下内存操作指令在DS段中

如果使用了ESP和EBP来寻址,那么使用的是SS段寄存器

如:

mov eax,[ebp+8];内存操作数在SS段中

使用段超越前缀可以改变寻址方式中默认使用的段寄存器

如:

mov eax,cs:[ESP-4]

windows 32编程环境下CS,DS,ES,SS在内存中指向同一个段,其大小为4G

所以一般用不到段超越的操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值