精华内容
下载资源
问答
  • 寄存器间接寻址(register indirect addressing) 操作数在存储器中,其有效地址EA存放在某个寄存器中。寄存器的使用在16位寻址和32位寻址时不一样。 (1)16位寻址 寄存器 有效地址存放在SI, DI, BX, BP中。 如果...
  • 寄存器间接寻址方式

    千次阅读 2016-08-27 10:21:05
    操作数在存储器中,操作数的有效地址用SI、DI、BX和BP等四个寄存器之一来指定,称这种寻址方式为寄存器间接寻址方式。该寻址方式物理地址的计算方法如下: 寄存器间接寻址方式读取存储单元的原理如图所示。 ...

    操作数在存储器中,操作数的有效地址用SI、DI、BX和BP等四个寄存器之一来指定,称这种寻址方式为寄存器间接寻址方式。该寻址方式物理地址的计算方法如下:



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

    在不使用段超越前缀的情况下,有下列规定:

    若有效地址用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。

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

    其执行过程如图所示。

    展开全文
  • 存储器寻址方式:( 直接寻址方式,寄存器间接寻址方式,变址和基址寻址方式,基址变址寻址方式) 串操作寻址方式 I/O端口寻址方式8086采用的是变字长指令格式,指令长度为1~6个字节,第一个字节包含操作码,第二...

    寻找操作数地址的方法

    共有八种:
    寄存器寻址方式
    立即数寻址方式
    存储器寻址方式:( 直接寻址方式,寄存器间接寻址方式,变址和基址寻址方式,基址变址寻址方式)
    串操作寻址方式
    I/O端口寻址方式

    8086采用的是变字长指令格式,指令长度为1~6个字节,第一个字节包含操作码,第二个字节通常表示寻址方式,第三个到第六个字节表示位移量,立即数。

    1,寄存器寻址方式:指令所需的操作数在寄存器中,按指令给出的寄存器地址去获取操作数
    指令代码: 操作码 REG (RI操作数)
    在汇编指令中,寄存器地址直接用寄存器名表示
    2,立即数寻址方式
    指令所需的操作数直接在指令代码中,随着取指令一起取到BIU的指令队列中。
    执行速度快,常用来提供常数这里写图片描述
    这里写图片描述
    在汇编指令中,立即数只能作为源操作数
    在宏汇编中,字符常量的存取 MOV AH,’A’
    字符串常量的存取 MOV DX,”AB”

    3,存储器寻址方式
    以下几种寻址方式,操作数在存储器中。
    汇编中,存储单元地址使用逻辑地址: 段基值:偏移量
    存储器寻址方式:形成操作数逻辑地址的偏移量
    有效地址: 按指令中存取器寻址方式计算,得到的偏移量称为有效地址EA
    有效地址EA是三个地址分量的某种组合:
    (1)位移量:指令代码中的一个8/16位二进制数
    (2)基地址:BX或BPD的内容
    (3)变址量:SI或DI的内容

    根据三个地址分量的不同组合,有4中不同的存储器寻址方式:
    a 直接寻址方式:指令中所需要的操作数直接放在存储器中,操作数的有效地址为有指令代码中的位移量提供
    这里写图片描述
    直接寻址方式可用数值地址或符号地址来表示:
    I 数值地址:MOV BX,[1000H]
    指令中也可以指定跨越前缀来取得其他段中的数据。
    这里写图片描述
    数值地址表示IDE直接寻址方式
    II 符号地址 要区分是字或字节地址
    MOV BX, VAR这里写图片描述
    符号地址表示的直接寻址方式
    MOV DAB,0FH;DAB是字节地址
    MOV CL ,DAB+3
    上述2条指令分别等价于:
    MOV DS:DAB,0FH
    MOV CL,DS:DAB+3

    MOV AX,ES:DAW;DAW是字地址
    b,寄存器间接寻址方式:指令所需的操作数在存储器中,操作数的有效地址EA 直接从SI,DI,BX,BP中获得
    这里写图片描述
    使用SI,DI,BX间接寻址时,隐含使用DS;
    BP间接寻址,则隐含使用SS
    MOV CH,[SI] = MOV CH,DS:[SI]
    MOV [DI],AX = MOV DS:[DI],AX
    MOV AL,[BX] = MOV AL,DS:[DX]
    MOV [BP],DX = MOV SS:[BP],DX
    寄存器间址可用来访问表,一位数组中的元素

    c,变址寻址和基址寻址方式:指令所需的操作数在存储器中,操作数的有效地址EA是两个地址分量之和
    这里写图片描述
    变址寻址:操作数的EA是SI或者DI内容与位移量之和
    基址寻址:操作数的EA是BX或BP内容与位移量之和
    变址或基址使用SI,DI,BX址时,隐含使用DS;
    BP间接寻址,则隐含使用SS
    MOV CH,10H[SI] = MOV CH,DS:10H[SI]
    MOV TAB[DI],AX = MOV DS:TAB[DI],AX
    MOV AL,ARY[BX] = MOV AL,DS:ARY[DX]
    MOV STR[BP],DX = MOV SS:STR[BP],DX
    用基址变址寻址方式可以方便的访问二维数组
    位移量 数组首地址
    基址寄存器 数组元素行址
    变址寄存器 数组元素列址
    这里写图片描述

    段基值 —-隐含有SS提供

    用基址变址寻址方式访问二维数组
    MOV AL, ARRAY[BP][SI]
    这里写图片描述

    存储器操作数寻址方式地址计算小结:这里写图片描述

    4,串操作寻址方式
    数据段中的源串有效地址隐含由SI提供,附加段中的目的串有效地址隐含由DI提供
    SI => 源串有效地址EA
    DI =>目的串有效地址EA
    没完成一次串操作,指令按标志位DF自动修改SI/DI,使其指向下一个串元素的存储单元:
    如:DF = 0,每完成一次字节串操作,SI/DI自动增量1
    如:DF = 1,每完成一次字节串操作,SI/DI自动减量1

    5,I/0端口寻址方式

    展开全文
  • 计算机中程序是由按一定顺序排列的一系列指令,通常一条指令包括两方面的内容:操作码和操作数,操作码决定要完成的操作,告诉计算机要干什么;...寻找指令中所需要的操作数或操作数地址的方式称为寻址方式。

    计算机中程序是由按一定顺序排列的一系列指令,通常一条指令包括两方面的内容:操作码和操作数,操作码决定要完成的操作,告诉计算机要干什么;操作数指参加运算的数据及其所在的单元地址。整条指令以二进制编码的形式存放在存储器中。指令要进行操作,都有相应的数据参加,可是数据在哪里?是什么?都是通过不同的方式来找到的。这就是为什么需要寻址。

    寻找指令中所需要的操作数或操作数地址的方式称为寻址方式。80486指令系统的寻址方式包括三种类型:操作数寻址、转移地址寻址及I/O端口寻址。其中操作数寻址有七种。

    接上一篇博客:http://blog.csdn.net/tsj11514oo/article/details/52712103

    4.寄存器间接寻址(register indirect addressing)

    • 操作数在存储器中,其有效地址EA存放在某个寄存器中。寄存器的使用在16位寻址和32位寻址时不一样。

    (1)16位寻址

    寄存器

    有效地址存放在SI, DI, BX, BP中。
    如果指令中指定的寄存器是BX, SI, DI,则操作数在数据段中,段基址在DS中,操作数的物理地址为:

    SI:是源变址寄存器,默认段地址和DI一样,在DS中.和DS联用
    DI:是目的变址寄存器.一般情况下与ds联用,来确定某个储存单元的地址
    BX:基址寄存器,常用来存放访问内在时的基地址
    BP:是基址指针,段地址默认在SS中.可以定位物理地址,比如:”mov ax,[bp+si+6]/mov ax,[bp+di+6]

    SS: 堆栈段地址 ,指出当前堆栈的底部地址,即存放堆栈段的段基值。一旦你确定了堆栈地址,ss也不能随便改变了
    DS:数据段寄存器,指出当前程序使用的数据所存放段的最低地址,即存放数据段的段基值

    物理地址

    在一般情况下,如果有效地址在SI、DI和BX中,则以DS段寄存器的内容为段值;
    这里写图片描述

    如果有效地址在BP中,或者是说是指令中指定的寄存器是BP,则操作数在堆栈中,段基址在SS中(SS段寄存器的内容为段值。),操作数的物理地址为:

    物理地址=(SS)×16+(BP)

    例如:

    • MOV AX, [SI] ; 自动引用DS作为段寄存器,以DS段寄存器的内容为段值

      • 假设 (DS)= 5000H, (SI)= 1234H

      • 注意,在汇编语言中,带方括号“[ ]”的操作数表示存储器操作数,括号中的内容作为存储单元的有效地址EA。

      • 若有效地址用SI、DI和BX等之一来指定,则其缺省的段寄存器为DS。
      • 寄存器SI的值不是操作数,而是操作数的地址(有效地址)。该操作数的物理地址应由DS和SI的值形成。

      • 物理地址=(DS)×16+(SI)=50000H+1234H=51234H。那么存储的物理存储单元地址是51234H。
        再设该字存储单元的内容是6789H,那么在执行该指令后,(AX)= 6789H。

    • MOV DL, CS:[BX] ; CS作为段寄存器

      • 指定段超越前缀,此时引用的段寄存器是CS而不是自动引用了DS
      • 目的操作数显式指定的段寄存器为CS
      • 目的操作数的物理地址PA = CS * 16+BX
      • DL的值为该地址单元中存放的字类型数据
    • MOV AX, [BP] 引用的段寄存器为SS

      • 设SS=3000H,BP=1000H该指令寻址及执行过程如图所示。

      图3.4 MOV AX, [BP] 指令的寻址及执行过程

      • 目的操作数的物理地址PA =(SS)×16+(BP)=30000H+1000H=31000H
      • 把从物理地址为31000H开始的对应的一个字的值传送给AX寄存器。

    (2)32位寻址

    寄存器

    • 八个32位通用寄存器均可作为寄存器间接寻址使用。除ESP和EBP默认段寄存器为SS外,其余六个通用寄存器均默认段寄存器为DS。
    • 32位cpu通用寄存器: EAX,EBX,ECX,EDX,ESI,EDI(缺省为DS)/EBP,ESP(缺省默认为SS)

    物理地址

    **物理地址=(DS/SS)×16+(EAX/EBX/ECX/EDX/ESI/EDI/EBP/ESP)**
    

    寄存器间接寻址方式用于表格处理,执行完一条指令后,只需要修改寄存器内容就可取出表格中的下一项。

    对比寄存器(直接)寻址和寄存器间接寻址:

    对比项 寄存器(直接)寻址 寄存器间接寻址
    含义 指令中指出暂存操作数的寄存器 指令中指明存放操作数偏移地址(有效地址)的寄存器
    使用情况 当操作数在寄存器中使用 当操作数地址在寄存器中使用
    寄存器的内容 操作数 操作数地址
    表示形式 MOV AX, 1234h;ADD VARD,EAX;MOV AX, BX MOV AX,[BX]

    5.基址寻址(based relative)

    • 基址寻址是将CPU中的基址寄存器的内容加上指令格式中的形式地址形成操作数的有效地址。将基址寄存器的内容作为基准地址。而指令的形式地址作为修改量。同形式地址相比,可以灵活设置基址寄存器的位数。
    • 操作数在存储单元中,操作数的有效地址EA由基址寄存器的内容和指令中给出的位移量之和算出。

    格式:

    优点

    可以扩大寻址能力,便于访问二维数组中某类指定的元素。解决程序的动态定位问题。

    基址寄存器

    (1)采用专用寄存器作基址寄存器

    EA=(BR)+A
    BR为基址寄存器
    

    这里写图片描述
    执行过程中BR内容不变,形式地址A可变

    (2)采用通用寄存器作基址寄存器

    这里写图片描述

    用户指定那个通用寄存器为基址寄存器
    基址寄存器的内容有操作系统确定
    执行过程中R0内容不变,形式地址A可变

    (1)16位寻址

    BX和BP作为基址寄存器。BX以DS作为默认段寄存器,BP以SS为默认段寄存器。位移量可以是8位或16位。

    EA=(BX或BP)+位移量(8或16位)
    EA:有效地址
    例如:MOV BX, [SI+100H]

    (2)32位寻址

    八个32位通用寄存器均可作为基址寄存器,其中ESP, EBP以SS为默认段寄存器,其余均以DS为默认段寄存器。位移量为8位或32位。
    EA=(基址寄存器)+位移量(8位或32位)

    6.间址寻址()(indexed relative)

    间址寄存器

    间址寄存器通常都用来意指由一个指令之输出或输入可以直接索引到的暂存器群组。更适当的是称他们为 “架构寄存器”。

    间址寻址中,有效地址的计算公式如下:

    EA=(间址寄存器)+位移量(8位或32位)

    (1)16位寻址

    仅SI和DI可作为间址寄存器,默认DS为段基址寄存器。

    (2)32位寻址

    除ESP外的其他七个32位的寄存器均可作为间址寄存器,EBP默认SS作为段基址寄存器,其余以DS作段基址寄存器。

    基址寻址和间址寻址适用于对一维数组的数组元素进行检索操作。常用位移量表示数组起始地址的偏移量,基址/间址寄存器表示数组元素的下标,可通过修改下标来获取数组元素的值。

    7.比例间接寻址(proportion indirect addressing)

    比例间接寻址中有效地址的计算公式如下:

    EA=(间址寄存器)×比例因子(2, 4或8)+位移量(8位或32位)

    比例间接寻址方式只适用于32位寻址。

    例如:MOV EAX,TABLE[ESI×4]

    其中:TABLE为位移量,4是比例因子,ESI乘以4的操作在CPU内部完成。

    展开全文
  • 最近学8086汇编,被各种各样的寄存器和寻搞疯了,总结一下

    最近学8086汇编,被各种各样的寄存器和寻址方式搞疯了,总结一下


    8086共有14个寄存器,每个寄存器都是16位,可以分为通用寄存器,段寄存器,控制寄存器三大类


    通用寄存器(8个):

    AX,BX,CX,DX为数据寄存器

    AX             累加寄存器

    BX             基址寄存器

    CX            计数器寄存器

    DX            数据寄存器

    SI,DI为变址寄存器

    SI              源变址寄存器

    DI             目的变址寄存器

    SP,BP为指针寄存器

    SP            堆栈指针寄存器

    BP            基址指针寄存器


    段寄存器(4个)

    DS           数据段寄存器

    CS           代码段寄存器

    SS           堆栈段寄存器

    ES           附加段寄存器


    控制寄存器(2个)

    IP             指令指针寄存器

    FLAG       标志寄存器


    接下来就是80x86的寻址方式了,比较多,有7种。。。。。

    1.立即数寻址方式(不需要段寄存器):寻址操作数直接出现在指令中的寻址方式

    mov al,05h

    2.寄存器寻址方式(不需要段寄存器):寻址操作数存放在CPU内部的寄存器中的寻址方式

    mov ax,bx

    3,直接寻址方式(需要段寄存器):寻址操作数放在存储器中,操作数有效地址EA有指令直接给出的寻址方式,即mov ax,[EA]

    mov ax,[3700H]   其默认的段地址为DS,也可以加以说明,比如

    mov ax,es[3700H]

    4.寄存器间接寻址方式(需要段寄存器):寻址操作数的有效存放在寄存器中的寻址方式

    mov ax,[bx]          其默认的段地址为DS,也可以加以说明,比如

    5.寄存器相对寻址方式(需要段寄存器):寻址操作数由存放EA的寄存器与指令中指示的8为或16位立即数构成的寻址方式,存放EA的寄存器可以有SI,DI,BX,BP

    mov al,[bx+0400h]  其默认的段地址为DS

    6.基址变址寻址方式(需要段寄存器):寻址操作数由一个基址寄存器内容和一个变址寄存器的内容之和的寻址方式

    mov ax,[bx+di]  其默认的段地址为DS

    7.相对基址变址寻址方式(需要段寄存器):寻址操作数有一个基址寄存器内容,一个变址寄存器内容以及指令中给出的立即数作为偏移量

    mov ax,[bx+si+0400H]  其默认的段地址为DS



    好吧,总算完了,但是还有一些寄存器的组合可能不能使用,之后再写吧



    展开全文
  • 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) ...
  • 寄存器寻址

    万次阅读 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又称基址寄存器,唯一作为存储器...
  • 寄存器寻址方式

    千次阅读 2011-02-28 18:57:00
    寄存器寻址方式  寄存器,在8086/8088里,有三组共13个16位寄存器.  寄存器,从名字上看,可以知道,它就象书店的行包寄存处,寄存器的名字就象寄存处发给用户取回自已物件的标志牌子,表示物件的存放...
  • 立即寻址,直接寻址,间接寻址

    万次阅读 多人点赞 2017-04-10 23:17:40
    间接寻址就只指令中存放的是地址的地址,或者是存放地址的寄存器,最慢。 总共有14个16位寄存器,8个8位寄存器   通用寄存器:  数据寄存器:  AH(8位) AL(8位) AX(16位) ...
  • 1.立即寻址 操作数=A,操作数在指令码中。 2.寄存器寻址 EA=R,操作数在寄存器中。...EA=A+(R)是直接寻址和寄存器间接寻址方式的结合 ①相对寻址 ②基址寻址 ③*变址寻址 7.隐含寻址 8.段寻址 7.堆栈寻址 ...
  • 堆栈寻址的命令LDMFA/STMFA、LDMEA/STMEA、LDMFD/STMFD、LDMED/STMED。...(另有,LDR寄存器间接寻址 也是装载r2内容作指针指向的内存到R1,如:LDRR1,[R2] )  STM:一次存储多个,这里用来入栈。(另有,ST
  • 七种寻址方式(立即寻址寄存器寻址)

    万次阅读 多人点赞 2016-10-04 10:24:34
    七种寻址方式(立即寻址寄存器寻址) 一、立即寻址方式 操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式也就称为立即数寻址方式。 立即数可以是8位、16位或32位,该数值...
  • 间接寻址就只指令中存放的是地址的地址,或者是存放地址的寄存器,最慢。总共有14个16位寄存器,8个8位寄存器通用寄存器: 数据寄存器: AH(8位) AL(8位) AX(16位) (AX和AL又称累加器) BH(8位) BL(8位) BX(16位) (BX又...
  • ARM寻址方式

    2020-05-17 22:25:28
    寄存器间接寻址4. 寄存器偏移寻址5. 寄存器基址变址寻址 所谓寻址方式就是处理器根据指令中给出的地址信息来寻找物理地址的方式。 ARM处理器的寻址方式 目前ARM处理器支持9种寻址方式,分别是立即数寻址、寄存器...
  • 寄存器与七种寻址方式

    万次阅读 多人点赞 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又称基址寄存器,唯一作为存储器指针使用寄存器)...
  • 将CL送到EA为DA+3,段基值为DS的存储单元中 3.3.1寄存器间接寻址: 操作数的有效地址EA直接从寄存器(BX、BP、SI、SD之一)中获得。 存放操作数有效地址的寄存器必须用[]括起来,表示寄存器内容为操作数的地址分量。...
  • 寻址模式寄存器

    2019-10-01 07:00:10
    一、寄存器 总共同拥有14个16位寄存器,8个8位寄存器 通用寄存器: 数据寄存器: AH(8位) AL(8位) AX(16位) (AX和AL又称累加器) BH(8位) BL(8位) BX(16位) (BX又称基址寄存器,唯一作为存储器指针使用寄存器) ...
  • 寄存器操作数的寻址方式

    千次阅读 2014-04-10 13:55:31
    有效地址EA可直接由偏移地址得到。 (1) 用常数表示。 MOV AX , DS : [100H] 该指令把当前数据量便宜100H的数字存储单元的数据送至AX。用常数表示时,段寄存器必须指明,不能缺省。 (2) 用变量名表示。 M
  • 文章目录8086x8088指令系统8086x8088指令格式8086x8088寻址方式规定操作数的方法数据寻址方式立即寻址示例寄存器寻址示例直接寻址示例寄存器间接寻址示例寄存器相对寻址示例:基址变址且相对寻址示例隐含寻址示例...
  • 汇编7种寻址方式

    2020-06-15 16:36:25
    8086/8088有7种基本的寻址方式:立即寻址,寄存器寻址,直接寻址,寄存器间接寻址,寄存器相对寻址,基址变址寻址,相对基址变址寻址。
  • 8086中的七种寻址方式

    2016-10-16 12:01:00
    8086/8088有七种基本的寻址方式:立即寻址,寄存器寻址,直接寻址,寄存器间接寻址,寄存器相对寻址,基址变址寻址,相对基址变址寻址。 其中,后五种寻址方式(即直接寻址、寄存器间接寻址、寄存器相对寻址、基址...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,199
精华内容 879
关键字:

寄存器间接寻址ea