在复习软考的时候,发现CPU的内部工作原理这一部分的内容挺重要的,现对CPU的寻址方式进行了一下总结,下面就来一一介绍一下。
我们都知道一个指令分为操作码和地址码两部分,操作码确定指令的类型;地址码确定指令所要处理的数据。根据地址码代表的地址类型,指令系统分为如下寻址方式:
1、立即寻址:
地址码就是操作数,这种寻址方式不必再次访问主存去取操作数,当然也无须修改操作数(这种方式获得操作数的速度最快)
2、直接寻址:
指令的地址码就是操作数在主存内的地址,也就是说地址码就是主存内数据的绝对地址,不必做任何换算(也就是操作数的地址直接包含在指令中,只要按照指令中的地址去找就可以了),但这种地址方式的不足之处在于寻址范围有限。
3、间接寻址:
在指令的地址码部分直接给出的既不是操作数(直接给出操作数的是立即寻址),也不是操作数的地址(直接给出操作数地址的是直接寻址),而是操作数的地址的地址。这种方式提高了寻址的灵活性,扩大了寻址的范围,但是由于多次访问主存,速度大为降低。
4、寄存器寻址:
地址码的地址是寄存器的地址,和内存地址而言,访问寄存器的速度是非常快的,所以使用寄存器寻址有非常快的速度,不足之处在于寄存器的数量有限。
5、寄存器间接寻址:
地址码保存的是寄存器的地址,相对应的寄存器中保存的是操作数在主存中的地址,这样既快又有灵活性,是一种广泛使用的寻址方式。
6、基址寻址:
采用专用寄存器或通用寄存器作为基址寄存器,主要作用是扩大寻址空间和再定位。
7、变址寻址:
是将地址码和变址寄存器内容相加后形成的数据地址,对数组运算、字符串操作等批量数据的处理非常有效。
8、页面寻址:
页面寻址要将主存分组成若干个区,寻址时使用区码加区内偏移的方式确定位置。
9、相对寻址:
相对寻址和变址寻址类似,这里变址寄存器变成了程序计数器,也就是在相对寻址中是将地址码和程序计数器内容相加后形成的数据地址。
CPU中的几种寻址方式就介绍到这里,本着总结的原则,目的是为了让大家了解一下各种寻址方式的原理,方便掌握。
原文:http://blog.csdn.net/gaoying_blogs/article/details/26165135