十三种寻址的整理

从微机原理整理

与操作数有关的寻址地址

1、立即寻址

   立即寻址方式是指在指令中立即给出源操作数的一种寻址方式。立即数可以是8位或16位。如果操作数是16位,按照“低低高高”的原则存放。  汇编语言规定立即数不能作为目的的操作数。该规定与高级语言中“赋值语句的左边不能是常量”的规定相一致。立即寻址方式通过寄存器对单元赋初值。

2、直接寻址方式

  直接寻址方式在指令中直接给出该操作数的有效地址,指令所要的操作数存放在内存中。通常情况下,操作数存放在数据段中,其物理地址由DS和指令中给出的有效地址直接形成,但是如果使用段超越前缀,那么操作数可存放在其他段。

    直接寻址的地址要写在方括号“【】”内。其程序中,直接地址通常用内存变量名来表示,如:MOV BX,VARW  其中,VARW是内存字变量。

3、寄存器寻址方式

  寄存器寻址方式是在指令中给出所使用的寄存器,源操作数存放在寄存器中,或者把目标操作数存入寄存器。寄存器寻址是一种简单快捷的寻址方式,源和目的操作数都可以是寄存器。

  由于指令所需的操作数已经存在寄存器中,或者操作的结果存入寄存器,这样,在指令执行过程中,会减少读/写存储单元的次数,所以使用寄存器寻址方式的指令具有较快的执行速度。通常情况下,在编写汇编语言程序时,应尽可能的使用寄存器寻址方式,但也不要把它绝对化。

   指令中可以引用的寄存器及其符号名称如下:

  八位寄存器有:AH   AL  BH  BL  CH  CL  DH  DL

  16位寄存器:AX  BX  CX  DX  SI  DI  SP  BP

4、寄存器间接寻址方式

  寄存器间接寻址方式是将操作数存放在存储器中,而操作数的有效地址用SI  DI  BX 和BP等四个寄存器之一来指定。该寻址方式的计算方法  书上46页

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

     a段寄存器为DS时,有效地址用SI  DI  BX 之一来指定

     b段寄存器为SS时,有效地址用BP来指定

5、寄存器相对寻址方式

   寄存器相对寻址方式与寄存器间接寻址类似,操作数在存储器中,其有效地址除了一个基址存储器(BX  BP)或变址寄存器(SI DI)的内容外,还要加上指令中的八位/十六位偏移量。其有效地址的计算公式如下:书上46页

  在不使用段超越前缀的情况下,规定同寄存器间接寻址。

6、基址变址寻址方式

  这种寻址方式中,操作数的有效地址是一个基址寄存器(BX、BP)和一个变址寄存器(SI、DI)的内容之和。其有效地址的计算公式  书47页

  在不使用超越前缀的情况下,如果有效地址中含有BP,其默认的段寄存器为SS;否则,其默认的段寄存器为DS。一般在处理数组或表格时可以采用这种寻址方式。用基址寄存器存放数组的首地址,用变址寄存器存放每个数在数组中的相对偏移量,反之亦然。

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

  相对基址变址的操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)的值、一个变址寄存器(SI、DI)的值和指令中的八位/十六位偏移量之和。其有效地址的计算公式  书48页

  在不使用超越前缀的情况下,如果有效地址中含有BP,则默认的段寄存器为SS;否则,其默认的段寄存器为DS。

  从相对基址变址寻址方式来看,由于它可变因素较多,看起来显得复杂,但是正因为其可变因素多,他的灵活性也就很高。

8、隐含寻址方式

  隐含寻址方式是指指令的某个操作数或操作地址隐含在某个通用寄存器或指定的存储器单元中,这时,指令就不必直接给出这一操作数或操作数的地址,以缩短指令的长度。这种方式在字长比较短的微型机或小型机上普遍采用。

 例如,单地址的指令格式,没有在地址段中指明第二操作数地址,而是规定累加寄存器AC作为第二操作数地址,AC对单地址指令格式来说是隐含地址。

与转移地址有关的寻址方式

9、段内直接寻址方式

  这种寻址方式中,指令指明一个八位或者十六位的相对地址位移量DISP(它有正负符号,用补码表示)。此时,转移地址应该是代码寄存器cs内容加上指令指针ip内容,再加上相对地址位移量DOSP。转向的有效地址如图  书50页

  这种方式的转向有效地址用相对于当前ip值的位移量来表示,是一种相对寻址方式。但是当他用于条件转移指令时,位移量只允许八位。无条件转移指令在位移量为八位时称为短跳转。指令的汇编语言格式是

  JMP  NEAR PTR PROGRA

  JMP SHORT QUEST

  其中 PROGRA和QUEST均为转向的符号地址。在机器指令中,如果位移量为十六位,则在符号地址前面加操作符NEAR PTR;如果位移量是八位则在符号地址钱加操作符SHORT

10、段内间接寻址方式

  转移地址的段内偏移地址存放在一个十六位的寄存器中火存储器的两个相邻单元中。存放偏移地址的寄存器和存储器的地址可以用数据寻址方式除立即数以外的任何一种寻址方式取得,所得到的转向的有效地址用来取代ip寄存器的内容,如图 50页

11、段间接地址寻址方式

  在这种寻址方式中,指令中直接给出16位的段地址和16位的段内偏移地址。在执行段间直接寻址指令时,指令操作码后的第二个字将赋予代码段寄存器CS,第一个字将赋予指令指针寄存器IP,就完成了从一个段到另一个段的转移操作操作如图  51页

12段间间接寻址方式

  这种寻址方式和段内间接寻址相似。由于确定转移地址需要32位信息。因此只适用于存储器寻址方式。用这种寻址方式可以计算出存放转移地址的存储单元的首地址,与此相邻的四个单元中,低地址的两个单元存放16位的段内偏移地址;高地址的两单元存放的是16位的段地址  图51页




  

你可能感兴趣的:(十三种寻址的整理)