相对寻址问题求解总结

在指令寻址方式这个知识点上,个人觉得其他的都很直接。有点趣味的要有两个点:

  1. 基址寻址和变址寻址的用途辨析
  2. 相对寻址的PC自增问题

其他的,现在看来都很直接。虽然曾经学习嵌入式时,很不能理解立即数是什么,后来明白不过是给定位数编码的上下限而已。

就一句话总结第一条:基址寻址用在OS多道程序以及编制浮动程序,普通用户是管不到的,浮动程序就是可以把程序代码分配到任意区。变址寻址是普通用户够得着的,用于编写循环程序。

主要探讨相对寻址的PC自增问题。

先看一个说法:
相对寻址中,指令提供的相对地址实质上是:下条指令在内存中的首地址为基准的位置偏移量。

因为执行本条指令时,已经完成了PC++,PC中是未雨绸缪思想下,保存下一条指令的地址。

普通情况下,相对寻址就是简单的把PC的值与偏移量相加得到操作数的有效地址。

EA = (PC) + A

我们特别讨论的PC自增问题实际上,关注点是在转移指令这个细分的场景中。但是,重要的是,这个点只要考察相对寻址,必然被提及的便是这部分。

引述别人的说法:

对于转移指令JMP A,当CU从存储器中取出一个字节时,会自动执行PC++。若转移指令的地址X占用两个字节,那么取出该指令后,PC会加2,即(PC) = X + 2。因此执行完该指令要跳到的指令位置是:X+2+A,不是X+1+A。

待补充一道例题。

以上。

你可能感兴趣的:(组成原理,组成原理,相对寻址,JMP-A)