计算机组成原理:程序计数器实验
实验六 程序计数器实验
一、实验目的
1) 连接程序计数器、地址寄存器、存储器与指令寄存器,理解程序计数器的作用。 2) 掌握使用微命令通过程序计数器从存储器中读取指令和数据的方法。
二、实验要求
1) 做好实验预习,在实验之前填写好表 1-4 ,读懂实验电路图,熟悉实验元器件的功能特性 和使用方法。
2) 按照实验内容与步骤的要求进行实验,对预习时填写好的微命令进行验证与调试,遇到问 题请冷静、独立思考,认真仔细地完成实验。
三、实验原理
1. 实验数据总框图
2. 实验用到的四条机器指令格式如表 1 所示
3. RAM 中预存的程序和数据如表 2 所示
四、实验内容与步骤
1. 阅读 RAM 中的程序,并回答问题:此程序的功能是什么?
答:从数据开关输入1个数,与存储单元08H相加,结果存放到09H存储单元中,循环执行此段代码。
2. 运行虚拟实验系统,导入实验电路图,接好所有控制信号线,连接好的电路截图如下所示:
图 1 数据通路实验电路
3. 电路预设置:将计数器的CR 、ENT 、ENP 置 1 ,IR 、AR 的 MR 置 1 ,时序发生器的 Step 置 1。 4. 程序起始地址→PC ,地址从数据开关输入。具体步骤如下:
1) 设计好要使用的微命令,填入表 1:
表 1 程序起始地址→PC 微命令
功能 | 微命令 | |||||||
LOAD | LDPC | CE | LDIR | |||||
SW - BUS | PC - BUS | LDAR | WE | |||||
数据开关→ PC | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 |
2) 打开电源。
3) 设置控制信号:数据开关→PC;将数据开关设置为地址 00H;单击时序发生器的 start 按钮, 等待一个 CPU 周期,此时 PC 被置为 00H。
5. 取指令,以当前 PC 的值作为地址,取出存储器中相应的指令,放入指令寄存器 IR ,同时 PC+1。 具体步骤如下:
1) 设计好要使用的微命令,填入表 2:
表 2 取指令微命令
功能 | 微命令 | |||||||
PC - BUS | LDPC | CE | LDIR | |||||
SW - BUS | LOAD | LDAR | WE | |||||
PC→AR,PC+1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 |
RAM→ BUS,BUS→ IR | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 |
2) 设置控制信号:PC→AR,PC+1;单击 start 按钮。等待一个 CPU 周期,此时 PC 的值存入 AR ,而后 PC 递增 1。
3) 设置控制信号:RAM→IR;单击 start 按钮,等待一个 CPU 周期,此时 00H 地址处的 IN 指令被取出放入了 IR 。注意: 由于 IN 指令为全零,所以此时指示灯不会点亮。
6. 重复执行一次表 2 中的 2 组微命令,读出 PC 所指单元内容到 IR。
7. 读 ADD 指令的操作数地址,在 LED 上显示,同时 PC+1 。具体步骤如下:
1) 设计好要使用的微命令,填入表 3:
表 3 读 ADD 指令的操作数地址微命令
功能 | 微命令 | |||||||
LOAD | LDPC | CE | LDIR | |||||
SW - BUS | PC - BUS | LDAR | WE | |||||
PC→AR,PC+1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 |
RAM→ BUS | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
2) 设置控制信号:PC→AR,PC+1;单击 start 按钮。等待一个 CPU 周期。 3) 设置控制信号:RAM→BUS。
8. 用同样的方法取 STA 指令到 IR ,PC+1;读出 STA 指令的操作数地址,PC+1。 9. 取 JMP 指令并执行,步骤如下:
1) 取指令的微命令上面已经有了,需要补充执行跳转的微命令,请填入表 4:
表 4 取 JMP 指令并执行微命令
功能 | 微命令 | |||||||
PC - BUS | LDPC | LDAR | CE | WE | LDIR | |||
SW - BUS | LOAD | |||||||
PC→AR,PC+1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 |
RAM→ BUS,BUS→ PC | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 |
2) 用前面的方法取 JMP 指令到 IR ,PC+1。
3) 设置控制信号:PC→AR, PC+1;单击 start 按钮。等待一个 CPU 周期。
4) 设置控制信号:RAM→BUS, BUS→PC;单击 start 按钮。等待一个 CPU 周期,PC 值已被 设为 00H。
10. 尝试在读 ADD 指令的操作数地址时,不仅仅读出操作数地址,也把真正的操作数从存储器读出 来,并在 LED 上显示。
五、思考与分折
(1) 计算机开机的时候,一条指令都没有执行之前,程序计数器 PC 的值是如何设置的?
答:存放当前欲执行的地址。
- 本实验中,程序计数器是否一直指向下一条要执行的指令?
答:不是的,地址为06H时,PC指向00H。
- 程序计数器与微程序有什么联系?
答:二者是包含关系,微程序可能需要使用计数器来实现一些特定的功能。
实验截图1-n
00H |
00H |
IN指令为0 |
AR=00H |
PC+1 -> 01H |
01H |
01H 00100000 |
PC+1 ->02H |
02H |
02H 00001000 |
PC+1 ->03H |
03H |
03H 01000000 |
PC+1 ->04H |
04H |
04H 00001001 |
PC+1 ->05H |
05H |
05H 01100000 |
PC+1 ->06H |
06H |
06H 00000000 |
PC+1 ->07H |
原文地址:https://blog.csdn.net/2303_81073778/article/details/144134474
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!