一、实验目的
1.连接程序计数器、地址寄存器、存储器与指令寄存器,理解程序计数器的作用
2.掌握使用微命令通过程序计数器从存储器中读取指令和数据的方法.
二、实验要求
1.做好实验预习,在实验之前填好表7-4至7-7, 读懂实验电路图,熟悉实验元器件的功能特性和使用万法
2.按照实验内容与步骤的要求,独立思考,认真仔细地完成实验
3.完成实验报告
三、实验原理
四、实验原理
本实验用到的四条机器指令格式如下表所示
助记符 | 机器码 | 长度 | 功能 |
---|---|---|---|
IN | 00000000 | 8 bit | SW->R0 |
ADD | 00100000 A | 16 bit | R0 + (A) -> R0 |
STA | 01000000 A | 16 bit | R0->(A) |
JMP | 01100000 A | 16 bit | A->PC |
RAM 中预先装入的程序和数据如下表所示
地址(八进制) | 内容 | 含义 |
---|---|---|
00 | 00000000 | IN |
01 | 00100000 | ADD |
02 | 00001000 | 10(八进制) |
03 | 01000000 | STA |
04 | 00001001 | 11(八进制) |
05 | 01100000 | JMP |
06 | 00000000 | 00 |
07 | ||
10 | 00001011 | |
11 | 求和结果 |
五、实验内容及步骤
1.电路图:
2.预设置:将计数器的 、ENT、ENP置1,IR、AR的 置1,时序发生器的step置1
3.程序起始地址 -> PC,地址从数据开关输入:
3.1 设计好要使用的微命令,填入下表
功能 | 微命令 | |||||||
SW-BUS' | PC-BUS' | LOAD' | LDPC | LDAR | CE' | WE | LDIR | |
数据开关->PC | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 |
3.2 打开电源
3.3 设置控制信号:数据开关→PC( );将数据开关设置为地址00H;单击时序发生器的Start 按钮,等待一个CPU周期,此时PC被置为00H。
4.取指令:以当前PC的值作为地址,取出存储器中相应的指令,放入指令寄存器IR,同时PC+1。同时具体步骤如下:
4.1 设计好要使用的微命令,填入下表
功能 | 微命令 | |||||||
SW-BUS' | PC-BUS' | LOAD' | LDPC | LDAR | CE' | WE | LDIR | |
PC->AR PC+1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 |
RAM->BUS BUS->IR | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 |
4.2 设置控制信号:PC→AR,PC+1 ( );单击 start 按钮。等待一个CPU周期,此时PC的值存入AR,而后PC递增1。
4.3设置控制信号:RAM→IR( );单击Start按钮,等待一个CPU周期,此时00H地址处的N指令被取出放入了IR。注意:由于IN指令为全零,所以此时指示灯不会点亮。
5.重复执行以上两组微命令,读出PC所指单元内容(即下一条指令ADD的操作码部分)到IR。
电路图:
6.读ADD指令的操作数地址,在 LED上显示,同时 PC+1。注意:上一步取ADD指令后,PC的值增加了1,当前PC的值为02H,指向ADD指令操作数的地址,即PC的值是操作数地址的地址。具体步骤如下:
6.1 设计好要使用的为命令,填入下表:
功能 | 微命令 | |||||||
SW-BUS' | PC-BUS' | LOAD' | LDPC | LDAR | CE' | WE | LDIR | |
PC->AR PC+1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 |
RAM->BUS | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
6.2 设置控制信号:PC→AR,PC+1();单击Start 按钮。
6.3 设置控制信号:RAM→BUS( )
电路图:
7.用同样的方法取STD指令到IR,PC+1;读出STD指令的操作数地址,PC+1。
8.取JMP指令并执行:
8.1 填写下表
功能 | 微命令 | |||||||
SW-BUS' | PC-BUS' | LOAD' | LDPC | LDAR | CE' | WE | LDIR | |
PC->AR PC+1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 |
RAM->BUS BUS->PC | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 |
8.2 用前面的方法取 STD指令到IR,PC+1。
8.3 设置控制信号:PC→AR,PC+1( );单击Start 按钮。等待一个CPU周期。
8.4设置控制信号:RAM→BUS,BUS→PC();单击Start按钮。等待一个CPU周期,PC值已被设为00H。
六、思考与分析
1、计算机开机时,一条指令都没有执行前,程序计数器PC的值是如何设置的?
答:开机时,利用复位信号给 PC 置初值 0x00000000
2、本实验中,程序计数器是否一直指向下一条要执行的指令?
答:不是,因为如果遇到跳转指令,PC 就会跳转到目标地址
3、程序计数器与微程序有什么联系?
答:程序计数器是用来指定微程序中的每一步微操作的执行