WHUT计算机课设实验帮助——简单模型机设计(一)
写一下我对这个实验的理解,目前还没有上机验证,明天早上再去实验室看看。 如果不是简单模型机设计(一)的同学们也可以看看,也许会对您有所帮助。
题目一、简单模型机设计与实现(一)
基于TD-CMA 计算机组成原理教学实验系统,设计一个简单的计算机整机系统—模型机,分析其工作原理。根据模型机的数据通路以及微程序控制器的工作原理,设计完成以下几条机器指令和相应的微程序,输入程序并运行。
IN R0 ;IN ->R0
SUB 0DH ;R0 - [0DH] -> R0,直接寻址
SHL R0 ;将R0寄存器中的内容逻辑左移
STA 0EH,R0 ;R0->[0EH],直接寻址
LDA 0FH,R0 ;[0FH]->R0,直接寻址
LOP: DEC R0 ;R0-1->R0
BZC EXIT ;当FC或FZ为1时,转到EXIT
JMP LOP
EXIT: OUT 0EH,R0 ;[0EH]->LED,直接寻址
0DH、0EH、0FH单元内容分别为03H、04H、02H。
以下是未经验证的指令,仅供参考,若有意见或者建议欢迎指出
; //****** Start Of Main Memory Data ****** //
$P 00 20; START:IN->R0
$P 01 00;
$P 02 C1; LAD R1 0DH 通过直接寻址,将0DH的内容,放到寄存器R1中,即[0DH] -> R1
$P 03 0D;
$P 04 84; SUB R1 R0 R0 - [0DH] -> R0
$P 05 00; SHL R0 将R0寄存器中的内容逻辑左移,即扩大两倍。R0+R0->R0; ADD R0,R0
$P 06 D0; STA 0EH R0 R0->[0EH],直接寻址
$P 07 0E;
$P 08 C0; LDA 0FH R0 [0FH]->R0,直接寻址
$P 09 0F;
$P 0A 61; LDI R1 01 01->R1,立即寻址,立即数01
$P OB 01;
$P 0C 84; LOP: DEC R0 R0-R1(即是1)->R0
$P 10 F0; BZC EXIT 当FC或FZ为1时,转到EXIT
$P 11 14;
$P 12 E0; JMP LOP 跳转到LOP指令,即0C地址的指令
$P 13 0C;
;这一部分就是 EXIT: OUT 0EH,R0 ;[0EH]->LED的内容了,我把它拆成了两部分,所以上面转到EXIT就是跳转到地址14H
$P 14 C0; LAD 0EH R0 将0EH的内容,放到寄存器R0中
$P 15 0E;
$P 16 30; EXIT: OUT 0EH,R0 ;[0EH]->LED,直接寻址 将寄存器R1中的内容输出到OUT单元中。在OUT单元中的LED灯中可以查看结果
$P 17 50; END:HLT 停机
$P OD 03; DATA 数据存放在这里
$P OE 04; DATA
$P OF 02; DATA
; //******* End Of Main Memory Data ******* //
接下来,提供一些理解该指令的帮助
首先在课件《CMA组成原理与系统结构》第63页
5.3 复杂模型机设计实验 中
我们会看到指令的设计与格式,且分为单字节,双字节指令





对照着下面的指令格式,我们就可以来编写我们的机器指令了。(“ ** ”的部分应该默认是0)

以下文的机器指令作为例子


我们可以看到地址码部分是依次递增的,而右边的内容则是我们的机器指令。需要注意的是我们的指令分为了单字节,双字节指令。以第一行 START:IN R0,00H。从IN单元读入计数初值为例,首先它是双字节指令

并且由上面我们可以得知它的指令格式

所以它的机器指令应该是

地址码部分不用说
右侧第一行 0010 00 00 。从左往右看分为了三个部分,其中0010 代表 IN的操作码。中间的00 对应的是“ ** ”(应该是默认的)。最后的 00代表寄存器R0

右侧第二行 全零 对应的就是我们的16进制的00H
就是这么简单,那么START:IN R0,00H 这条语句的机器指令你就学会啦!
然后是 LDI R1,0FH 立即数0FH送R1

左半边地址码部分照旧递增
右侧第一行 0110 00 01。分为三个部分,其中0110 代表LDI 的操作码。中间的00 对应的是“ ** ”(应该是默认的)。最后的 01代表寄存器R1
LDI 的指令格式如下:

右侧第二行 存放data 0FH 。转化成二进制,故其为00001111。
其他指令也是同理。相信大家能够举一反三
还有注意的点就是数据我们放在了下面,对应


基本的原理大家应该都清楚了,接下我们的机器指令就是把二进制转化成对用的16进制就行了。请大家对照上面给出的代码和解释稍作理解。
机器指令格式说明: $P XX XX
$P : 机器指令代码
XX : 十六进制地址
XX : 机器指令标志
微指令格式说明: $M XX XXXXXX
$M :微指令代码
XX:十六进制地址
XXXXXX:微指令标志
微指令的设计还要麻烦一些,稍后有时间再做说明。