电工学习网

 找回密码
 立即注册

80x86寻址方式

2015-3-22 08:42| 编辑:电工学习网| 查看: 6265| 评论: 0

   1、立即寻址
     立即寻址 也叫 立即 数 寻址 ,这是一种特殊的 寻址 方式,操作数本身就在指令中给出,只要取出指令也就取到了操作数, 立即寻址方式中,指令操作码和操作数都在存储器代码段中;立即数可以是用 8 位或 16 位二进制补码表示的有符号数。
     功能:常用于给寄存器赋初值,只能用于源操作数字段,且源操作数与目的操作数长度应一致。
     【例】 MOV AX , 10
     执行后( AX ) = ?
     该例中源操作数为立即寻址方式,立即数为 10 ,存放在指令的下一单元。
     执行: 10 → AX
     执行后:( AX ) =000AH
    2、寄存器寻址
    一般计算机都设置有一定数目的通用寄存器,用以存放操作数,操作数的地址或中间结果。若指令地址码部分给出某一通用寄存器的地址(即寄存器名),而且所需要的操作数就在这一寄存器中,则称为寄存器寻址。
     寄存器寻址方式的操作数在指令指明的寄存器中。
     【例】下列程序执行后,( AX ) = ?,( BX ) = ?
     MOV AX , 1234H
     MOV BX , 5678H
     ADD AX , BX
     该程序中 MOV 指令为数据传送指令操作符, ADD 指令为加法指令操作符,三条指令皆为双操作数指令。第一、二条指令 AX 、 BX 皆为目的操作数地址,为寄存器寻址方式。第三条指令中, AX 为目的操作数地址, BX 为源操作数地址。源地址和目的地址皆为寄存器寻址方式。
     执行: 1234H → AX
     5678H → BX
     ( AX ) + ( BX )→ AX
     执行后:( AX ) =68ACH ,( BX ) =5678H 
    3、直接寻址
    指令的地址码部分直接给出的不是操作数,而是操作数的存储器地址,这种方式称为直接寻址方式。根据指令地址码部分给出的直接地址 A 就可以从存储器中读出所需要的操作数。这种寻址方式简单,直观,也便于硬件实现,但是随着计算机的存储器容量不断扩大,所需要的地址码越来越长,势必造成指令的一部分,不能修改,故只能用来访问固定存储器单元。
     汇编格式:①含有变量的地址表达式。
     ②段寄存器名: [EA] 。
     功能:指令下一字单元的内容是操作数的有效(偏移)地址 EA 。
     【例】寄存器和存储器内容为:( AX ) =1212H , BUF 为数据段定义的变量,其偏移地址是 2000H ,( DS ) =3000H ,( 32000H ) =4545H 。
     执行指令: MOV AX , BUF ( MOV AX , [2000H] )
     执行后:( AX ) =?
    执行:( 32000H )→ AX
     执行后:( AX ) =4545H
    4、寄存器间接寻址
      寄存器间接寻址方式中,寄存器的内容为操作数的偏移地址 EA,操作数在存储器中,操作数在存储器中,操作数的有效地址用 SI 、 DI 、 BX 和 BP 等四个寄存器之一来指定。
     汇编格式: [R]
     功能:操作数存放在存储器,寄存器 R 存放操作数的偏移地址 EA 。
     在不使用段超越前缀的情况下,有下列规定:
     若有效地址用 SI 、 DI 和 BX 等之一来指定,则其缺省的段寄存器为 DS ;
     若有效地址用 BP 来指定,则其缺省的段寄存器为 SS( 即:堆栈段 ) 。
     例: 假设有指令: MOV BX,[DI] ,在执行时, (DS)=1000H , (DI)=2345H ,存储单元 12345H 的内容是 4354H 。问执行指令后, BX 的值是什么?
    解:根据寄存器间接寻址方式的规则,在执行本例指令时,寄存器 DI 的值不是操作数,而是操作数的地址。该操作数的物理地址应由 DS 和 DI 的值形成,即:  
PA=(DS)*16+DI=1000H*16+2345H=12345H 。
     偏移地址 EA 计算方法如下:
     EA=[SI] SI 作间址寄存器。
     EA=[DI] DI 作间址寄存器。
     EA=[BX] BX 作间址寄存器。
     EA=[BP] BP 作间址寄存器。
     执行指令: MOV AX , [BP]
     执行后:( AX ) =?
     执行:( 20030H )→ AX
     执行后:( AX ) =1234H
     【例】寄存器和存储器内容分别为:( AX ) =0 ,( BP ) =0030H ,( SS ) =2000H ,( 20030H ) =1234H

看过《80x86寻址方式》的人还看了以下文章:

发表评论

最新评论

电工学习网 ( )

GMT+8, 2023-5-1 23:04

Powered by © 2011-2022 www.shop-samurai.com 版权所有 免责声明 不良信息举报

技术驱动未来! 电工学习网—专业电工基础知识电工技术学习网站。

栏目导航: 工控家园 | 三菱plc | 西门子plc | 欧姆龙plc | plc视频教程

返回顶部