CPU-与简单模型机设计实验

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

评语: 课中检查完成的题号及题数:

课后完成的题号与题数:

成绩: 自评成绩: 85

实验报告

实验名称:CPU 与简单模型机设计实验日期:2015.11.17

班级:10011302 学号:201302513 姓名:周小多

、实验目的:

1.掌握一个简单CPU 的组成原理。

2.在掌握部件单元电路的基础上,进一步将其构造一台基本模型计算机。

3.为其定义五条机器指令,编写相应的微程序,并上机调试掌握整机概念。

、实验内容:

1.

要实现一个简单的CPU,并且在此CPU 的基础上,继续构建一个简单的模型计算机。CPU 由运算器(ALU)、微程序控制器(MC)、通用寄存器(R0),指令寄存器(IR)、程序计数器(PC)和地址寄存器(AR)组成, 如图2-1-1 所示。这个CPU 在写入相应的微指令后,就具备了执行机器指令的功能,但是机器指令一般存放在主存当中,CPU 必

须和主存挂接后,才有实际的意义,所以还需要在该CPU 的基础上增加一个主存和基本

的输入输出部件,以构成一个简单的模型计算机。

2.

本模型机和前面微程序控制器实验相比,新增加一条跳转指令JMP,共有五条指令:IN (输入)、ADD(二进制加法)、OUT(输出)、JMP(无条件转移),HLT(停机),其指令格式如下(高4位为操作码):

助记符机器指令码说明

IN 0010 0000 IN → R0

设计一段机器程序,要求从 IN 单元读入一个数据,存于 R0,将R0 和自身相加,结 果存于 R0,再将 R0 的值送 OUT 单元显示。根据要求可以得到如下程序,地址和内容均 为二进制数。

地址

内容

助记符

说明

00000000 00100000 ; START: IN R0 从 IN 单元读入数据送 R0

00000001 00000000 ; ADD R0,R0 R0 和自身相加,结果送 R0

00000010 00110000 ; OUT R0 R0

的值送 OUT 单元显示 00000011 11100000

; JMP START

跳转至 00H 地址

00000100 00000000

00000101

01010000

; HLT

停机

三、项目要求及分析:

1. 试修改现有的指令系统, 将加法指令的功能修改为 R0 的内容和某个存储单元的 内容相加;增加

存数、取数和减法三条机器指令, 指令助记符分别为 STA 、LAD 和 SUB , 指令操作码分别为十六进制的 60、70和 80。

<1>R0和某个存储器相加, R0是可以直接读进来的, R0和另一个存储单元内容相加,如 果两个

值都是读入的话,就要将一个放在 R0中,可以直接读入,另一个放存在储单元。 可以先将值读入到 R0 中,在将 R0保存到其他的存储单元中,进行加法时从存储单元中 取出放在临时寄存器中,这样是两个寄存器相加减就可以。

具体步骤: 1)将R0中的数据送 ALU 中的A ; 2)给出另一个数在内存中的地址;

3)从内存中取出相应的数据并送 ALU 中的B ; 4)进行加法运算并将结果送 R0。

<2>对于增加存数、取数和减法三条机器指令,

存数指令 STA 具体操作过程如下:

1)从 IN 读入数据要存储的地址; 2)将地址送至 AR ; 3)从 IN 读入要存储的数据; 4)将数据送入内存中的相应存储单元。

对于取数指令 LAD 具体操作过程如下:

1)从 IN 读入数据的存储地址;

ADD

0000 0000 R0 + R0 →R0 OUT 0011 0000 R0→OUT JMP addr

HLT

1100 0000 0101 0000

addr → PC

停机

2)将存储地址送至AR ;

3)将取出的数据送至R0

减法指令的具体操作过程如下:

1)将被减数送至ALU 的A;

2)将减数送至ALU 的B;

3)ALU 进行减法操作,结果送R0;

2. 利用修改后的指令系统编写一段程序,完成十六位二进制数的加减法运算。

答:十六进制比八进制多了一半,该内容利用的指令系统,编写相应的程序。可以先

将两个十六位的二进制数的高八位和低八位分别存入不同的地址,然后先取出两个数低

八位进行相加,送至OUT 单元显示,进位进行存储;再进行两个数低八位相加,结

果在数据总线出显示。

四、具体实现:

微程序设计流程图:

微代码

$M 00 000001 ; NOP

$M 01 006D42 ; PC->AR,PC

加1

$M 02 107073 ; MEM->IR, P<1>

$M 11 006412 ; pc->ar,PC++

$M 12 183013 ; mem->ar

$M 13 200401 ; mem->b

$M 15 006416 ; alu->r0 加法

$M 16 103001 ; pc->ar,PC++

$M 17 183018 ; mem->ar

$M 18 006419 ; mem->b

$M 19 102005 ; alu->r0 减法

$M 1D 105141 ; mem->ar

$M 2C 18302D ; R0->MEM STA

$M 2D 00642E ; m->ar

$M 2E 10202F ; m->r0 LAD

$M 2F 05B201 ; m->pc JMP PC++

$M 30 001417 ; R0->A 加法

$M 32 183001 ; R0->A 减法

$M 33 280401 ; pc->ar ,PC++ 置ro [AR]->R0 LAD

$M 35 000035 ; STA:PC->AR,PC++,mem->ar,R0->MEM(AR)

$M 36 183011 ; IN->R0 输入IN

$M 37 183015 ; R0->OUT 输出OUT

38 00142C ; pc

$M 3C 006D5D ; pc->ar JMP

<2>利用修改后的指令系统编写一段程序,完成十六位二进制数的加减法运算。

以下的一段程序用于实现两个16 位二进制数的加法,其思想为高位和低位分别对应相加,将低位的进位给高位,减法同理。结果的低八位在OUT单元显示,高八位数据在数据总线显示,最高位的进位忽略。

$P 00 60 STA 存加数的低八位

$P 01 60 STA 存被加数的低八位

$P 02 60 STA 存加数的高八位

相关文档
最新文档