计算机中十类指令寻址方式总结

数据寻址方式

数据寻址有多种,需要在指令中明确指出采用哪一种寻址方式,可以专门设置一个寻址方式特征字段,或纳入地址码中。

在这里插入图片描述
形式地址 A A A: 指令字中的地址
有效地址 E A EA EA: 操作数的真实地址

有效地址由形式地址根据寻址方式来确定。

在大多数机器中,指令字长 = 存储字长 = 机器字长。


一、立即寻址

又称为立即数寻址,即指令中的形式地址部分不是一个操作数的地址,而是操作数本身,因此该指令的执行过程不需要寻址。

计算机中十类指令寻址方式总结_第1张图片

如指令 " M O V MOV MOV A X , 20 H AX, 20H AX,20H",将 20 H 20H 20H 放入 A X AX AX 寄存器中,其中立即数可正可负,负数需要用补码来表示。

特点

  • 立即寻址的指令执行阶段不访存
  • A 的位数限制了立即数的范围

二、直接寻址

指令中的形式地址部分即为有效地址,即 E A = A EA = A EA=A

例如指令 " M O V MOV MOV A X , [ 20 H ] AX, [20H] AX,[20H]",即是将 [20H] 地址中的数据传输到 AX 寄存器中。

计算机中十类指令寻址方式总结_第2张图片

特点

  • 执行阶段访问一次存储器
  • A 的位数限制了该指令操作数的寻址范围
  • 操作数的地址不易修改

三、隐含寻址

指令中不直接给出操作数地址,操作数地址通常隐含在操作码或某个(约定)寄存器中。

A D D ADD ADD 操作,即是默认另一个操作数在 A C C ACC ACC 中。将 A A A 地址中的数取出与 A C C ACC ACC 中的数进行加法运算。

计算机中十类指令寻址方式总结_第3张图片


四、间接寻址

指令中的形式地址不是操作数的地址,而是 “操作数地址的地址”。

计算机中十类指令寻址方式总结_第4张图片

其中在多次间址时,需要查看数据单元格中的第一位数据,如果为 1 1 1 则表示继续间址,如果为 0 0 0 则为真正地址。

特点

  1. 可以扩大寻址范围
  2. 便于编制转移程序

计算机中十类指令寻址方式总结_第5张图片

J M P JMP JMP @ A @A @A 指令,表示跳转到 A A A 单元中所指示的地址,为间接寻址。正因为这条间址指令,我们转入子程序时只需修改 A 单元中数据,即可实现从子程序再跳转回主程序的功能。


五、寄存器寻址

指令中的形式地址直接指出寄存器的编号,操作数存储于寄存器中,即 E A = R i EA=R_i EA=Ri,有效地址即为寄存器编号。

如 " M O V MOV MOV A X , B X AX, BX AX,BX" 指令,即是将 B X BX BX 寄存器中的数据送到 A X AX AX 中。

计算机中十类指令寻址方式总结_第6张图片

特点

  • 执行阶段不访存,只访问寄存器,执行速度快
  • 寄存器个数有限,可缩短指令字长

六、寄存器间接寻址

指令中的形式地址为寄存器的编号,寄存器的内容是操作数的有效地址。

E A = ( R i ) EA = (R_i) EA=(Ri),有效地址在寄存器中。

如指令 " M O V MOV MOV A X , [ B X ] AX, [BX] AX,[BX]",就是根据 B X BX BX 寄存器中的地址,去主存中访问对应数据,并将数据存入 A X AX AX 寄存器中。

计算机中十类指令寻址方式总结_第7张图片

特点

有效地址在寄存器中,操作数在存储器中,执行阶段访存便于编制循环程序。

  • 可以访存一次,就将寄存器数值加1,实现类似于数组的访问。

七、基址寻址

指令中的形式地址与基址寄存器内容之和为有效地址。

  1. 采用专用寄存器作为基址寄存器(隐式)
  2. 采用通用寄存器作为基址寄存器(显式)

专用寄存器基地寻址

E A = ( B R ) + A EA=(BR)+A EA=(BR)+A,其中 B R BR BR 为基址寄存器

计算机中十类指令寻址方式总结_第8张图片

通用寄存器基址寻址

需要给出寄存器编号作为基址寄存器。

计算机中十类指令寻址方式总结_第9张图片

  • 可指定由哪个通用寄存器作为基址寄存器。
  • 在程序的执行过程中 R 0 R_0 R0 内容不变,形式地址 A A A 可变。

特点

  • 可扩大寻址范围
  • 有利于多道程序
    • 将程序开头地址定位于某个寄存器中,即可实现更换通用寄存器,即实现程序切换。
  • 基址寄存器内容由操作系统或管理程序确定

八、变址寻址

指令中的形式地址与变址寄存器内容之和为有效地址。

E A = ( I X ) + A EA = (IX) + A EA=(IX)+A,与基地寻址非常相似。唯一的不同点在于基址寄存器中的值由操作系统或管理程序决定,而 IX 的内容由用户指定。

计算机中十类指令寻址方式总结_第10张图片

特点

  • 可以扩大寻址范围
  • 由于 I X IX IX 的内容由用户指定,因此在程序执行过程中, I X IX IX 内容可变,可以用于设计处理一些数组问题。

九、相对寻址

有效地址为程序计数器 P C PC PC 的值与形式地址之和。

E A = ( P C ) + A EA = (PC) + A EA=(PC)+A A A A 的位数决定操作数的寻址范围,可编写浮动程序(程序放哪都能执行)。

计算机中十类指令寻址方式总结_第11张图片


十、堆栈寻址

堆栈有两个操作,分别是 P U S H PUSH PUSH(压栈) 与 P O P POP POP(弹栈)。进栈与出栈的操作分别由 S P SP SP 指针的加减完成。

计算机中十类指令寻址方式总结_第12张图片

参考资料: MOOC

你可能感兴趣的:(#,计算机系统及组成原理,指令寻址方式,立即寻址,直接寻址,间接寻址,寄存器寻址)