欢迎光临散文网 会员登陆 & 注册

WHUT计算机课设实验帮助——简单模型机设计(一)

2023-06-24 13:59 作者:忆夢丶江南  | 我要投稿

写一下我对这个实验的理解,目前还没有上机验证,明天早上再去实验室看看。 如果不是简单模型机设计(一)的同学们也可以看看,也许会对您有所帮助。

题目一、简单模型机设计与实现(一)

     基于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:微指令标志


微指令的设计还要麻烦一些,稍后有时间再做说明。

WHUT计算机课设实验帮助——简单模型机设计(一)的评论 (共 条)

分享到微博请遵守国家法律