改变执行顺序的寻址

(3)改变执行顺序的寻址

当执行了转移类指令,如条件转移、无条件转移或转子程序指令时,当有外部中断发生时,若CPU响应,则会转去执行中断服务程序。这些都需要改变程序的执行顺序,所以程序计数器中的“十1”内容也就失去了作用,必须更新。

①直接寻址

它的指令格式是:

操作码(OP)

(转移)地址码

其操作码为某种转移类指令。在直接寻址方式中,地址码为绝对转移地址,所给出的地址码是指令存储的物理地址。取指结束后,操作码送往指令寄存器,转移地址码直接送入程序计数器,原程序计数器(已加1)的内容被冲掉,当在进行后继指令取指时则从新地址开始,从而实现了程序执行顺序的转移。转移过程如图27所示。

②间接寻址

间接寻址与直接寻址的相同之处均是绝对转移,不同的是转移地址不是由指令的地址码直接给出的。间接寻址有两种形式:一是转移地址在存储器某地址单元中:另一种是转移地址在CPU的某个寄存器中。

前者的指令格式如下所示:

操作码(OP)

地址码

指令的执行过程是,在取指令时将地址码送到CPU中的地址寄存器中,在执行指令时再进行一次访内操作,即按指令给出的地址码从存储器取出内容并将其送到CPU的程序计数器中,原程序计数器(已加1)的内容被冲掉,当进行后继指令取指时则从新地址开始,从而实现了程序执行顺序的转移。转移过程如图2.8(a)所示。后者的指令格式如下所示:

操作码(OP)

对于寄存器间接寻址,在指令格式中并不直接表示出来,主要因寻址寄存器的编码短,可以在操作码中给出。这时把由操作码指示的某寄存器中的转移地址码送入程序计数器,原程序计数器(已加1)的内容被冲掉,当进行后继指令取指时则从新地址开始,从而实现了程序执行顺序的转移。转移过程如图2.8(b)所示。

③相对寻址

相对寻址的指令格式如下所示:

操作码(OP)

地址码(位移量)

相对寻址是指程序的转移地址以当前的指令地址为基准再加上一个有符号的位移量,将运算结果送入程序计数器中,从而实现程序的控制转移。转移过程如图2.9所示。

这种寻址方式的主要特点是,程序计数器指示的是现行指令地址,而指令中的位移量指出的是转移地址与PC内容之间的相对距离。当指令地址变化时,由于其位移量不变,使得转移地址与指令在可用的存储区内一起移动,所以仍能保证程序的正确执行。这样,整个程序模块就可以安排在主存中的任意区间执行。这是很有实用价值的,因此转移类指令常采用相对寻址方式。

应该注意两点,一是位移量为有符号数,并用补码表示。当其为正时,程序向存储器的高端转移,若为负,向低端转移;另一点是,由于在执行本指令时,程序计数器已经被修改为下条指令的地址,所以会发生转移偏差。若使用汇编程序对汇编语言源程序进行汇编,那么汇编程序会自动校正,但在手工汇编时必须注意这一点。

④中断寻址

中断处理的实质也是改变程序执行的顺序,它的寻址方式特点是改变程序执行的时间是随机的。

转移的过程是由软件和硬件共同完成的。由于中断处理的中间过程的不透明性,因此对全面了解中断技术带来不便。但从指令寻址的角度看它与子程序调用的过程相似。不同之处是,子程序的调用时间和条件是由程序设计者事先安排好的,而中断则是随机发生的。

综上所述,指令的寻址方式是多种多样的,而且与后面介绍的操作数的寻址方式在形式上有许多相同或相似之处,但从物理概念上讲却是截然不同的。

豫ICP备19006514号 网站地图 免责声明:如果侵犯了你的权益,请发邮件至:419017772@qq.com,我们会及时删除侵权内容,谢谢合作!