您的位置 首页 动态

8086寻址方法

BTW–符号的说明:PA表示某一存储单元的物理地址EA表示某一存储单元的有效地址(地址)表示地址的内容[地址]表示地址的内容为偏移地址DEST表

BTW–符号的阐明:

PA表明某一存储单元的物理地址
EA表明某一存储单元的有用地址
(地址)表明地址的内容
[地址]表明地址的内容为偏移地址
DEST表明意图地址,即意图操作数寄存的偏移地址
SOUR表明源地址,即源操作数寄存的偏移地址
表明传送。如:(AX)-BX表明把AX的内容传送给BX
?逻辑与
?逻辑或
逻辑异或
—-上划线表明逻辑非
____下划线表明从键盘输入
或许
Flags表明状况寄存器

8086和8088 CPU就功用而言可分红两大部分:总线接口单元BIU(Bus Inte***ce Unit)和履行单元EU(Execution Unit)

EU首要完成两种操作:一是依据指令进行算术逻辑运算。二是由核算出指令要求寻址单元地址偏移量,以构成一个20位物理地址,去存取器存取所要求的操作数。
BIU首要担任80868088 CPU与存储器和外设之间的信息传送,BIU用来完成EU一切总线操作。
在EU履行指令的过程中,BIU担任从内存指定区域取出传送给EU部分去履行。在履行指令时,所需的操作数也是由BIU从内存指定区域取出传送给EU部分履行。

与数据有关的寻址办法

1 当即寻址办法(Immediate addressing)

当即数可所以8位的或16位的。假如是16 位数,则高位字节寄存在高地址中,低位字节寄存在低地址中,假如是32 位数,则高位字在高地址中,低位字在低地址中。

  当即寻址办法常用于给寄存器赋初值,而且只能用于源操作数字段,不能用于意图操作数字段。

例 MOV AL, 9
         指令履行后,(AL)= 09H

例 MOV AX, 3064H
         指令履行后,(AX)= 3064H

留意:不能直接给段寄存器和标志寄存器赋予当即数。

     明显,下面的指令是过错的:
     MOV DS, 1250H

2 寄存器寻址办法(Register addressing)

  关于16位操作数,寄存器可所以AX、BX、CX、DX、SI、DI、SP、BP、CS、DS、ES和SS;关于8位操作数,寄存器可所以AL、AH、BL、BH、CL、CH、DL、DH。因为操作数就在寄存器中,指令履行时不需要拜访存储器,因而这是一种快速的寻址办法。

例 MOV  AX, BX
          如指令履行前(AX)= 1234H,(BX)= 5678H;
          则指令履行后(AX)= 5678H,(BX)坚持不变。

  留意:源寄存器和意图寄存器的位数有必要共同。

  例如:MOV CL, BX是一条过错指令。

  除上述两种寻址办法外,下面五种寻址办法的操作数都在除代码段以外的存储区中。
  这儿先引进有用地址EA(Effective Address)的概念:在8086里,把操作数的偏移地址称为有用地址,下面五种核算EA的办法表现了五种寻址办法。

3 直接寻址办法(Direct addressing)

  在这种寻址办法中,操作数寄存在存储单元中,而这个存储单元的有用地址就在指令的操作码之后,操作数的物理地址可经过((DS)×16)再加上这个有用地址构成。
  
  在汇编语言指令中,能够用符号地址(变量名或标号)替代数值地址。
  例如: MOV AX, DATA
    或 MOV AX, [DATA]
    这儿DATA是寄存操作数单元的符号地址。

  直接寻址办法默许操作数在数据段中,假如操作数界说在其它段中,则应在指令中指定段跨过前缀。
  例如: MOV AX, ES:NUMBER
    或 MOV AX, ES:[NUMBER]
    这儿NUMBER是附加段中的字变量。

  直接寻址办法适合于处理单个变量。

例 MOV AX, [2000H]
         假如(DS)= 3000H,则履行情况如图3.2所示。
         最终的履行成果为(AX)= 3050H。

4 寄存器相对寻址办法(Register indirect addressing)

  这种寻址办法经过基址寄存器BX、BP或变址寄存器SI、DI与一个位移量相加构成有用地址,核算物理地址的缺省段仍然是SI、DI和BX为DS,BP为SS。  

  寄存器相对寻址办法也能够运用段跨过前缀。
  例如:MOV AX, ES:[DI+10]

  这种寻址办法相同可用于表格处理。
  表格的首地址可设置为位移量,修正基址或变址寄存器的内容获得表格中的值。

例 MOV AX, COUNT[SI](也可表明为MOV AX, [COUNT+SI])
        其间COUNT为16位位移量的符号地址。
        假如 (DS)= 3000H,(SI)= 2000H,COUNT = 3000H

        则物理地址 = 30000H + 2000H + 3000H = 35000H
        指令履行情况如图3.4所示,最终的履行成果是(AX)= 1234H。

5 基址变址寻址办法(Based indexed addressing)

  这是一种基址加变址来定位操作数地址的办法,也就是说,操作数的有用地址是一个基址寄存器(BP或BX)和一个变址寄存器(SI或DI)的内容之和。如基址寄存器为BX时,与DS构成的物理地址指向数据段;如基址寄存器为BP时,与SS构成的物理地址指向仓库段。如左图所示。  

  此种寻址办法也可运用段跨过前缀。
  例如:MOV AX, ES:[BX][SI]

  留意:一条指令中一起运用基址寄存器或变址寄存器是过错的。
  例如:MOV CL, [BX+BP] 或 MOV AX, [SI+DI] 均为不合法指令。

  这种寻址办法相同适用于数组或表格处理。
  首地址可寄存在基址寄存器中,而用变址寄存器来拜访数组中的各个元素。因为两个寄存器的值都能够修正,所以它比寄存器相对寻址办法愈加灵敏。

例 MOV AX, [BX][DI] (或写为 MOV AX, [BX+DI])
        如 (DS ) = 2100H,(BX)= 0158H,(DI)= 10A5H
        则 EA = 0158H +10A5H = 11FDH

        物理地址 = 21000H +11FDH = 221FDH
        指令履行情况如图3.5所示,最终的履行成果是(AX)= 1234H。

6 相对基址变址寻址办法(Relative based indexed addressing)

  这种寻址办法与基址变址寻址办法相似,不同的是基址加变址再加上一个位移量构成操作数的有用地址。缺省段的运用仍然是DS与BX组合,SS与BP组合。  

  这种寻址办法一般用于对二维数组的寻址。
  例如,存储器中寄存着由多个记载组成的文件,则位移量可指向文件之首,基址寄存器指向某个记载,变址寄存器则指向该记载中的一个元素。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/dongtai/256946.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部