复杂试验计算机组成及加法,右移指令程序设计
课程设计任务书
目 录
1实验计算机的设计 ........................................ 1 1.1 整机逻辑框图 ....................................... 1 1.2指令系统的设计 ...................................... 1 1.3微指令的格式设计及微操作控制部件的组成原理 .............. 3 1.3.1微指令编码的格式设计 ............................. 3
1.3.2 微操作控制信号设计 ............................. 4 1.3.3 微程序顺序控制方式设计 .......................... 6 1.4微程序设计 ......................................... 10 1.4.1 每条指令对应的微程序流程图 ...................... 10
1.4.2 每段微程序中各微指令的二进制编码、16进制编码 ..... 13 1.4.3 每段微程序在控存中的存放位置 .................. 14 1.5 编写调试程序....................................... 16 3 调试部分 ............................................. 18 3.1调试前准备 ......................................... 18 3.2程序调试过程 ....................................... 19 3.3 结果分析 .......................................... 20 4 心得体会 ............................................. 20 5 参考文献 ............................................. 20
1实验计算机的设计
1.1 整机逻辑框图
图 1.1逻辑框图
1.2指令系统的设计
本实验共有14条基本指令,其中算术逻辑指令8条,访问内存指令和程序控制指令4条。输入输出指令2条。表8-1列出了各条指令的格式、汇编符号和指令功能。
表1.1
1.3微指令的格式设计及微操作控制部件的组成原理
1.3.1微指令编码的格式设计
1、 数据格式:
本实验计算机采用定点补码表示法表示数据,字长为16位,其格式如下:
其中第16位为符号位,数值表示范围是:-32768≤X
2、 指令格式: 1)算术逻辑指令
设计9
其中OP-CODE 为操作码,rs 为源寄存器,rd 为目的寄存器,并规定:
9条算术逻辑指令的名称、功能和具体格式见表8-2。 2)存储器访问及转移指令
存储器的访问有两种,即存数和取数。它们都使用助记符MOV ,但其操作码不同。转移指令只
其中OP-CODE 为操作码,rd 为寄存器。M 为寻址模式,D 随M 的不同其定义也不相同,如下表所示:
注:扩展直接寻址用于面包板上扩展的存储器的寻址。
3)I/O指令
输入(IN
其中,当中的开关组输入数据;当OP-CODE=0100且addr=01时,将数据送到“输出显示电路”中的数码管显示。
F1、F2、F3三个字段的编码方案如表8-2:
1.3.2 微操作控制信号设计
设计三个控制操作微程序:
存储器读操作(MRD ):拨动清零开关CLR 对地址、指令寄存器清零后,指令译码输入CA1、CA2为“00”时,按“单步”键,可对RAM 连续读操作。
存储器写操作(MWE ):拨动清零开关CLR 对地址、指令寄存器清零后,指令译码输入CA1、CA2为
“10”时,按“单步”键,可对RAM 连续写操作。
启动程序(RUN ):拨动开关CLR 对地址、指令寄存器清零后,指令译码输入CA1、CA2为“11”时,按“单步”键,即可转入到第01号“取指”微指令,启动程序运行。
注:CA1、CA2由控制总线的E4、E5给出。键盘操作方式时由监控程序直接对E4、E5赋值,无需接线。开关方式时可将E4、E5接至控制开关CA1、CA2,由开关来控制。
微程序入口地址形成方法
由于每条机器指令都需要取指操作,所以将取指操作编制成一段公用微程序,通常安排在控存的0号或特定单元开始的一段控存空间内。
每一条机器指令对应着一段微程序,其入口就是初始微地址。首先由“取指令”微程序取出一条机器指令到IR 中,然后根据机器指令操作码转换成该指令对应的微程序入口地址。这是一种多分支(或多路转移) 的情况,常用三种方式形成微程序入口地址。 (1)一级功能转移
如果机器指令操作码字段的位数和位置固定,可以直接使操作码与入口地址码的部分位相对应。例如,某计算机有16条机器指令,指令操作码用4位二进制数表示,分别为0000、0001、„、1111。现以字母Q 表示操作码,令微程序的入口地址为Q11B ,例如000011B 为MOV 指令的入口地址,000111B 为ADD 指令的入口地址,001011B 为SUB 指令的入口地址„„。 (2)二级功能转移
若各类指令的操作码的位数和位置不固定时,需采用分级转移,第一次先按指令类型标志转移,以区分出指令属于哪一类,如单操作数指令、双操作数指令等。在每一类机器指令中的操作码的位数和位置应当是固定的,第二次即可按操作码区分出具体是哪条指令,以便转移到相应微程序入口。 (3)通过PLA 电路实现功能转移
可编程逻辑阵列PLA 实质上是一种译码-编码阵列,具有多个输入和多个输出,PLA 的输入是机器操作码和其他判别条件,PLA 的输出就是相应微程序的入口地址,这种方法对于变长度、变位置的操作码的处理更为有效而且转移速度较快。
控存的下地址确定方法
(1)计数增量方式
这种方式的特点是微程序控制部件中的微地址中的微地址产生线路主要是微地址计数器MPC 。 MPC 的初值由微程序首址形成线路根据指令操作码编码形成。在微程序执行过程中该计数器增量 计数,产生下一条微指令地址。这使得微指令格式中可以不设置“下地址场”。缩短了微指令长度 ,也使微程序控制部件结构较简单。但微程序必须存放在控存若干连续单元中。
微操作控制信号
(2)断定方式
微指令中设有“下地址场”,它指出下条微指令的地址,这使一条指令的微程序中的微指令在 控存中不一定要连续存放。在微程序执行过程中,微程序控制部件中的微地址形成电路直接接受 微指令下地址场信息来产生下条微指令地址,微程序的首址也由此微地址形成线路根据指令操作 码产生。
图 1.3 计数增量方式
图1.4 断定方式
1.4微程序设计
1.4.1 每条指令对应的微程序流程图
控制开关
13
图1.5 微程序流程图
图1.6 微程序流程图
1.4.2 每段微程序中各微指令的二进制编码、16进制编码
1.4.3 每段微程序在控存中的存放位置
1.5 编写调试程序
设计如下几条机器指令的格式,指令格式可以采用单字长或双字长设计。 算术加法运算指令:ADD rs,rd (功能rs + rd -> rd) 输入输出指令:IN #DATA,rd (功能DATA -> rd)
OUT Ri (功能Ri 的值 -> LED输出)
右移位运算指令:RRC rs,rd (功能rs 的值带进位循环右移一位-> rd) 转移指令: JMP ADDR (功能ADDR -> PC)
通过如下程序的编写调试,验收机器指令、微指令、微程序的设计结果。
IN #data,R0 IN #data R1 IN #data,R2 ADD R0,R1 ADD R1,R2 RRC R2, R1 OUT R0 JMP 00H
实验程序:
地址 指令 助记符 00000001 01000100 IN R0 00000010 01000101 IN R1 00000011 01000110 IN R2
00000100 10010001 ADC R0,R1 00000101 10010010 ADC R1,R2 00000110 11101000 RRC R2,R1 00000111 01011010 OUT 00001000 00001100 JMP 00001001 00100000 HACT
2 设计组装实验计算机接线表
图2.1 实验接线表
3 调试部分
3.1调试前准备
1 按照实验指导说明书连接硬件系统
2 启动实验软件,打开实验课题菜单,选中实验课题打开实验课题参数对话窗口:
微指令操作:
1)写:在编辑框中输入实验指导书中的微指令程序(格式:两位八进制微地址+空格+六位十六进制微代码), 或直接打开随机附带的程序EX8.MSM ,将实验箱上的K4K3K2K1拨至“0010”写状态,然后按" 写入" 按钮, 微程序写入控制存储器电路;
2)读:将实验箱上的K4K3K2K1拨至“0100”读状态,在“读出微地址”栏中填入两位八进制地址,按" 读出" 按钮, 则相应的微代码显示在“读出微代码”栏中; 3)保存:按" 保存" 按钮, 微程序代码保存在一给定文件(*.MSM)中; 4)打开:按" 打开" 按钮, 打开已有的微程序文件, 并显示在编辑框中 机器指令操作:
1) 写:在编辑框中输入实验指导书中机器指令程序(格式:两位十六进制地址+空格+2位或 4位十六进制代码), 或直接打开随机附带的程序EX8.ASM ,将实验箱上的K4K3K2K1拨至 “0101”运行状态,拨动“CLR”开关对地址和微地址清零,然后按" 写入" 按钮, 机器指令写 入存储器电路; 注:对于8位机,十六进制代码为2位;对于16位机,十六进制代码可以是2位,也可以是4位。
2)读:将实验箱上的K4K3K2K1拨至“0101”运行状态,在“读出指令地址”栏中填入两位十六进制地址,拨动“CLR”开关对地址和微地址清零,然后按" 读出" 按钮, 则相应的指令代码显示在“读出指令代码”栏中。
3)保存:按" 保存" 按钮, 机器指令程序保存在一给定文件(*.ASM)中。
4) 打开:按" 打开" 按钮, 打开已有的机器指令程序文件, 并显示在编辑框中。
5) 单步:在运行状态下运行程序前,先拨动“CLR”开关对地址和微地址清零,然后每按一次" 单步" 按钮, 执行一条微指令。可从实验箱的指示灯和显示LED 观察单步运行的结果。
6) 连续:在连续运行程序前,先拨动“CLR”开关对地址和微地址清零,然后按" 连续" 按钮, 可连续执行程序。可从实验箱的指示灯和显示LED 观察连续运行的结果。
7) 停止:在连续运行程序过程中,可按" 停止”按钮暂停程序的执行。此时地址和微地址并不复位,仍可以从暂停处单步或连续执行.
3.2程序调试过程
在进行机器指令的操作时,完成对数据的写读之后,保存机器指令后可进行单步运行,也可以进行连续运行。在单步运行状态下运行程序前,先拨动“CLR”开关对地址和微地址清零,然后每按一次" 单步" 按钮, 执行一条微指令。从实验箱显示LED 观察单步运行的结果。在连续运行程序前,先拨动“CLR”开关对地址和微地址清零,然后按" 连续" 按钮,
可连续执行程序。
从实验箱显示LED 观察连续运行的结果。如:
输入:R0=1;R1=2;R2=3
LED 显示:011
3.3 结果分析
R1=R0+R1=3 R2=R1+R2=6
6二进制数右移结果为011
4 心得体会
通过这次课程设计,不仅让我了解了模型机的硬件结构和怎么去设计微程序,更重要的还让我学会了、或者说是验证了“做事一定要有次序和对事物的总体把握”这句话。刚开始对实验一头雾水,第一次实验课先连接线表,慢慢懂得一些;第二节课经老师指点又明白了些;经过第三节课的学习并与同学的讨论让我对此实验更熟悉了。“活到老,学到老”,这也是我整个学习过程中的一次经验、一次总结,我相信它肯定会给我今后的学习有所启示和指导作用。
5 参考文献
[1]杨雨彤著. 《计算机组成原理》实验指导书. 沈阳理工大学,2010 [2]白中英著. 计算机组成原理。北京:科学出版社,2010
[3]马秀丽,刘念著 《EL--JY--II 型计算机组成原理实验系统实验指导书》, 沈阳理工大学信息学院应用教研室,2007