系统编程-操作系统概论PART1

 

Part1. 计算机的基本组成原理

 

Part2. 计算机执行原理顶层视图

 

Part3. 指令

指令周期

 

取指令和执行指令

 

指令格式

前面1字节是操作码,代码指令的功能,例如加法功能。

后面3字节用于寻找要操作的数据值。

由于数据存储在内存(存储器)中,由内存地址来标识,所以后3字节本质是要操作的数据在内存(存储器)中的地址,进而通过此地址来找到要操作的数据值。

 

Part4. 程序执行的过程详解

Demo程序目的:

 

 执行过程图解:

上图的阅读顺序,我已经用数字1-6做了标注。

第1步,取指阶段

PC(程序计数器)中的数据为300(十六进制),表示会要读取内存地址300处的数据到指令寄存器IR中,

于是IR中就有了数据1940(十六进制). 这就是取指阶段要做的事情了。

PS:

根据本博客Part3 指令格式部分的介绍,1940这个十六进制数的前4位是操作码,所以后面的940这三个字节的含义是要操作的数据在内存(存储器)中的地址。

从上图可以看到,940存储单元内的数据为0003. 

 

接下来进入第2步,执行阶段

第1步是取指,这步是执行。根据第1步的取指分析,所以第2步的执行,肯定是把刚才找到的数据0003存放到累加器AC中去了。

同时PC也自动加1,变成了301,这也就意味着要开始新的取指了,于是进入第3步。

 

第3步 新一轮的取指阶段

此时PC(程序计数器)中的数据为301(十六进制),表示会要读取内存地址301处的数据到指令寄存器IR中,

于是IR中就有了数据5941(十六进制),5941这个十六进制数的前4位是操作码,所以后面的941这三个字节的含义是要操作的数据在内存(存储器)中的地址。

从上图可以看到,941存储单元内的数据为0002. 

 

第4步,新一轮的执行阶段

对应第3步的取指,这步是执行。根据第3步的取指分析,所以第4步的执行:肯定是把刚才找到的数据0002也放到累加器AC中去,AC器将之与之前房间来的0003进行运算,得到了累加的结果5,但是此时已然存放在AC中。

同时PC再次自动加1,变成了302,这也就意味着要开始第三次取指了,于是进入第5步。

 

第5步 第三次取指阶段

此时PC为302,所以此次取指将会读取内存地址302处的数据2941到指令寄存器IR中,

这个2941中,同理,2是操作码,941表示要操作的地址,PS:根据操作码,之前的指令是向要操作的地址读数据,而现在指令肯定是向要操作的地址写数据。

 

第6步 第三次执行阶段

将AC中的数据5就写入到941所在内存中。

 

通过上述6个步骤,我们就解析了程序的执行过程。

 

 

 

.

posted @ 2021-01-17 22:08  一匹夫  阅读(162)  评论(0编辑  收藏  举报