相对寻址模式和直接寻址模式的区别
寻址模式 在指令循环过程的指令获取操作中,寻址模式起着至关重要的作用。寻址模式是操作数在执行前在指令字中的寻址方式。
1. 相对地址模式: 在这种模式下,操作数的有效地址(EA)是由CPU寄存器的内容和指令字的地址部分相加计算出来的。有效地址的计算方法是将位移(指令中给出的即时值)和寄存器的值相加。指令的地址部分通常是一个有符号的数字,可以是正数或负数。这样计算出来的有效地址是相对于下一条指令的地址而言的。
EA=CPU寄存器+位移
相对寻址模式可以进一步划分为三种类型:
- PC(程序计数器)相对寻址模式。
- 索引寄存器相对寻址模式或索引寻址模式。
- 基准寄存器寻址模式。
2. 直接寻址模式: 在直接寻址模式下,操作数的有效地址等于指令的地址部分,即指令的地址部分表示包含操作数的内存位置。例如:ADD R1,4000,其中4000是有效地址。
直接寻址模式在这个例子中,内存位置4000包含操作数100,它被添加到R1的内容中并被存储在R1中。
相对寻址模式和直接寻址模式的区别:
独立于位置的相对寻址模式 | 直接寻址模式 |
---|---|
有效地址的计算是将CPU寄存器的内容与指令的地址部分相加。 | 获取操作数的地址已经在指令的地址部分提供。它不被计算。 |
相对模式有三种类型。PC相对模式、索引寄存器相对模式和基数寄存器相对寻址模式。 | 直接寻址模式没有类型。 |
它的结果是指令格式中的地址字段较短,因为相对地址可以用少量的比特指定。 | 直接寻址模式的结果是指令格式中的地址字段较长,因为它需要更多的位来指定整个内存地址。 |
它经常用于分支型指令,因为它直接更新程序计数器。 | 直接寻址模式不用于分支类型的指令。 |
它用于编写可重定位的代码,以及位置无关的代码,即在运行时进行程序重定位。 | 直接寻址模式被用来访问静态数据。 |
它用于实现数组寻址和记录。 | 直接寻址模式用于实现变量。 |
它用于处理递归程序。直接寻址模式不能处理递归程序。PC相对或基础相对寻址模式比直接寻址模式更受青睐,因为:1、减少程序存储的大小。2、减少指令获取队列的大小。3、重新定位更简单。 | 与PC相对或基数相对寻址模式相比,它不太适合使用。 |
优点—灵活 | 优点—使用简单,因为在引用内存时不涉及中间人。 |
缺点 – 复杂 | 缺点 – 地址空间限制 |
应用- 它有助于运行时的程序重新定位和指令序列的修改。 | 应用- 它有助于访问静态数据和实现变量。 |