80X86寻址方式总结

一:概论
    80x86汇编程序都是分段程序设计结构,每个程序段都有一个开始地址:段基址。在保护模式下段基址要由16位的段选择子得到,这些段选

择子存放在六个段寄存器(CS,SS,DS,ES,FS,GS)中:
    代码段总是由 CS 段寄存器来指示;
    堆栈段总是由 SS 段寄存器来指示;
    字符处理指令总是使用 ES 段寄存器作为目标操作数的段寄存器;
    一般的数据段可用 DS、ES、FS、GS来指示,但 DS 作为数据段的默认段寄存器,用它来寻址比其它几个段寄存器的效率高,因此最好安排 DS 寻址最常引用的数据段,而 ES、FS、GS去寻址一些不常用的数据段。

    段内偏移地址(某个字节相对段基址的偏移量)也被称为有效地址 EA(effective address),它由以下4个部分组成:

    EA  =  基址  +  (变址  *  比例因子)  +  位移量

    基址、变址、位移量的值可正可负,比例因子只能为正。

    1:基址
    (32位寻址):
        1):如果基址寄存器是  ESP或EBP,则段寄存器为 SS;
        2):如果基址寄存器是其它通用寄存器,则段寄存器为 DS;
    (16位寻址):
        基址寄存器可以是  BX  或  BP

    2:变址
    (32位寻址):
        变址寄存器可以为除  ESP  之外的32位通用寄存器
    (16位寻址):
        变址寄存器可以是  SI  或  DI
    3:比例因子
        一个常数,可取  1、2、4、8。
    4:位移量
        一个8位、16位、32位的常数。

二:详解
    默认情况下,存储器寻址使用DS数据段࿰

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值