zoukankan      html  css  js  c++  java
  • 汇编语言(二)

    指令的寻址方式

    汇编指令由操作码字段操作数字段构成。对于双操作指令,第一个操作数称为目的操作数,表示操作后的结果;第二个操作数称为源操作数,表示来源操作数。两者以逗号分隔。如:

    img

    所谓寻址方式,即指令中提供操作数或操作数地址的方式。通俗地说就是寻找操作数地址的方法。寻址方式的数量代表了微机系统对存储器管理能力的强弱,合理地使用寻址方式可以扩大访存空间,缩短指令长度,满足各种程序设计需要。与数据有关的寻址方式划分为三类:立即寻址方式,寄存器寻址方式,存储器寻址方式。

    七种与数据有关的寻址方式

    要求掌握下列七种与数据有关的寻址方式。其中后五种属于存储器寻址方式。

    • 立即寻址方式(Immediate addressing)
    • 寄存器寻址方式(Register addressing)
    • 直接寻址方式(Direct addressing)
    • 寄存器间接寻址方式(Register indirect addressing)
    • 寄存器相对寻址方式(Register relative addressing)
    • 基址变址寻址方式(Based indexed addressing)
    • 相对基址变址寻址方式(Relative based indexed addressing)

    1. 立即寻址方式

    所要找的操作数直接写在指令中,这种操作数叫立即数。在8086、80286中立即数是8位或16位的,在80386以上可以是32位的立即数。立即寻址方式用来表示常数。

    img

    2. 寄存器寻址方式

    在寄存器寻址方式中,操作数在寄存器中,在指令中指定寄存器名即可。 img

    3. 直接寻址方式

    操作数存放在内存中。操作数的偏移地址(也称为有效地址EA)直接写在指令中。

    (1)存储器读操作

    MOV指令可以实现CPU对存储器的读写。若传送指令的目的操作数是CPU的寄存器,源操作数是存储单元,就完成了对存储器的读操作。

    例1 MOV AX,DS:[2000H]
    该指令表示从数据段的2000H单元读出一个字送入AX。

    (2)存储器写操作

    如果要实现CPU写内存操作,只要把MOV指令的目的操作数变为存储单元,源操作数为CPU的寄存器即可。

    例2 MOV DS:[4000H],AX
    将AX的值写入数据段的4000H单元。

    操作数存放在内存中。指令形式如: MOV AX,[BX]
    操作数的EA在基址寄存器BX、BP或变址寄存器SI、DI中,而操作数的段地址在数据段DS或堆栈段SS中。如果有效地址由BX、SI、DI指出,则默认为对应于数据段,而用BP指出则对应于堆栈段。 img

    5. 寄存器相对寻址方式

    操作数存放在内存中。指令形式如: MOV AX,[BX+1200H]
    操作数的EA是一个基址或变址寄存器的内容再加上8位或16位位移量之和。也就是说在寄存器间接寻址的基础上,增加一个相对量(位移量)。这个位移量可以是立即数,也可以是符号地址。 img

    6. 基址变址寻址方式

    操作数存放在内存中。指令形式如: MOV AX,[BX+SI]
    操作数的EA为一个基址寄存器和一个变址寄存器的内容之和。 img

    7. 相对基址变址寻址方式

    操作数存放在内存中。指令形式如: MOV AX,[BX+SI+1200H]
    操作数的EA为一个基址寄存器加一个变址寄存器再加一个位移量,三者之和。可用于二维表查表和栈处理。

  • 相关阅读:
    【洛谷P5514】永夜的报应【模拟】
    当你闲得无聊去编 C++「贪吃蛇」小游戏
    【牛客练习赛50】C
    【JZOJ3410】Tree【最小生成树】
    @Zookeeper可视化工具。 ZK 安装 node-zk-browser。2015.10.22亲测可用
    Zookeeper可视化工具。 ZK 安装 node-zk-browser。2015.10.22亲测可用
    读 Paxos 到 ZooKeeper ¥ 50大洋
    ZooKeeper 分布式锁
    UML 绘图关系
    Astah 使用 流程图、类图、时序图
  • 原文地址:https://www.cnblogs.com/nickqiao/p/7583340.html
Copyright © 2011-2022 走看看