[408计算机组成原理] 第四章 指令系统4.2

发布于:2024-04-20 ⋅ 阅读:(20) ⋅ 点赞:(0)

在这里插入图片描述

🚀 【考纲要求】指令的格式、寻址方式、数据的对齐和大小端存储方式
🚀 第四章的第一节内容请查看此链接 指令系统4.1

二、指令和数据的寻址方式

1)指令的寻址方式

在4.1节了解了指令系统,指令的基本结构,同时知道了指令系统将我们的软硬件结合了起来,指令是可以直接被计算机硬件直接运行的;那存放在主存中的指令是如何被计算机找到并有序的被执行的呢? 其实在计算中有一个程序计数器PC,它可以记录计算机每一次即将要执行的指令的地址,每一次指令被取走之后,程序计数器中的内容就会自动加“1”,即找到下一个指令的地址。而接下去的指令寻址方式的学习,就是了解PC计数器中的内容如何自动加“1”从而找到下一条指令

①🎄指令的顺序寻址

(以指令字长等于存储字长,编址方式按着字编址)
假设现在CPU从PC中取走PC中的内容,即为0,CPU中的数据被CPU取走之后,PC计数器自动的加1,即找到下一个即将要执行的指令;而此时的CPU是在执行地址0处存储的指令,直到该条指令执行结束之后又会再次取PC中的内容,PC的值又会自动加1,依次的执行下去,这就是指令的顺序寻址。
在这里插入图片描述

②🎄指令的跳跃寻址

还是如上图所示,假设此时CPU执行到了指令地址为2处的地址,PC的值应该为3,CPU执行指令DEC结束后,会取出PC的值3,PC的值加1,CPU接着执行JMP指令,由于此时是一个跳转指令,其会将程序计数器PC的内容修改为7,在JMP指令结束后,CPU在从PC中取出数据,此时取到的就是7了,CPU就会去执行指令地址为7处的STA指令;从而实现了指令的跳跃寻址。

🎄思考一个问题:

PC的值加1就可以找到下一个地址的原理是什么?其实是因为前面的假设:指令字长等于存储字长,编址方式按着字编址。由于该假设,PC的值加1就正好是下一条指令的地址,所以若机器按着字节编址,一个指令字长是2个字节,那么PC的值就得加2才能找到下一条指令!!!

2)数据的寻址方式

现在了解了指令如何被计算机找到,而一条指令由操作码和地址码组成,在4.1节我们知道对于操作码是表明此次操作的具体内容,而地址码表表明此次要操作的数据或者数据的地址,而接下去学习的数据的寻址方式就是学习如何找到此次指令要操作的数据。

①直接寻址

首先由于寻址方式特别多,所以需要在指令中特别的标出此次的数据寻址方式是啥,所以增加寻址特征字段来指示此次的寻址方式。

直接寻址是地址码部分给出的直接就是此次要操作数据的地址,通过这个地址我们就可以找到此次要操作的数据。
在这里插入图片描述

②间接寻址

间接寻址是地址码部分给出的直是此次要操作数据的地址的地址,通过这个地址码部分先找到EA(数据的真实地址),再有EA地址找到真实的数据。

如下图还有两次间址,其实就是套娃操作了,哈哈哈哈,应该很好理解。

在这里插入图片描述③寄存器寻址

寄存器寻址是地址码部分给出的寄存器的编号,通过寄存器编号找到对应的寄存器,从寄存器中读出来的内容就是此次要操作的数据。

在这里插入图片描述

④寄存器间接寻址

寄存器间接寻址是地址码部分给出的寄存器的编号,通过寄存器编号找到对应的寄存器,从寄存器中读出来的内容是此次要操作的数据的地址EA,在根据EA找到此次要操作的数据。

在这里插入图片描述
⑤立即寻址

指令中给出的地址码部分就直接是此次要操作的数据,不要再有任何寻址操作。

在这里插入图片描述

⑥隐含寻址

有些数据被隐含再指令类型当中,假设我们要进行一个加法操作,此时可能只需要给出加数,对于被加数数据可能就会被隐含在累加寄存器ACC当中,从而不要指令特别给出此次需要操作的被加数。
在这里插入图片描述