精华内容
下载资源
问答
  • 寄存器相对寻址方式

    千次阅读 2016-08-27 10:35:54
    操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)或变址寄存器(SI、D I)的内容和指令中的8位/16位偏移量之和。其有效地址的计算公式如公式所示。 在不使用段超越前缀的情况下,有下列规定:    若有效...

    操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)或变址寄存器(SI、D

    I)的内容和指令中的8位/16位偏移量之和。其有效地址的计算公式如公式所示。

    在不使用段超越前缀的情况下,有下列规定:
     
        若有效地址用SI、DI和BX等之一来指定,则其缺省的段寄存器为DS;
     
        若有效地址用BP来指定,则其缺省的段寄存器为SS。
     
    指令中给出的8位/16位偏移量用补码表示。在计算有效地址时,如果偏移量是8位,则进行符号扩展成16位。当所得的有效地址超过0FFFFH,则取其64K的模。

    例:假设指令:MOV BX, [SI+100H],在执行它时,(DS)=1000H,(SI)=2345H,内存单元12445H的内容为2715H,问该指令执行后,BX的值是什么?

    解:根据寄存器相对寻址方式的规则,在执行本例指令时,源操作数的有效地址EA为:
     
    EA=(SI)+100H=2345H+100H=2445H
     
    该操作数的物理地址应由DS和EA的值形成,即:
     
    PA=(DS)*16+EA=1000H*16+2445H=12445H。

    所以,该指令的执行效果是:把从物理地址为12445H开始的一个字的值传送给BX。

    其执行过程如图所示。

    展开全文
  • 操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)或变址寄存器(SI、D I)的内容和指令中的8位/16位偏移量之和。其有效地址的计算公式如公式所示。 在不使用段超越前缀的情况下,有下列规定:    若...

    操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)或变址寄存器(SI、D

    I)的内容和指令中的8位/16位偏移量之和。其有效地址的计算公式如公式所示。

    在不使用段超越前缀的情况下,有下列规定:
     
        若有效地址用SI、DI和BX等之一来指定,则其缺省的段寄存器为DS;
     
        若有效地址用BP来指定,则其缺省的段寄存器为SS。
     
    指令中给出的8位/16位偏移量用补码表示。在计算有效地址时,如果偏移量是8位,则进行符号扩展成16位。当所得的有效地址超过0FFFFH,则取其64K的模。

    例:假设指令:MOV BX, [SI+100H],在执行它时,(DS)=1000H,(SI)=2345H,内存单元12445H的内容为2715H,问该指令执行后,BX的值是什么?

    解:根据寄存器相对寻址方式的规则,在执行本例指令时,源操作数的有效地址EA为:
     
    EA=(SI)+100H=2345H+100H=2445H
     
    该操作数的物理地址应由DS和EA的值形成,即:
     
    PA=(DS)*16+EA=1000H*16+2445H=12445H。

    所以,该指令的执行效果是:把从物理地址为12445H开始的一个字的值传送给BX。

    其执行过程如图所示。

    展开全文
  • 寄存器寻址

    万次阅读 2017-04-05 20:24:06
    一、寄存器 总共有14个16位寄存器,8个8位寄存器。   通用寄存器:  数据寄存器:  AH(8位) AL(8位) AX(16位) (AX和AL又称累加器)  BH(8位) BL(8位) BX(16位) (BX又称基址寄存器,唯一作为存储器...

    一、寄存器

    总共有14个16位寄存器,8个8位寄存器。

     

    通用寄存器:

      数据寄存器:

      AH(8位)  AL(8位)  AX(16位)   (AX和AL又称累加器)

      BH(8位)  BL(8位)  BX(16位)   (BX又称基址寄存器,唯一作为存储器指针使用寄存器)  

      CH(8位)  CL(8位)  CX(16位)   (计数器,CX用于字符串操作,控制循环的次数,CL用于移位)

      DH(8位)  DL(8位)  DX(16位)   (数据,DX一般用来做32位的乘除法时存放被除数或者保留余数)

     

      指针寄存器:

      SP 堆栈指针 (存放栈顶地址)

      BP 基址指针 (存放堆栈基址偏移)

     

      变址寄存器:

      主要用于存放某个存储单元地址的偏移,或某组存储单元开始地址的偏移,

      即作为存储器(短)指针使用。作为通用寄存器,它们可以保存16位算术逻辑运算中的操

      作数和运算结果,有时运算结果就是需要的存储单元地址的偏移.

     

      SI 源地址  (源变址寄存器)

      DI 目的地址 (目的变址寄存器)

      

    控制寄存器:

      IP 指令指针

      FLAG 标志寄存器

       ① 进位标志 CF,记录运算时最高有效位产生的进位值。

       ② 符号标志 SF,记录运算结果的符号。结果为负时置1,否则置0。

       ③ 零标志  ZF,运算结果为0时ZF位置1,否则置0。

       ④ 溢出标志 OF,在运算过程中,如操作数超出了机器可表示数的范围称为溢出。溢出时OF位置1,否则置0。

       ⑤ 辅助进位标志 AF,记录运算时第3位(半个字节)产生的进位值。

       ⑥ 奇偶标志 PF,用来为机器中传送信息时可能产生的代码出错情况提供检验条件。当结果操作数中1的个数为偶数时置1,否则置0。

     

    段寄存器

      CS 代码段  IP

      DS 数据段  

      SS 堆栈段  SP BP

      ES 附加段

     

    二、七种寻址方式:

    操作数是指令或程序的主要处理对象。如果某条指令或某个程序不处理任何操作数,那么,该指令或程序不可能有数据处理功能。在CPU的指令系统中,除NOP(空操作指令)、HLT(停机指令)等少数指令之外,大量的指令在执行过程中都会涉及到操作数。所以,在指令中如何表达操作数或操作数所在位置就是正确运用汇编指令的一个重要因素。

    在指令中,指定操作数或操作数存放位置的方法称为寻址方式。操作数的各种寻址方式是用汇编语言进行程序设计的基础,也是本课程学习的重点之一。

    微机系统有七种基本的寻址方式:立即寻址方式、寄存器寻址方式、直接寻址方式、寄存器间接寻址方式、寄存器相对寻址方式、基址加变址寻址方式、相对基址加变址寻址方式等。其中,后五种寻址方式是确定内存单元有效地址的五种不同的计算方法,用它们可方便地实现对数组元素的访问。

    另外,在32位微机系统中,为了扩大对存储单元的寻址能力,增加了一种新的寻址方式——32位地址的寻址方式

    为了表达方便,我们用符号“(X)”表示X的值,如:(AX)表示寄存器AX的值。


    助记图:


    1、立即寻址方式:

    操作数就包含在指令中。作为指令的一部分,跟在操作码后存放在代码段。

    这种操作数成为立即数。立即数可以是8位的,也可以是16位的。

    例如:

        指令: MOV AX,1234H

          则: AX = 1234H

     在汇编语言中,规定:立即数不能作为指令中的第一操作数(目的操作数)。

    2、寄存器寻址方式:

    操作数在CPU内部的寄存器中,指令指定寄存器号。

    对于16位操作数,寄存器可以是:AX、BX、CX、DX、SI、DI、SP和BP等。

    对于8位操作数,寄存器可以是AL 、AH、BL、BH、CL、CH、DL、DH。

    这种寻址方式由于操作数就在寄存器中,不需要访问存储器(比如内存)来取得操作数因而可以取得较高的运算速度。

     

    3、直接寻址方式:

    http://www.cnblogs.com/lilongjiang/archive/2011/06/14/2080551.html

    指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地址,这种寻址方式为直接寻址方式。

    在通常情况下,操作数存放在数据段DS中,所以,其物理地址将由数据段寄存器DS和指令中给出的有效地址直接形成,但如果使用段超越前缀,那么,操作数可存放在其它段。

    例:假设有指令:MOV BX, [1234H],在执行时,(DS)=2000H,内存单元21234H的值为5213H。问该指令执行后,BX的值是什么?

    解:根据直接寻址方式的寻址规则,把该指令的具体执行过程用下图来表示。

    从图中,可看出执行该指令要分三部分:


    由于1234H是一个直接地址,它紧跟在指令的操作码之后,随取指令而被读出;

    访问数据段的段寄存器是DS,所以,用DS的值和偏移量1234H相加,得存储单元的物理地址:21234H;

    取单元21234H的值5213H,并按“高高低低”的原则存入寄存器BX中。

    所以,在执行该指令后,BX的值就为5213H。
     

    由于数据段的段寄存器默认为DS,如果要指定访问其它段内的数据,可在指令中用段前缀的方式显式地书写出来。

    下面指令的目标操作数就是带有段前缀的直接寻址方式。

    MOV ES:[1000H], AX

    直接寻址方式常用于处理内存单元的数据,其操作数是内存变量的值,该寻址方式可在64K字节的段内进行寻址。

    注意:立即寻址方式和直接寻址方式的书写格式的不同,直接寻址的地址要写在括号“[”,“]”内。在程序中,直接地址通常用内存变量名来表示,如:MOV BX, VARW,其中,VARW是内存字变量。

    试比较下列指令中源操作数的寻址方式(VARW是内存字变量):
      MOV AX, 1234H            MOV AX, [1234H] ;                前者是立即寻址,后者是直接寻址 
      MOV AX, VARW           MOV AX, [VARW] ;                两者是等效的,均为直接寻址


    在汇编语言指令中,可以用符号地址代替数值地址

    如:MOV AX,VALUE

    此时VALUE为存放操作数单元的符号地址。

    如写成:MOV AX,[VALUE]也是可以的,两者是等效的。

    如VALUE在附加段中,则应指定段超越前缀如下:

    MOV AX,ES:VALUE 或 MOV AX,ES:[VALUE]

     

    4、寄存器间接寻址方式:

    操作数在寄存器中,操作数有效地址在SI、DI、BX、BP这四个寄存器之一中。在不使用段超越前缀的情况下,如果有效地址在SI、DI和BX中,则以DS段寄存器中的内容为段值。如果有效地址在BP中,则以SS段寄存器中的内容为段值。该寻址方式物理地址的计算方法如下:


    寄存器间接寻址方式读取存储单元的原理如图所示:


    例如:

    MOV AX, [DI]

    如果(DS) = 1000H            (DI) = 2345H

    则物理地址 =  1000H * 16 + 2345H = 12345H

    12345H地址中的内容为:4354H

    执行该指令后,(AX) = 4354H

    如图所示:

     

    5、寄存器相对寻址方式:

    操作数在存储器中,操作数的有效地址是一个基址寄存器(BX、BP)或变址寄存器(SI、DI)的内容加上指令中给定的8位或16位位移量之和。

     

        BX    8位    位移量

    EA(有效地址) =  BP  + 

        SI    16位    位移量

        DI

    在一般情况下,如果SI、DI、或BX中的内容作为有效地址的一部分,那么引用的段寄存器是DS;如果BP中的内容作为有效地址的一部分,那么引用的段寄存器是SS。

     

    物理地址 = 16d × (DS) + (BX) + 8

               或(SI)或16位位移量

               或(DI)

    物理地址 = 16d × (SS) + (BP) + 8位位移量

                           或16位位移量

    在指令中给定的8位或16位位移量采用补码形式表示。在计算有效地址时,如位移量是8位,则被带符号扩展成16位。

    例如:

    MOV AX,[DI+1223H]

    假设,(DS) = 5000H,(DI) = 3678H

    则物理地址 = 50000 + 3678 + 1233 = 5489BH

    5489BH地址中的内容:55AAH

    执行该指令后AX = 55AAH

    下面指令中,源操作数采用寄存器相对寻址,引用的段寄存器是SS: MOV BX,[BP-4]

    下面指令中,目的操作数采用寄存器相对寻址,引用的段寄存器是ES: MOV ES:[BX+5],AL

    指令:MOV AX,[SI+3]与MOV AX,3[SI]是等价的

     

    6、基址加变址寻址方式:

    操作数在寄存器中,操作数的有效地址由:

    基址寄存器之一的内容与变址寄存器之一的内容相加

       BX   SI

    即: EA =    + 

       BP   DI

    在一般情况下,如果BP之内容作为有效地址的一部分,则以SS之内容为段值,否则已DS

    为段值。

    例如:

    MOV AX,[BX][DI]

    如:(DS)=2100H,

       (BX)=0158H,

       (DI)=10A5H

    则EA=0158 + 10A5 = 11FD

    物理地址=21000 + 11FD = 221FDH

    221FDH地址中的内容:1234H

    执行该指令后AX = 1234H

     

    下面指令中,目的操作数采用基址加变址寻址,

    引用的段寄存器是DS: MOV DS:[BP+SI],AL

     

    下面指令中,源操作数采用基址加变址寻址,

    引用的段寄存器ES: MOV AX,ES:[BX+SI]

     

    这种寻址方式使用与数组或表格处理。用基址寄存器存放数组首地址,而用变地寄存器

    来定位数组中的各元素,或反之。由于两个寄存器都可改变,所以能更加灵活地访问数

    组或表格中的元素。

    下面的两种表示方法是等价的:

    MOV AX,[BX+DI]

    MOV AX,[DI][BX]

     

    7、相对基址加变址寻址方式:

    操作数在存储器中,操作数的有效地址由于基址寄存器之一的内容与变址寄存器之一的

    内容及指令中给定的8位或16位位移量相加得到。

             BX    SI    8位

    即: EA =     +     +      位移量

       BP    DI    16位

    在一般情况下,如果BP中的内容作为有效地址的一部分,则以SS段寄存器中的内容为段

    值,否则以DS段寄存器中的内容为段值。

    在指令中给定的8位或16位位移量采用补码形式表示。

    在计算有效地址时,如果位移量是8位,那么被带符号扩展成16位。

    当所得的有效地址操作FFFFH时,就取其64K的模

    例如:

    MOV AX,[BX+DI-2]

    假设,(DS) = 5000H, (BX) = 1223H, DI = 54H, (51275) = 54H, (51276) = 76H

    物理地址= 50000 + 1223 + 0054 + FFFE(-2 各位取反末位加一) = 51275H

    执行该指令后 (AX) = 7654H

     

    相对基址加变址这种寻址方式的表示方法多种多样,以下四种方法均是等价的:

    MOV AX,[BX+DI+1234H], MOV AX,1234H[BX][DI]

    MOV AX 1234H[BX+DI],  MOV AX,1234H[DI][BX]


    http://blog.csdn.net/kisbuddy/article/details/6672340

    http://www.feiesoft.com/asm/03-4.html


    展开全文
  • 2、指令寻址与数据寻址指令寻址思维导图顺序寻址跳跃寻址数据寻址直接寻址间接寻址寄存器寻址寄存器间接寻址隐含寻址立即寻址总结偏移寻址基址寻址变址寻址相对寻址堆栈寻址比较 指令寻址 思维导图 顺序寻址 由于...

    指令寻址

    思维导图

    在这里插入图片描述

    顺序寻址

    在这里插入图片描述

    由于主存按字编址,所以指令地址每次+1;0-1-2-3-4-5-6-7-8

    在这里插入图片描述

    由于指令字长=2B,主存按字节编址,所以每条指令间隔地址为2;此时PC+1实际上是加了俩个地址;

    在这里插入图片描述

    由于采用变长指令字结构,所以指令字长不确定;当读取指令时,先通过操作码判断是几地址指令,然后在将剩余的操作数取出。此时每条地址指令间隔不定。

    跳跃寻址

    在这里插入图片描述

    数据寻址

    在这里插入图片描述

    直接寻址

    在这里插入图片描述

    间接寻址

    在这里插入图片描述

    寄存器寻址

    在这里插入图片描述

    寄存器间接寻址

    在这里插入图片描述

    隐含寻址

    在这里插入图片描述

    立即寻址

    在这里插入图片描述

    总结

    在这里插入图片描述

    偏移寻址

    在这里插入图片描述

    基址寻址

    在这里插入图片描述

    1、用专用的基址寄存器保存程序首地址;或者用通用寄存器指明程序首地址(需要在逻辑地址中取几位指明用哪个通用寄存器作为基址寄存器);
    2、物理地址 = 逻辑地址 + 基址地址

    在这里插入图片描述

    变址寻址

    在这里插入图片描述

    与基址寻址的区别:
    1、基址寄存器只能由操作系统管理用户不能管理;而变址寄存器用户可以管理
    2、变址寄存器中的内容作为偏移量,形式地址作为基地址;(与基址寻址刚好相反)

    在这里插入图片描述
    PS:基址&变址复合寻址
    在这里插入图片描述

    相对寻址

    在这里插入图片描述
    在这里插入图片描述

    1、当程序内代码片段移动时,跳转指令采用直接寻址会出现错误;若采用相对寻址,则不论怎么移动都只与PC有关。
    2、实际位置与PC指针与偏移量有关
    3、硬件如何实现数的“比较”?
    在这里插入图片描述

    堆栈寻址

    在这里插入图片描述

    在这里插入图片描述

    硬堆栈:不需要访存
    软堆栈:每次访问都需要进行访存

    比较

    在这里插入图片描述

    展开全文
  • 基本数据类型 规定 计算机的存是以二进制位表示的信息位数一般是8的倍数 ...Biu 包括一组段寄存器,一个指令指示器, 指令队列,地址产生器和总线控制器 Biu 根据执行部件eu的请求 完成cpu 和...
  • 寄存器与七种寻址方式

    万次阅读 多人点赞 2015-09-15 09:16:09
    一、寄存器 总共有14个16位寄存器,8个8位寄存器   通用寄存器:  数据寄存器:  AH(8位) AL(8位) AX(16位) (AX和AL又称累加器)  BH(8位) BL(8位) BX(16位) (BX又称基址寄存器,唯一作为存储器指针使用寄存器)...
  • 一、立即寻址方式 操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式也就称为立即数寻址方式。 立即数可以是8位、16位或32位,该数值紧跟在操作码之后。如果立即数为16位或32位,那么...
  • 寄存器和8种地址寻址方式

    千次阅读 2017-11-28 17:13:26
    ...段寄存器是因为对内存的分段管理而设置的。...1. 取命令:段寄存器CS指向存放程序的内存段,IP是用来存放下条待执行的指令在该段的偏移量,把它们合在一起可在该内存段内取到下次要执行的指令。
  • 具体操作时的寻址 简单的说就是如何给他地址,是直接给呢还是用寄存器 直接寻址方式(direct addressing) []里没有寄存器 寄存器间接寻址方式(register indirect) []只有一个寄存器 寄存器相对寻址方式(register ...
  • 80x86及Pentium指令系统 位(bit):每一位只有两种状态0或1。计算机能表示的最小数据单位。... 第三步从物理地址指向的单元中取出里面的内容,假如是0A02H,放到IP中,从而使CP:IP指向下一条指令所在的位置1500H:0A02H。
  • 7种寻址方式,以及有效地址计算方法。

    万次阅读 多人点赞 2020-04-20 11:37:57
    七种寻址方式 操作数是指令或程序的主要处理对象。如果某条指令或某个程序不处理任何操作数,那么,该指令或程序不可能有数据处理功能。在CPU的指令系统中,除NOP(空操作指令)、HLT(停机指令)等少数指令之外,大量的...
  • 关键字:32位微处理器、微处理器的功能、通用寄存器、段寄存器、指针寄存器、标志寄存器、数据线及控制信号、地址线及控制信号、系统控制信号、实模式、保护模式:、虚拟8086模式:、实模式下20位物理地址的形成过程。
  • 80x86的寻址方式及Dosbox演示

    千次阅读 2019-03-29 23:21:30
    5、寄存器相对寻址方式 操作数的有效地址为基址寄存器或变址寄存器的内容和指令中指定的位移量之和,所以有效地址由两部分组成。 举个栗子 MOV AX,COUNT[SI] COUNT为16位位移量的符号地址,若(DS) = ...
  • 其实没啥大的关联,只不过寄存器地址和内存的地址都是在CPU的寻址空间中。简单的说寄存器地址指向的就是寄存器,跟其他什么什么的没有关系。访问寄存器的方式和访问内存的方式一样一样的。不过要注意一下,这种...
  • 16位CPU所含有的寄存器有(见图2.1中16位寄存器部分): 4个数据寄存器(AX、BX、CX和DX) ...16位CPU内部有20根地址线,其编码区间为:0000H~FFFFFH,所以,它可直接访问的物理空间为1M(220)字节。 如果用16位寄存器来访..
  • 工作模式 A rm 有 7 种工作模式 : 名称 简称 简介 ...寄存器寄存器总共有 ...个通用寄存器, ...个状态寄存器。...相对寻址     来自为知笔记(Wiz) 转载于:https://www.cnblogs.com/dchipnau/p/5255831.html
  • 内存寻址:逻辑地址到物理地址的转化  在计算机里,内存地址分为虚拟内存地址和物理内存地址。 数据存放在物理内存中,程序运行时使用的是虚拟内存,并通过虚拟内存地址访问数据和代码。 那操作系统是...
  • 汇编语言基础学习笔记(三)—— 寻址方式数据寻址立即数寻址寄存器寻址存储器寻址存储器的直接寻址存储器的寄存器间接寻址存储器的寄存器相对寻址参考 数据寻址 指令由操作码和操作数两部分组成。操作码用助记符...
  • (1)物理地址相关 内存(逻辑存储器):CPU能通过CPU总线直接寻址访问的存储器 这里的内存不特指计算机安装的内存条,而是指所有能被cpu直接寻址访问的存储器。包括内存条、显存和一些ROM 简单说:...
  • 操作数的寻址方式(立即,寄存器,直接)

    万次阅读 多人点赞 2016-09-30 17:41:12
    操作数指参加运算的数据及其所在的单元地址。整条指令以二进制编码的形式存放在存储器中。指令要进行操作,都有相应的数据参加,可是数据在哪里?是什么?都是通过不同的方式来找到的。这就是为什么需要寻址
  • 汇编寄存器寻址方式简介

    千次阅读 2007-12-12 16:05:00
    1 寄存器简介:1)数据寄存器:AX,BX,CX,DX2)段寄存器 DS CS SS ES FS GS DS 数据段(BX,SI,DI) CS 代码段(IP) SS 堆栈段(SP) ES,FS,GS 附加段3) 变址(指示)寄存器:SI,DI 4) 指针寄存器 SP,BP(用在堆栈段) ...
  • 物理地址: 加载到内存地址寄存器中的地址,内存单元的真正地址。在前端总线上传输的内存地址都是物理内存地址,编号从0 开始一直到可用物理内存的最高端。这些数字被北桥(Norbridge chip)映射到实际的内存条上。....
  • 一个存储单元有一个物理地址,还有多个逻辑地址 物理地址: 就是一个存储单元的编号; 每个物理存储单元都有一个20位编号; 8086CPU物理地址范围:00000H~FFFFFH (16进制) (寻址空间:2^20 = 1M)(2^10 = 1024b =...
  • 操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)的值、一个变址寄存器(SI、DI)的值和指令中的8位/16位偏移量之和。其有效地址的计算公式如公式所示。 在不使用段超越前缀的情况下,规定:如果有效地址中含有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,918
精华内容 4,367
关键字:

寄存器相对寻址的物理地址