程序计数器实验
一、实验目的
1) 连接程序计数器、地址寄存器、存储器与指令寄存器,理解程序计数器的作用。
2) 掌握使用微命令通过程序计数器从存储器中读取指令和数据的方法。
二、实验要求
1) 做好实验预习,在实验之前填写好表7-4至表7-7,读懂实验电路图,熟悉实验元器件的功能特性和使用方法。
2) 按照实验内容与步骤的要求进行实验,对预习时填写好的微命令进行验证与调试,遇到问题请冷静、独立思考,认真仔细地完成实验。
三、实验内容与步骤
1. 阅读RAM中的程序,并回答问题:此程序的功能是什么?
答: 从数据开关输入1个数,与存储单元08H的值相加,结果存放到09H存储单元中,循环执行此段代码。
2. 运行虚拟实验系统,导入实验电路图,接好所有控制信号线,连接好的电路截图如下所示:
图1 数据通路实验电路
3. 电路预设置:将计数器的、ENT、ENP置1,IR、AR的
置1,时序发生器的Step置1。
4. 程序起始地址→PC,地址从数据开关输入。具体步骤如下:
1) 设计好要使用的微命令,填入表1:
表1 程序起始地址→PC微命令
2) 打开电源。
3) 设置控制信号:数据开关→PC;将数据开关设置为地址00H;单击时序发生器的start按钮,等待一个CPU周期,此时PC被置为00H。
5. 取指令,以当前PC的值作为地址,取出存储器中相应的指令,放入指令寄存器IR,同时PC+1。具体步骤如下:
1) 设计好要使用的微命令,填入表2:
表2 取指令微命令
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。
PC->AR,PC+1
RAM->IR
7. 读ADD指令的操作数地址,在LED上显示,同时PC+1。具体步骤如下:
1) 设计好要使用的微命令,填入表3:
表3 读ADD指令的操作数地址微命令
2) 设置控制信号:PC→AR,PC+1;单击start按钮。等待一个CPU周期。
3) 设置控制信号:RAM→BUS。
8. 用同样的方法取STA指令到IR,PC+1;读出STA指令的操作数地址,PC+1。
PC->AR,PC+1
RAM->BUS
PC->AR,PC+1
RAM->BUS
9. 取JMP指令并执行,步骤如下:
1) 取指令的微命令上面已经有了,需要补充执行跳转的微命令,请填入表4:
表4 取JMP指令并执行微命令
2) 用前面的方法取JMP指令到IR,PC+1。
3) 设置控制信号:PC→AR,PC+1;单击start按钮。等待一个CPU周期。
4) 设置控制信号:RAM→BUS,BUS→PC;单击start按钮。等待一个CPU周期,PC值已被设为00H。
- 实验总结
在本次实验中我了解到,计算机开机时,程序计数器(Program Counter,PC)的值通常是由计算机的固件(如BIOS或UEFI)提前设置的。这个值指向存储在内存中的第一条要执行的指令的地址。在计算机启动过程中,固件会负责初始化各个硬件和建立基本的系统环境,然后将控制权转交给操作系统或引导加载程序。程序计数器在这个过程中被设置为指向操作系统或引导加载程序的第一条指令的内存地址,使得计算机能够开始执行相应的程序。