计算机组成原理实验 - 图文

更新时间:2023-03-09 17:08:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

目 录

第1篇 概 述 ............................................................................................................................... 2 第2篇 实验项目 ............................................................................................................................. 4

实验1 运算器算术逻辑运算 ................................................................................................ 4 实验2 运算器进位控制实验 ................................................................................................ 7 实验3 运算器移位控制实验 ................................................................................................ 8 实验4 存储器读/写实验 ....................................................................................................... 10 实验5 总线数据传送控制实验 ............................................................................................ 12 实验六 控制器实验一(微码装入与执行) ...................................................................... 14 实验7 控制器实验二(简单模型机设计与实现) ........................................................... 18 实验8 带移位功能的模型机设计与实现........................................................................... 24 实验9 具有中断功能的模型机设计与实现 ....................................................................... 29 实验10 复杂模型机的设计与实现..................................................................................... 35 第3篇 附 录 ............................................................................................................................. 45

附录1 指 令 系 统 ............................................................................................................ 45 附录2 系统硬件构成 .......................................................................................................... 52 附录3 上位机软件操作 ...................................................................................................... 78 附录4 芯片资料 .................................................................................................................. 88

-1-

第1篇 概 述 1 系统的功能特点

该实验系统主要是为配合《计算机组成原理》、《计算机组成与系统结构》课程的教学而研制的,具有如下特点:

? 实验仪硬件主要由微过程控制器、存储器、运算器、寄存器、中断向量、地址、指令译码、

输入输出及总线各单元电路组成;实验时只需将各单元之间有关的信号线进行连接即可;具有接线错误诊断功能。

? 实验仪具有8位指令系统,24位微指令格式,提供了Windows软件支持,通过采集实验仪

各单元的控制信号和数据,使上位机(PC机)实时监测实验仪的指令运行过程、数据流向、信号状态和时序波形等,并可在界面上设置、修改、下装指令码和微指令码,从而对下位机(实验仪)的工作进行单步、连续及快慢执行的控制。还可以在仿真方式下,实现实验仪的操作过程和实验结果状态分析。

? 实验指导书提供了循序渐进的实验项目。首先是在脱机方式下用手动开关给出控制信号,

控制运算器、寄存器、存储器、输入/输出各单元的运行,通过观察数据灯、地址灯和状态灯了解运行情况,使学生分别理解各单元的工作原理。然后在联机方式下,由少至多地进行指令类型设置,最终掌握整机部件的工作原理。

? 实验仪具有中断响应、中断允许、中断禁止和中断向量的读入等中断处理控制功能。 ? 实验仪可选择配置CPLD芯片,应用EDA设计环境对硬件电路单元进行设计编程,下载到CPLD

芯片,通过连接线来取代实验仪上的某个单元电路,这样可以培养学生的硬件设计能力。

2 技术指标

? 机器字长为8位。即运算器、存储器、寄存器和数据总线均为8位,地址总线也是8位。 ? 指令条数为28条。指令字长8位,其中基本操作码4位,即当寄存器地址为两个时,这些

指令操作码为4位,源寄存器地址2位,目标寄存器地址2位,而当寄存器地址为单个时,可实现指令操作码的扩展,这些指令操作码为6位,寄存器地址2位。指令寻址方式有直接寻址、间接寻址、变址寻址、相对寻址。指令类型有传送指令、算术逻辑运算指令、条件转移和无条件转移指令、输入/输出指令、调用子程序指令、返回指令、停机指令。还可以根据硬件组成自己设计各种指令。

? 采用6116RAM芯片作为指令主存。使用低8位地址寻址,256个字节单元存放用户程序和数

据,可在RAM中设置堆栈区,由堆栈指针SP指向。

? 由二片74LS181芯片串联形成8位算术和逻辑运算器,再由74LS299组成移位运算器,并

由GAL芯片组成进位控制和判零电路。由4片74LS374组成4个8位的通用寄存器,其中

-2-

R3可做为堆栈指针SP,R2可做为变址寄存器SI。

? 微控制存储器由3片2816EEPROM组成,容量为128?24位,可存放128条指令。控存中的

微指令可根据指令的功能及微指令的格式自行设计。

? 指令的输入可通过下位机上的手动单元拨动输入,也可在上位机的软件界面内输入或修改

并下装到实验仪上。

? 实验仪上的时钟产生电路产生300HZ左右的时钟信号及T1、T2、T3、T4时钟周期,以提供

整个实验仪电路的时序所需。在执行指令和微指令期间,上位机界面可实时显示整机所有的控制信号时序状态。

? 实验仪上提供了指令地址灯(8位)、控制信号开关及灯18个、数据总线灯(8位)、微地

址灯(7位)、微指令灯(24位)。

-3-

第2篇 实验项目

实验1 运算器算术逻辑运算

1.实验目的

(1)掌握运算器的简单数据传送通路;

(2)验证运算器功能发生器(74LS181)的运算功能。

2.实验设备

YY-Z02计算机组成原理教学实验系统一台,排线若干。

3.实验原理

运算器数据通路如图1-1所示。其中运算器单元(ALU UNIT)的两个暂存器DA1和DA2的数据输入端已由暗线连接至总线(BUS UNIT)的D7~D0,两片74LS181的输出通过三态缓冲器74LS245,由排针短路器引出到总线,数据开关输入设备(INPUT DEVICE)经排线短路器接至总线,以拨入或输出数据D7~D0。其它相关的各种控制信号可直接从手动单元(MANUAL UNIT)控制。实验时,进行运算的两个数据从总线上分别打入暂存器DA1和DA2(先下后上拨动一下),在控制信号S0、S1、S2、S3、M、Ci作用下产生不同的运算结果送至总线,由总线指示灯显示输出。 注意:各控制信号的开关顺序和互斥拨入,若同时有两个或两个以上的总线控制信号有效,

CCCNC则报警单元会响铃报警;本实验中,yn和yn信号均有效时,结果不影响标志位。

运算器核心部件74LS181功能表如表1-1所示:

-4-

表1-174LS181功能表

选择 S1 S2 S3 S4 L L L L L L L H L L H L L L H H L H L L L H L H L H H L L H H H H L L L H L L H H L H L H L H H H H L L H H L H H H H L H H H H M=H逻辑功能 有效的输入输出数据 M=L算术运算 FFFFFFFFFFFFFFFF?A ?A?B ?AB ?0 ?AB ?B ?A?B ?AB ?A?B ?A?B ?B ?AB ?1 ?A?B ?A?B ?A Ci?1(无进位) F?A F?A?B F?A?B F?减1(2的补码) F?A加AB F?(A?B)加AB F?A减B减1 F?AB减1 F?A加AB F?A加B F?(A+B)加AB F?AB减1 F?A加A? F?(A?B)加A F?(A?B)加A F?A减1 Ci?0(有进位) F?A加1 F?(A?B)加1 F?(A?B)加1 F?0 F?A加AB加1 F?(A?B)加AB加1 F?A减B F?AB F?A加AB加1 F?A加B加1 F?(A+B)加AB加1 F?AB F?A加A?加1 F?(A?B)加A加1 F?(A?B)加A加1 F?A

4. 实验步骤

(1)熟悉实验仪的各个单元分布情况。

(2)连接实验线路。本实验需要连接三个单元:INPUT、ALU、MANUAL,在电源断开的情况下,将需要的相同标号的插针用排线连接,注意排线的颜色必须两边一致,输入单元必须有接地线路(Ai=0),仔细检查接线无误后,再接通电源。

(3)通过手动开关向DA1和DA2置数。具体操作步骤如图1-2: ?R?ALU?B?CLR?1 I/0 拨INPUT数据开关 (8位二进制数据) 拨控制信号 I/O?R?0,Ai?0拨控制信号为初始状态 B-DA1=B-DA2=1 拨控制信号 B-DA1= B-DA2=1 拨INPUT数据开关 (8位二进制数据) 检查实验结果 拨控制信号 S3~S0、Mi、Ci ALU?B?0 拨控制信号 I/O?R?1 图1-2操作流程图

拨控制信号 B-DA1=1 B-DA2= (4)拨入控制信号S3~S0、M、Ci的值,选择74LS181功能,并置总线控制信号I/O-R?1,

-5-

ALU?B?0,观察并记录总线上的显示灯,验证74LS181的算术和逻辑运算是否正确(灯亮

表示“1”,灯灭表示“0”)。

5.实验要求

(1)置数DA1=65H,DA2=0A7H,改变控制信号S3~S0、Mi、Ci的值,观察运算器的输出结果,记录到下表中,并与表1-1比较分析,得出结论。

(2)思考题:若想要验证向DA1或者DA2中输入的数据是否正确,如何实现?

表1-1算逻运算表 DA1 65H 65H 65H 65H 65H 65H 65H 65H 65H 65H 65H 65H 65H 65H 65H DA2 0A7H 0A7H 0A7H 0A7H 0A7H 0A7H 0A7H 0A7H 0A7H 0A7H 0A7H 0A7H 0A7H 0A7H 0A7H S3~S0 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1111 M=0(算术运算) Ci?1(无进位) F=( ) F=( ) F=( ) F=( ) F=( ) F=( ) F=( ) F=( ) F=( ) F=( ) F=( ) F=( ) F=( ) F=( ) F=( ) Ci?0(有进位) F=( ) F=( ) F=( ) F=( ) F=( ) F=( ) F=( ) F=( ) F=( ) F=( ) F=( ) F=( ) F=( ) F=( ) F=( ) M=1(逻辑运算) F=( ) F=( ) F=( ) F=( ) F=( ) F=( ) F=( ) F=( ) F=( ) F=( ) F=( ) F=( ) F=( ) F=( ) F=( ) -6-

实验2 运算器进位控制实验

1.实验目的

(1)验证带进位控制的算术运算器功能发生器(74LS181)的功能; (2)按指定数据完成几种指定的算术运算。

2.实验设备

YY-Z02计算机组成原理教学实验系统一台,排线若干。

3.实验原理

有关进位表示FC和结果为零标志FZ的置位和清零的原理,请参见附录中的原理介绍。本实验在实验一的基础上,增加进位控制部分,主要通过控制CyCn和CyNCn信号来实现。当CyCn?0或

CyNCn?0时,算术运算影响FC和FZ;当进行逻辑运算(M=1)时,清FC;通过MANUAL UNIT 中

的CLR开关的总清(1→0→1),也可以使FC和FZ清零。本实验的连线在实验一基础上,增加CyCn和CyNCn信号的连线(同样从 MANUAL UNIT 的开关引入到ALU UNIT),另外要将T4时钟信号从 CLOCK UNIT时钟单元连接到微控制器单元 MAIN CONTORL UNIT 的T4(MAIN CONTROL UNIT的T1~T4已连接到其它各单元所需的T1~T4, ,或者将CLOCK UNIT 单元的KK2信号连接到 MAIN CONTROL UNIT 的T4上(此时按KK控制开关有效)。

4.实验步骤

(1)连接实验线路:按照实验原理自行设计并连接线路,仔细检查连线无误后,接通电源。 (2)将FC和FZ标志清零:拨CLR开关1→0→1。

(3)置控制信号CyCn?0(影响进位并带进位)或CyNCn?0(影响进位不带进位),Ci=1。 (4)用二进制数据开关向DA1和DA2置数:具体操作步骤见实验一。

(5)置控制信号I/O-R?1,ALU?B?0,选择74LS181的功能为:F=A加B,此时总线显示灯上的数据为DA1加DA2的和。若是CyCn?0,则表示带当前进位标志进行加法运算;若CyNCn?0,则表示不带当前进位标志进行加法运算。

(6)按动开关START或 KK,产生本次加法结果的标志FC或FZ(灯亮表示“1”,灯灭表示“0”)。

5.实验要求

(1)实验并记录5BH+0AH+FC的结果和标志。 (2)实验并记录5BH?0AH的结果和标志。 (3)实验并记录0FH+32H+FC的结果和标志。

(4)实验并记录12F0H+7C32H的结果和标志,写出操作流程。

-7-

实验3 运算器移位控制实验

1.实验目的

验证运算器的移位控制功能

2.实验设备

YY-Z02计算机组成原理教学实验系统一台,排线若干。

3.实验原理

移位运算的原理图参见附录

2中的图2-4控制电路。本实验涉及的单元有:ALU UNIT、

MANUAL UNIT、CLOCK UNIT及 MAIN CONTROL UNIT 。移位器74LS299的数据输入/输出端以排针短路器方式和总线相连,其控制信号299-B、Mi、S1、S0均要从手动单元MANUAL UNIT 引入,UNIT中引入,Ai接地GND。本实验中为便于总线数据的暂存操作,I/O-R也从手动单元 MANUAL

ALU UNIT的B-DA1和B-DA2要分开接线,例如B-DA2引脚接和前面一样接到MANUAL UNIT的B-DA2,B-DA1引脚接到CLOCK UNIT中的KK2上,这样可以利用KK产生的脉冲将总线上的数据输入给DA1,实验其它时序信号由CLOCK UNIT和 MAIN CONTROL UNIT 的T4完成。各控制信号的组合功能如表3-1

表3-1 控制信号功能 299-B 0 0 0 0 0 任意 S1 0 1 1 0 0 1 S0 0 0 0 1 1 1 M 任意 0 1 0 1 任意 74LS299操作 保持 循环右移 带进位循环右移 循环左移 带进位循环左移 装数

4.实验步骤

(1)连接实验线路: ALU UNIT 的B-DA1连接CLOCK UNIT中的KK2;ALU UNIT 的B-DA2连接MANUAL UNIT的B-DA2(反之亦可);CLOCK UNIT的T4接 MAIN CONTROL UNIT 的T4,其余需要的信号同实验二连接。

(2)从总线向移位器299直接置数: ①拨动输入数据开关为要置的二进制数据; ②置控制信号I/O-R?0,Ai=0(数据进入总线);

③拨动S1S0开关=11,按动一次START键,产生T4脉冲,将数据置入移位器299。 (3)求两数之和后再置入299:

-8-

①置数:I/O-R?0,按KK将总线上的数存入DA1,修改总线数据,上下拨动B-DA2将数据置入DA2;

②求和:置S3S2S1S0MCi=100101(即F=A加B算术运算),I/O-R?1,ALU?B?0,置

CyNCn?0,按动START键一次,如果有进位Cy灯亮;

③将和数暂存DA1:此时总线上显示的是两数之和,置上的和数暂存DA1;

CyNCn?1,按KK键一次,将总线

④和数装入299:置S3S2S1S0MCi=111100(即F=A运算,DA1保存的数据显示在总线上,刚好S1S0开关=11),按动START键一次。

(4)移位:参照移位菜单,改变 299-B、M、S1、S0的值,按动START键,观察总线显示灯,记录移位结果。

5.实验要求

(1)将数据0B6H进行各种移位并记录结果和标志,分析结果是否正确。 (2)将数据79H进行各种移位并记录结果和标志,分析结果是否正确。

(3)设计一个实验电路,实现将0B6H+79H的和进行带进位循环左移的功能,画出接线图,写出实验步骤。

(4)思考是否能实现双字节的循环移位?若能,写出你的实验方案(电路、边线和步骤);若不能,说出你的理由。

-9-

实验4 存储器读/写实验

1.实验目的

(1)掌握主存储器的构成和工作特性; (2)掌握读或写主存储器的方法。

2.实验设备

YY-Z02计算机组成原理教学实验系统一台,排线若干。

3.实验原理

本实验涉及的电路有存储器单元(MEM UNIT)、时序电路单元(CLOCK UNIT)、手动单元(MANUAL

UNIT)、地址单元(ADDRESS UNIT)、输入/输出单元(OUTPUT/INPUT UNIT)等。在脱机方式下,各单元的大部分控制信号都由MANUAL UNIT 的开关直接控制。例如,存储器单元的M-W信号和M-R信号由MANUAL UNIT的M-W和M-R开关控制,M-R?0表示读存储器,M-W?0表示写存储器。由于MANUAL UNIT中每个开关的结构都一样且彼此独立,如果某控制信号在MANUAL UNIT中没有同名的开关与它对应,也可以用其他的开关代替。其连接原理图如图4-1所示。

本实验中,产生存储器读写地址的方法是:由输入设备(INPUT DEVICE)直接把要读写的存储器地址打入地址寄存器AR中。先拨输入开关D7~D0,并使I/O-R?0和Ai =0,将存储器读写地址送到总线。B-AR是给AR存数据的控制信号,低脉冲值有效( ),将总线上的数据被写入AR;当B-AR没有脉冲时,AR(74LS273)的输入端就被锁住,其输入端的改变将不能影响到它的输出值。

写存储器的方法是:先送存储器地址,由输入设备(INPUT DEVICE)将地址打入总线,并锁

-10-

存在地址存储器AR中,再设置存储器为写状态M-W?0(Yy-Z02实验仪上存储器芯片6116的CE恒接地),将数据写入指定地址的存储器单元内,置存储器写信号M-W?1,撤消其他控制信号。

数据在输出设备(OUTPUT DEVICE)上显示的方法是:置I/O-W?0,Ai =0将要显示的总线数据送到发光管显示(Ai为OUTPUT/INPUT UNIT的线选地址)。

4.实验步骤

(1)连接实验线路:按照图4-1原理自行设计并连接实验线路,仔细检查连线无误后,接通电源。

(2)置存储器地址:按照图4-2的操作顺序拨动开关。 (3)置存储器内容。

(4)依次在输出设备(OUTPUT DEVICE)显示存储器单元的地址和内容。

置控制信号为初始值: 拨INPUT的数据开关(8位二进制地址) 将地址送上总线拨输入端控制信号: I /0?R?1,M?R?1,I/0?R?0,Ai=0,打开地址寄存器,B-AR= M?W?1,B-AR=0 I/0?R?1 依上述做法,将寄存器地址送入地址拨M?W?1 将数据送上总线拨INPUT的数据开关(8位二进制数据) 寄存器 读寄存器信号置M?R?0,将寄存器单元内容送上总线 I/0?R?1 I/0?R?0,置写寄存器信号M?W?0,数据写入 置I/0?W?0,Ai=0, OUTPUT发光管显示存储器读出的数据 图4-2 存储器实验的操作流程 5.实验要求

(1)依次向三个存储器单元(01H、02H、03H)中分别写入数据(81H、6EH、2CH),并分别显示输出。

(2)思考:把地址和数据写入存储器的操作有什么不同,为什么?

-11-

实验5 总线数据传送控制实验

1.实验目的

(1)理解总线的概念、作用和特性; (2)掌握用总线控制数据传送的方法。

2.实验设备

YY-Z02计算机组成原理教学实验系统一台,排线若干。

3.实验原理

总线是在计算机各部件之间实现数据、地址和控制信号传送功能的公用信息线。本实验涉及的电路有寄存器单元(REG UNIT)、时序电路单元(CLOCK UNIT)、手动单元(MANUAL UNIT)、运算器单元(ALU UNIT)、输入/输出单元(OUTPUT/INPUT UNIT)等,存储器、寄存器、输入/输出单元等互相之间都不是直接相连的,而是分别挂到总线上,通过总线达到互相连接的目的。各个部件都有自己的输入输出控制信号,通过对这些信号的有效控制,就可以正确地通过总线把数据传送给不同的部件。其实验原理图如图5-1所示。

本实验在脱机方式下完成,各部件的控制信号大部分都用MANUAL UNIT中的开关手工控制。由于 MANUAL UNIT 中每个开关的结构都一样且彼此独立,如果某控制信号在MANUAL UNIT没有同名的开关与它对应,也可以用其他的开关代替。

本实验的时序信号用到T4,可将 CLOCK UNIT中KK2的 插座引入单脉冲,既将KK2连接到MAIN CONTROL UNIT 的T4。每按动一次KK,在T4插座上得到一个 脉冲。或改由START开关控制,具体做法是:连接CLOCK UNIT中T4插座与MAIN CONTROL UNIT 的T4插座,每按动一次START 开关,T4插座上得到一个 脉冲。

4.实验步骤

-12-

(1)连接实验线路:按照图5-1原理自行设计并连接实验线路,仔细检查连线无误后,接通电源。

(2)输入一个数据,放入某个寄存器中。

(3)将该寄存器中的数据进行移位运算,结果在OUTPUT/INPUT UNIT 的输入设备(OUTPUT DEVICE)的发光管上显示,同时观察进位标志位CY的值。

具体操作步骤见图5-2。

图5-2 存储器实验的操作流程图

5.实验要求

(1)输入数据94H,放入寄存器R0中。

(2)将R0中的数据带进位循环左移一位,结果在 OUTPUT/INPUT UNIT 的输出设备(OUTPUT DEVICE)上显示,同时观察进位标志位CY的值。

(3)将R0中的数据循环右移一位,结果在 OUTPUT/INPUT UNIT 的输出设备(OUTPUT DEVICE)发光管上显示,同时观察进位标志位CY的值。

(4)思考:系统总线的类型及在计算机中的作用。

-13-

实验六 控制器实验一(微码装入与执行)

1.实验目的

(1)掌握时序产生器、微控制器的工作原理;

(2)掌握微程序的编制、装入、执行方法,观察微程序的运行过程。

2.实验设备

YY-Z02计算机组成原理教学实验系统一台,排线若干。

3.实验原理

本实验实验主要是针对微控制器单元来进行的,所涉及的电路只有微控制单元(MAIN CONTROL UNIT)和时序电路单元(CLOCK UNIT)。通过微控制单元中的编程开关(三个状态)来控制实现微码装入、校验、执行。微码装入与校验时的微地址,由手动单元(MANUAL UNIT)的开关拨入(经排线连接)。图6-1是该实验连接线路图,图6-2是其对应的微程序流程图和控制台操作图,表6-1是控存中的微指令编码。

时序电路单元(CLOCK UNIT)中的T1~T4信号,必须送至MAIN CONTROL UNIT 的T1~T4(通过排线),其他各个单元使用的时序信号T1-T4均已和MAIN CONTROL UNIT的T1~T4连接好。

图6-1连接线路图

-14-

图6-2微程序流程图

表6-1实验六微码表 微地址 00H 01H 02H 03H 04H 05H 06H 07H 08H 09H 0AH 0BH 0CH 0DH 0EH 0FH 1CH 1DH 20H 21H 22H 23H 24H 25H 26H 27H 28H 29H 2AH 30H 31H 32H

微代码 01C008 DC4002 610003 00C010 C10005 820001 C10007 410020 000001 DC400C C40E0F 000001 21000D C40E0E 058109 22001C DC401D 04BE0A 300021 87E51 C10023 108001 C10028 210026 DC4027 C10028 058101 21002A E44101 DC4004 DC4006 DC4022 BTO 000 110 011 000 110 100 110 010 000 110 110 000 001 110 000 001 110 000 001 100 110 000 110 001 110 110 000 001 111 110 110 110 OTB 000 111 000 000 000 000 000 000 000 111 001 000 000 001 001 000 111 001 100 001 000 100 000 000 111 000 001 000 001 111 111 111 FUNC 011 000 010 001 010 100 010 010 000 000 000 000 010 000 011 100 000 001 000 111 010 001 010 010 000 010 011 010 000 000 000 000 FS 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 1 1 1 S3 S2 S1 S0 M Ci 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 N 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 下址 0001000 0000010 0000011 0010000 0000101 0000001 0000111 0100000 0000001 0001100 0001111 0000001 0001101 0001110 0001001 0011100 0011101 0001010 0100001 0100011 0000001 0100101 0100110 0100111 0101000 0000001 1000000 0000001 0000100 0000110 0100010 微指令注释 J(3) PC->AR,PC=PC+1 RAM->IR J(1) RAM->AR IN->DR RAM->AR RAM->DA2 NULL PC->AR,PC=PC+1 0->AR NULL RAM->DA1 0->AR DA1->OUT IN->DA1 PC->AR,PC=PC+1 DA1->RAM DR->DA1 RAM->AR DR->RAM RAM->AR RAM->DA1 PC->AR,PC=PC+1 RAM->AR DA1->OUT RAM->DA1 DA1->PC,PC+1有效 PC->AR,PC=PC+1 PC->AR,PC=PC+1 PC->AR,PC=PC+1 -15-

1 0 0 1 0 1 0 0000001 DA1+DA2->DR,CyNCn

33H 34H DC4024 DC4029 110 110 111 111 000 000 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0100100 PC->AR,PC=PC+1 0101001 PC->AR,PC=PC+1 4.实验步骤

(1)连接实验线路:按照图6-1实验线路,仔细检查连线无误后,接通电源。

(2)编写微代码:参见附录2的6.2微指令格式一节 (3)装入微代码

方法一(脱机手工装入):

①将微控器单元(MAIN CONTROL UNIT)右上角的编程开关置于“PROG”状态。 ②将时序电路单元(CLOCK UNIT)中的RUN/STEP开关置于“STEP”状态。 ③从手动单元 (MANUAL UNIT)中的开关“MA6~MA0”上拨入微地址MA6~MA0。

④从微代码开关MK23~MK0上拨入微代码,24位开关对应着24位显示灯(灯亮表示“1”,灯灭表示“0”)。

⑤按动START按键,启动时序,即将24位微代码写入到控存(2816)的相应单元(由微地址MA6~MA0所指定)中。

⑥重复步骤①~⑤,即可将微指令代码一条条装入控存。 方法二(联机装入):参见附录3《上位软件操作》。 (4)检验微码 方法一(手动校验):

①将编程开关置于“READ”状态。

②将时序电路单元(CLOCK UNIT)中的RUN/STEP开关置于“STEP”状态。

③从手动单元 (MANUAL UNIT)中的开关“MA6~MA0”上拨入微地址MA6~MA0。

④按动START按键,启动时序,读入微代码,观察显示灯MD23~MD0的状态(灯亮表示“1”,灯灭表示“0”)。检查读出的微代码是否与写入的相同。如果不同,则将编程开关重新置于“PROG”状态,再执行操作3,装入正确的微代码即可。

⑤重复步骤①~④,即可校验每一条微指令代码。

方法二(联机校验):参见附件中《上位软件使用说明书》的“第三章 操作流程”。 (5)执行微程序 方法一(单步运行):

①将编程开关置于“RUN”状态,将时序电路单元(CLOCK UNIT)中的RUN/STEP开关置于“STEP”状态

②操作CLR开关(在实验板的右下角),使CLR信号“1→0→1”,从而使微地址MA6~MA0

清零,即本机的微程序运行入口为0000000B(00H)。

③按动START按键,启动时序电路,每按动读出并执行一条微指令代码,然后停机。此时,实验台上的微地址显示灯MA6~MA0和微代码显示灯MD23~MD0的状态(灯亮表示“1”,灯灭表示“0”)指示所读出微指令的地址和代码。

-16-

方法二(连续运行):

①将编程开关置于“RUN”状态,将时序电路单元(CLOCK UNIT)中的RUN/STEP开关置于“RUN”状态。

②同单步运行的②。

③按动START按键,启动时序,则可以连续读出(执行)微指令代码,片刻之后,将

RUN/STEP开关置于“STEP”状态,即可停机。

(6)观测时序信号。

用联机软件的时序功能或者双踪示波器,观察方波信号T1~T4的输出。将时序电路中的开关置为“RUN”,按动START按键,从方波上可观察到T1~T4各时刻的波形,比较它们的相互关系,画出波形。

5.实验要求

(1)要求会编写简单微代码,(如加法运算A+B),在脱机方式下将代码装入微控制器,并经校验后运行输出。

(2)将表6-1中的微代码联机装入控制存储器并校验。

(3)从零地址开始执行微程序,观察并记录微地址的变化顺序,并解释其原因。 (4)观察微地址显示灯MA6~MA0和微代码显示灯MD23~MD0的最低7位MD6~MD0状态是否始终保持一致?从理论上讲,是否应该这样?分析为什么。

(5)若要强制使微程序从07H单元开始执行,请结合微程序控制器的结构和原理,说明你的方法,并实现。(提示:使用控制信号SE6~SE0来实现)。

-17-

实验7 控制器实验二(简单模型机设计与实现)

1.实验目的

(1)掌握各部件单元电路实验的基础上,进一步将其组成系统,构成一台基本模型计算机; (2)为其定义五条机器指令,编写相应的微程序和测试程序,并上机调试,掌握整机概念。

2.实验设备

YY-Z02计算机组成原理教学实验系统一台,排线若干。

3.实验原理

在部件实验过程中,各部件的控制信号是通过手动开关、人工模拟产生的,而在本次及以后的整机实验中,各部件的控制信号是在微程序的控制下,由控制器自动产生的,从而实现特定的指令功能。计算机数据通路的控制将由微程序控制器来完成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期全部由微指令组成的序列来完成,即一条机器指令对应着一段微程序。

图7-1是本实验基本模型机的原理图。各部件挂接在总线上,从主存中取出的指令保存在指令寄存器IR中,并将指令码送往指令译码器(INS UNIT),指令译码器则同时结合微控制器及其他部件有关信息进行译码,产生控制微程序流程的信号SE6~SE0,送回微控器。微控器根据SE6~SE0修改下址,产生后继微指令地址,在下一个微周期,则从后继续指令地址取出微指令。微指令的24位编码经内部译码器译码,产生各种微操作控制信号,送往全机各个部件,以控制各部件协调运转,完成微指令所规定的功能。在一段微程序执行完后,相应的该条机器指令也就执行完毕。

(1)指令系统

在本实验中,定义了五条单操作数机器指令,格式和功能如下:(在本实验中DR只为R0) ① IN DR,[PORTAR]

格式: I7 I6 I5 I4 I3 I2 I1 I0 11 0000 DR PORTAR 功能:输入设备(INPUT DEVICE)开关数据送DR,PORTAR为输入设备的端口地址。 ② ADD DR, [ADDR]

格式: I7 I6 I5 I4 I3 I2 I1 I0 11 0001 DR ADDR 功能:(DR)+[ADDR]→DR,结果影响标志;直接寻址,直接地址ADDR在指令第二字节。

-18-

③ STA [ADDR], DR

格式: I7 I6 I5 I4 I3 I2 I1 I0 11 0010 DR ADDR 功能: DR→[ADDR];直接寻址,DR的内容送主存ADDR地址单元。 ④ OUT [PORTAR],[ADDR]

-19-

格式: I7 I6 I5 I4 I3 I2 I1 I0 11 0011 ×× ADDR PORTAR 功能: [ADDR]→LED;直接寻址,主存ADDR地址单元的内容送输出设备发光管显示。PORTAR为输出设备的端口地址,由PORTAR中的Ai位线选。 ⑤ JMP ADDR

格式: I7 I6 I5 I4 I3 I2 I1 I0 11 0011 ×× ADDR 功能:ADDR→PC,微程序跳转到主存ADDR地址继续执行。 (2)控制台操作

为了向主存中手动装入程序和数据,检查写入是否正确,并能启动程序执行,设计了三段控制台操作微程序,以支持三条控制台操作指令,其定义和功能如表7-1所示,后继实验均是相似的控制台操作,不累述。

表7-1控制台操作指令 开关 KB KA 1 0 0 1 0 0 或1 1 控制台指令 读内存 写内存 启动程序 功能 拨动CLR开关“1→0→1”后,按START微动开关, 可对内存连续进行读操作。 拨动CLR开关“1→0→1”后,按START微动开关, 可对内存连续进行写操作。 拨动CLR开关“1→0→1”后,按START微动开关,则转入取指令微程序入口开始执行。 (3)微程序流程图及微码

图7-2控制台操作微程序流程图 图7-3 实验七微程序流程图

控制台操作和以上五条指令操作的微程序流程图分别如图7-2和7-3所示,微代码如表7-1。

-20-

微地址 00H 01H 02H 03H 04H 05H 06H 07H 08H 09H 0AH 0BH 0CH 0DH 0EH 0FH 10H 1CH 1DH 1EH 1FH 20H 21H 22H 23H 24H 25H 26H 27H 28H 29H 2AH 2BH 2CH 微代码 01C008 DC4002 610003 00C010 C10005 820001 C10007 410020 000001 DC400C C40E0F 000001 21000D C40E0E 058109 22001C 000000 DC401D 04BE0A 000000 000000 300021 87E51 C10023 108001 C10025 210026 DC4027 0D8001 000000 000000 000000 000000 D1401E BTO 000 110 011 000 110 100 110 010 000 110 110 000 001 110 000 001 000 110 000 000 000 001 100 110 000 110 001 110 000 000 000 000 000 110 OTB 000 111 000 000 000 000 000 000 000 111 001 000 000 110 001 001 000 110 001 000 000 100 001 000 100 000 000 111 011 000 000 000 000 111 表7-1 实验七微码表 FUNC FS S3S2S1S0MCi N 011 1 0 0 0 0 0 0 0 000 1 0 0 0 0 0 0 0 010 0 0 0 0 0 0 0 0 001 1 0 0 0 0 0 0 0 010 0 0 0 0 0 0 0 0 100 0 0 0 0 0 0 0 0 010 0 0 0 0 0 0 0 0 010 0 0 0 0 0 0 0 0 000 0 0 0 0 0 0 0 0 000 1 0 0 0 0 0 0 0 000 0 0 0 1 1 1 0 0 000 0 0 0 0 0 0 0 0 010 0 0 0 0 0 0 0 0 000 0 0 0 1 1 1 0 0 011 0 0 0 0 0 0 1 0 100 0 0 0 0 0 0 0 0 000 0 0 0 0 0 0 0 0 000 1 0 0 0 0 0 0 0 001 0 1 1 1 1 1 0 0 000 0 0 0 0 0 0 0 0 000 0 0 0 0 0 0 0 0 000 0 0 0 0 0 0 0 0 111 1 1 0 0 1 0 1 0 010 0 0 0 0 0 0 0 0 001 0 0 0 0 0 0 0 0 010 0 0 0 0 0 0 0 0 010 0 0 0 0 0 0 0 0 000 1 0 0 0 0 0 0 0 011 0 0 0 0 0 0 0 0 000 0 0 0 0 0 0 0 0 000 0 0 0 0 0 0 0 0 000 0 0 0 0 0 0 0 0 000 0 0 0 0 0 0 0 0 0001 0 0 0 0 0 0 0 0 下 址 0001000 0000010 0000011 0010000 0000101 0000001 0000111 0100000 0000001 0001100 0001111 0000001 0001101 0001110 0001001 0011100 0000000 0011101 0001010 0000000 0000000 0100001 0000001 0100011 0000001 0100101 0100110 0100111 0000001 0000000 0000000 0000000 0000000 0011110 微指令注释 J(3) PC->AR,PC=PC+1 RAM->IR J(1) RAM->AR IN->DR RAM->AR RAM->DA2 NULL PC->AR,PC=PC+1 0->AR NULL RAM->DA1 0->AR DA1->OUT IN->DA1 NULL PC->AR,PC=PC+1 DA1->RAM NULL NULL DR->DA1 DA1+DA2->DR,CyNCn RAM->AR DR->RAM RAM->AR RAM->DA1 PC->AR,PC=PC+1 RAM->AR NULL NULL NULL NULL NULL (4)测试程序

为测试编制的微程序是否实现了指令规定的功能,须按照指令格式编写一段程序(机器码),装入内存并执行,通过检查结果来判断微程序是否正确。表7-2就是一段测试程序。

表7-2 实验七测试程序 地址 内 容 助记符 备 注 00H 11000000B ;IN R0,[PORTAR] IN-> R0 00000000B ;端口地址 00H 01H 02H 11000100B ;ADD R0,[10H] R0+[10H] -> R0 00010000B ;直接地址 10H 03H 04H 11001000B ;STA R0,[10H] R0 -> [10H] 00010000B ;直接地址 10H 05H

-21-

06H 07H 08H 09H 0AH ?? 10H

11001100B 00010000B 00000000B 11010000B 00000000B ?? ;OUT [10H],[PORTAR] ;直接地址 10H ;端口地址 00H ;JMP 00H ;立即数 00H ;和 [10H] -> LED 00H->PC ;须检验的结果 4.实验步骤

(1)连接实验线路:按照原理图7-1连接实验线路,仔细检查接线无误后,接通电源。(注意:图中连线上有椭圆圈的,需用排线自行连接,否则,线路板内部已连接好。)

(2)装入微程序并校验:参见实验六操作。 (3)装入程序并校验:

方法一:手动装入和校验(使用控制台操作指令进行机器指令的装入与校验) ①装入:

a. 将编程开关置于“RUN”状态,RUN/STEP开关置于“STEP”状态。

b. 操作CLR开关,使CLR信号“1→0→1”,程序计数器PC清零,微地址清零。 c. 开关KBKA置为“0 1”,即写内存状态。

d. 按动启动键START一次,则从控存00H单元开始执行微指令,微地址显示灯显示“0001010”,第二次按动START键,微地址显示灯显示“001111”,此时,将数据开关置为要写入的机器指令代码或数据,再按动START键两次,即完成该条指令的写入,同时PC指向下一个内存单元。继续按动START键,当且仅当微地址显示灯显示“000111”时,才从开关上置入指令代码,直至所有的程序代码写入完毕。

②校验

a. 将编程开关置于“RUN”状态,RUN/STEP开关置于“STEP”状态

b. 操作CLR开关,使CLR信号“1→0→1”,程序计数器PC清零,微地址清零。 c. 开关KB KA置为“1 0”,即读内存状态。

d. 动键START键三次,从控存00H单元开始执行微指令,微地址显示灯显示为0001001→0001100→0001110,此时,输出设备(OUTPUT DEVICE)发光管上将显示内存00H号单元的内容,检查是否与写入的数据相同。继续按动START键,当且仅当微地址显示灯显示0001001时,发光管上显示的内容才是内存的数据。每个循环PC自动增加1,由此,可检查后续单元的内容是否正确。

③若校验有误,则返回到①重新装入,直到所有单元的内容正确。 方法二:联机读/写程序:参见附录3《上位软件操作》。 (4)运行程序

方法一(单步运行):

① 将编程开关置于“RUN”状态:RUN/STEP开关置于“STEP”状态;开关KB KA置为

“0 0”或“1 1”,即启动程序状态。

② 操作CLR开关使信号“1→0→1”,从而使微地址清零,程序计数器PC清零,即程序首

-22-

地址为00H。

③ 每按动一次START键,就单步运行一条微指令,此时可通过观察微地址显示灯,来判断

微程序执行的流程是否正确。 方法二(连续运行):

① 将编程开关置于“RUN”状态:RUN/STEP开关置于“RUN”状态;开关KB KA置为“0

0”或“1 1”。 ② 同上单步运行。

③ 按动START键,启动时序,系统从0地址连续运行程序;稍候,将RUN/STEP开关拨

至“STEP”状态,系统停机。

方法三(联机运行):参见附录3《上位软件操作》。

(5)检查结果是否正确。若有误,则检查和修改微程序代码和程序代码,从(2)开始重新操作,直至正确。

5.实验要求

(1)用手动方式装入表7-2程序代码,并校验。 (2)使用联机方式装入微程序代码。

(3)分别采用脱机和联机方法执行程序,比较和检查结果是否正确。若有误,查找原因并改正。

(4)分析实验的指令系统中,如何实现隐含对R0 (目的操作数)的寻址?如果要隐含使用R1 做目的操作数,如何实现?

(5)分析手动装入程序代码时,为什么必须要在微地址显示灯显示“0001111”时,才从开关上置入指令代码?同时,在手动校验时,为什么只有当微地址显示灯显示“0001001”时,发光管上显示的内容才是内存的数据?

(6)若将OUT指令的操作码改为0101,则微程序必须做什么样的修改? (7)在图7-2的微程序流程图上,最多还可以添加几条机器指令?

-23-

实验8 带移位功能的模型机设计与实现

1.实验目的

综合应用所学计算机组成有原理基本知识,设计并实现具有移位功能的计算机。

2.实验设备

YY-Z02计算机组成原理教学实验系统一台,排线若干。

3.实验原理

本实验基本原理如图8-1所示,是在实验七所描述的模型机的基础上,搭接移位控制电路,其控制信号299?B、M、S1、S0从微控制器产生,其余原理同实验七。其接线图如图8-2所示。

图8-1 移位模型机的原理图

图8-2 移位模型机实验接线图

(1)指令系统

在本实验中,定义了九条机器指令,格式和功能如下(DR默认为R0):

-24-

① STA [ADDR],DR

格式: I7I6 I5I4 I3I2 I1I0 10 00 00 DR ADDR 功能:(DR)0→[ADDR];直接寻址,DR的内容送主存ADDR地址单元。 ② JMP ADDR

格式: I7I6 I5I4 I3I2 I1I0 10 00 01 ×× ADDR 功能: ADDR→PC;跳转到主存ADDR地址继续执行。 ③ ADD DR,[ADDR]

格式: I7I6 I5I4I3I2 I1I0 11 0000 00 ADDR 功能:(DR)+[ADDR]→DR;结果影响标志;直接寻址。直接地址ADDR在指令第二字节。 ④ IN DR,[PORTAR]

格式: I7I6 I5I4I3I2 I1I0 11 0001 DR PORTAR 功能:输入设备(INPUT DEVICE)开关状态→DR,PORTAR为输入设备的端口地址。 ⑤ OUT [PORTAR],DR

格式: I7I6 I5I4I3I2 I1I0 11 0010 DR PORTAR 功能:(DR)→LED;直接寻址,DR 寄存器的内容送输出设备发光管显示。PORTAR为输出设备的端口地址,由PORTAR中的Ai位线选。

⑥ RR

格式: I7I6 I5I4I3I2 I1I0 11 0011 DR 功能:DR寄存器的内容循环右移一位→DR,D0移入D7,移位后不影响FC。 ⑦ RRC

格式: I7I6 I5I4I3I2 I1I0 11 0100 DR 功能:DR寄存器的内容带进位循环右移一位→DR,DR最高位受FC影响,移位后影响FC。 ⑧ RL

格式: I7I6 I5I4I3I2 I1I0 11 0101 DR 功能:DR寄存器的内容循环左移一位→DR,D7移入D0,移位后不影响FC。 ⑨ RLC

格式: I7I6 I5I4I3I2 I1I0 11 0110 DR 功能:DR寄存器的内容带进位循环左移一位→DR,DR最高位受FC影响,移位后影响FC。

-25-

(2)控制台操作(同实验七) (3)微程序流程图及微码

以上九条指令的微程序流程图分别如图8-3所示,其微码如表8—1。

图8-3 移位模型机微程序流程图

表8-1 实验八微码表

微地址 00H 01H 02H 03H 04H 05H 06H 07H 08H 09H 0AH 0BH 0CH 0DH 0EH 0FH 11H 12H 13H 14H 15H 16H 17H 18H 19H 1AH 1BH 1CH 1DH -26-

微代码 01C008 DC4002 610003 00C010 210005 C54120 C10007 410011 000001 DC400C C40E0F 000001 21000D C40E0E 058109 22001C 300012 87E501 C10014 820001 C10016 118001 080819 DC4004 880101 080A1B 880101 DC401D 04BE0A BTO 000 110 011 000 001 110 110 010 000 110 110 000 001 110 000 001 001 100 110 100 110 000 000 110 100 000 100 110 000 OTB 000 111 000 000 000 001 000 000 000 111 001 000 000 001 001 000 100 001 000 000 000 100 010 111 010 010 010 111 001 FUNC 011 000 010 001 010 010 010 010 110 000 000 000 010 000 011 100 000 111 010 100 010 011 000 000 000 000 000 000 001 FS 1 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 S3S2S1S0MCi 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 N 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 下址 0001000 0000010 0000011 0010000 0000101 0100000 0000111 0010001 0000001 0001100 0001111 0000001 0001101 0001110 0001001 0011100 0010010 0000001 0010100 0000001 0010110 0000001 0011001 0000100 0000001 0000001 0000001 0011101 0001010 微指令注释 J (3) PC->AR,PC+1 RAM->IR J (1) RAM->DA1 DA1->AR,J (2) RAM->AR RAM->DA2 NULL PC->AR,PC+1 0->AR NULL RAM->DA1 0->AR DA1->OUT IN->DA1 DR->DA1 DA1+DA2->DR MAR->AR IN->DR MAR->AR DR->LED 循环右移 PC->AR,PC+1 299->DR 带进位循环右移 299->DR PC->AR,PC+1 DA1->RAM 1EH 1FH 20H 21H 22H 23H 30H 31H 32H 33H 34H 35H 36H 08041F 880101 108001 E44101 080623 880001 DC4006 DC4013 DC4015 100C17 100C1A 100C1E 100C22 000 100 000 111 000 100 110 110 110 000 000 000 000 010 010 100 001 010 010 111 111 111 100 100 100 100 000 000 001 000 000 000 000 000 000 000 000 000 000 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0011111 0000001 0000001 0000001 0100011 0000001 0000110 0010011 0010101 0010111 0011010 0011110 0100010 循环左移 299->DR DR->RAM DA1->PC,PC+1=1 带进位循环左移 299->DR PC->AR,PC+1 PC->AR,PC+1 PC->AR,PC+1 DR->299 DR->299 DR->299 DR->299 4.实验操作过程

(1)连接实验线路:按图8-2连接线路,仔细检查连线无误后,接通电源。 (2)装入微程序并校验:参见实验六微码的装入与执行。 (3)测试程序的装入与校验:参见实验七 表8-2 所示的是该实验的测试程序。

-27-

表8-2 测试程序

地址 00H 01H 02H 03H 04H 05H 06H 07H 08H 09H 0AH 0BH 0CH 0DH 0EH 0FH 10H 内容 11000100B 000000000B 11000000B 00001111B 11011000B 11000100B 00000000B 11010000B 11010100B 10000000B 00010000B 11001000B 00000000B 10000100B 00000000B 01000011B 助记符 ;IN R0,[PORTAR] ;端口地址00H ;ADD R0,[0FH] ;直接地址0FH ;RLC R0 ;IN R0,[PORTAR] ;端口地址00H ;RRC R0 ;RL R0 ;STA[10H],R0 ;直接地址10H ;OUT[PORTAR],R0 ;端口地址00H ;JMP 00H ;直接地址00H ;累加的数据 ;结果 备注 输入设备开关数据→R0 (R0)+[0FH] →R0 R0带进位循环左移一位→R0 INPUT开关数据→R0 R0带进位循环右移一位→R0 R0循环左移一位→R0 (R0)→[10H] (R0)→LED 00H→PC 自定 检查的结果 (4)运行程序:参见实验七 (5)检查结果。

在PC机上通过联机方式可对实验仪进行单步微指令执行、单步指令执行、连续指令执行及断点运行,通过PC机上显示的界面可观察当前微指令的数据流向、控制信号和各个单元的状态。还可以通过时序窗观察信号、数据的时序波形。通过这些手段可判断出实验是否正确连线,程序和微程序是否正确运行等内容。

通过观察实验仪上发光二极管显示,检查结果是否与期望值相同,若不同,则先观察单步执行过程是否有误,有误则检查开关状态是否正确,无误再核对指令码和微码的编写是否正确,纠正错误后从第二步开始实验,直至得到正确实验结果。

5.实验要求

(1)通过联机方式装入、测试的程序。 (2)编写并装入微程序代码。

(3)分单步执行程序,实现各种移位功能,检查结果是否正确,如果不正确,查找原因并解决问题。

(4)思考:如何设计实现双字节的联合移位?

-28-

实验9 具有中断功能的模型机设计与实现

1.实验目的

综合应用所学计算机组成有原理基本知识,设计并实现具有中断功能的计算机。

2.实验设备

YY-Z02计算机组成原理教学实验系统一台,排线若干。

3.实验原理

本实验是在实现实验七和实验八的模型机设计的基础上,增加中断控制电路和中断向量输入电路,实现响应中断请求并转中断子程序及返回等功能。系统包含中断向量输入开关、中断向量输入缓冲器及D触发器。外部中断请就信号INT-EX由KK单脉冲产生作为D触发器的触发脉冲,产生内部中断请求信号INT。每当一条指令执行结束时都判断INT是否有效,若无效则继续下一条指令的执行,若有效则由微控制器产生INT?R中断响应信号,该信号一方面将中断向量开关从缓冲器读到总线并置入PC,使其转入中断程序执行,另一方面将两个D触发器清零,使其无法响应外部中断请求。只有在微控器产生INT?E信号时才使两个D触发器能够响应外部中断请求。

该实验连线将INS UNIT 的寄存器译码电路输入输出信号均加以连接,这样可以使用所有寄存器,其中SP为R3寄存器,其余原理同前面两个实验,原理图如图9-1所示。

图9-1 具有中断功能模型机的原理图

-29-

图9-2 具有中断功能模型机的实验接线图 (1)指令系统

在本实验中,定义了十条机器指令,格式和功能如下: ① ADD DR,SR

格式: I7I6I5I4 I3I2 I1I0 0000 SR DR 功能: (SR)+(DR)→DR:不带进位但是影响进位(FC)和零位(FZ)。 ② HIT

格式: I7I6I5I4 I3I2 I1I0 0001 ×× ×× 功能: 停机,只有有中断时才会跳出,执行完成中断程序后继续执行下一条指令。 ③ JMP ADDR

格式: I7I6 I5I4 I3I2 I1I0 10 00 00 ×× ADDR 功能:ADDR→PC;结果不影响标志;直接寻址,直接地址ADDR在指令第二字节。

-30-

图9-3具有中断功能模型机的微程序流程图 ④ IN DR,[PORTA]

格式: I7I6 I5I4I3I2 I1I0 11 0000 DR PORTAR 功能: 输入设备(INPUT DEVICE)中的开关状态→DR,PORTAR为输入单元的端口地址。 ⑤ OUT [PORTAR],DR

格式: I7I6 I5I4I3I2 I1I0 11 0001 DR PORTAR 功能(DR)→LED:直接寻址,DR寄存器的内容送输出单元发光管显示。PORTAR为输出设备(OUTPUT DEVICE)的端口地址,有PORTAR中的Ai位线选。

⑥ IRET

格式: I7I6 I5I4I3I2 I1I0 11 0010 DR 功能:中断程序返回指令。

⑦ INC

格式: I7I6 I5I4I3I2 I1I0 11 0011 DR 功能:(DR)+1→DR,相加后影响FC,FZ。

图9-4 中断处理流

程图

⑧ MOVSP

-31-

格式: I7I6 I5I4I3I2 I1I0 11 0100 ×× DATA 功能:DATA→SP。 ⑨ STI

格式: I7I6 I5I4I3I2 I1I0 11 0101 ×× 功能:中断允许。

⑩ CLI

格式: I7I6 I5I4I3I2 I1I0 11 0110 ×× 功能:中断禁止。

(3)程序流程图及微码

具有中断功能模型机的程序流程图如图9-3所示,中断处理流程图如图9-4所示,其微码如表9-1。

表 9-1微指令码表 微地址 微代码 00H 01C008 01H DC4002 02H 610003 03H 00C010 04H 500005 05H 87E57F 06H 500007 07H 87657F 08H 000001 09H DC400C 0AH C40C0F 0BH 000001 0CH 21000D 0DH C40C0E 0EH 05BC09 0FH 22001C 10H 2C0004 11H 2C0006 12H 2C001E 13H 2C0024 14H 2C0026 15H 2C0028 16H 8C007F 17H 02C045 18H DC402A 19H DC402C 1AH DC4053 1BH DC402F 1CH DC401D 1DH 04810A 1EH 50001F 1FH 87D87F 20H 81007F 21H 10807F 22H E4417F 23H 024040 24H 500025 -32-

BTO 000 110 011 000 010 100 010 100 000 110 110 000 001 110 000 001 001 001 001 001 001 001 100 000 110 110 110 110 110 000 010 100 100 000 111 000 010 OTB 000 111 000 000 100 001 100 001 000 111 001 000 000 001 001 000 011 011 011 011 011 011 011 000 111 111 111 111 111 001 100 001 000 100 001 000 100 FUNC 001 000 010 001 000 111 000 110 000 000 000 000 010 000 011 100 000 000 000 000 000 000 000 101 000 000 000 000 000 001 000 111 010 001 000 100 000 FS 1 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 1 0 0 1 1 0 S3S2S1S0MCi 000000 000000 000000 000000 000000 100101 000000 100101 000000 000000 001100 000000 000000 001100 111100 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000001 000000 011000 000000 000000 000001 000000 000000 N 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 下 址 0001000 0000010 0000011 0010000 0000101 1111111 0000111 1111111 0000001 0001100 0001111 0000001 0001101 0001110 0001001 0011100 0000100 0000110 0011110 0100100 0100110 0101000 1111111 1000101 0101010 0101100 1010011 0101111 0011101 0001010 0011111 1111111 1111111 1111111 1111111 1000000 0100101 微指令注释 J(3) PC->AR,PC=PC+1 RAM->IR J(1) DR->DA2 DA1+DA2->DR,CyNCn DR->DA2 DA1+DA2->DR,CyNCn NULL PC->AR,PC=PC+1 0->AR NULL RAM->DA1 0->AR DA1->OUT IN->DA1 SR->DA1 SR->DA1 SR->DA1 SR->DA1 SR->DA1 SR->DA1 SR->DR J(5) PC->AR,PC=PC+1 PC->AR,PC=PC+1 PC->AR,PC=PC+1 PC->AR,PC=PC+1 PC->AR,PC=PC+1 DA1->RAM DR->DA2 DA1-DA2>DR,CyNCn RAM->DR DR->RAM DA1->PC,PC+1有效 J(4) DR->DA2 25H 26H 27H 28H 29H 2AH 2BH 2CH 87587F 500027 84EE7F 500029 84FA7F 21002B 54002E 21002D 100 010 100 101 100 001 010 001 001 100 001 100 001 000 101 000 110 000 111 000 111 010 000 010 1 0 1 0 1 0 0 0 011000 000000 101110 000000 111010 000000 000000 000000 0 0 0 0 0 0 0 0 1111111 0100111 1111111 0101001 1111111 0101011 0101110 0101101 DA1-DA2>DR,CyCn DR->DA2 DA1&&DA2->DR,CyNCn DR->DA2 DA1|DA2->DR,CyNCn RAM->DA1 SI->DA2 RAM->DA1 4.实验操作过程

(1)连接实验线路:按图9-2连接线路,仔细检查连线无误后,接通电源。 (2)编写并装入微程序代码

根据图9-3给出的流程图,编写微程序代码表,并用上位机软件装入到上位机中。 (3)测试程序

为测试所编制的微程序是否实现了指令规定的功能,可以按照指令格式编写一段程序(机器码),装入内存并执行,通过检查结果来判断微程序的正确性。该实验的测试程序如表9-2所示:

-33-

表9-2 测试程序

地址 00H 01H 02H 03H 04H 05H 06H 07H 08H 09H 0AH 0DH 0EH 0FH 10H 11H 内容 11010100B 11010000B 11111111B 11000000B 00000000B 11000001B 00000000B 00000001B 00010000B 10000000B 00000101B 11001100B 11000100B 00000000B 11010100B 11001000B 助记符 ;STI ;MOVSP 0FFH ;立即数 0FFH ;IN R0,PORTAR ;端口地址00H ;IN R1,[PORTAR] ;端口地址00H ;ADD R1,R0 ;HLT ;JMP ;直接地址05H ;INC R0 ;OUT PORTAR,R0 ;端口地址00H ;STI ;IRET 开中断 0FFH →SP INPUT DEVICE开关数据→R0 INPUT DEVICE开关数据→R1 (R1)+(R0)→(R1) 停机,等待中断 05H→PC (R0)+1→R0 (R0)→LED 开中断 中断返回 备注 (4)运行程序与检查结果 方法参见实验七

5.实验要求

(1)通过联机方式装入、测试的程序; (2)编写并装入微程序代码;

(3)设置中断向量,连续执行程序,检查中断响应是否正确,若不正确要查找原因并改正。

-34-

实验10 复杂模型机的设计与实现

1.实验目的

综合应用所学计算机组成有原理基本知识,设计并实现具有移位功能的计算机。

2.实验设备

YY-Z02计算机组成原理教学实验系统一台,排线若干。

3.实验原理

本实验包含所有各部件,从主存中取出的指令保存在指令寄存器IR中,并将指令码送往指令译码器(INS UNIT)译码,微控器综合各方面的信息,产生微操作序列号,送往全机各个部件,以控制各部件有序运转,完成机器指令所规定的功能,其原理图如图10-1所示,简略接线如图10-2所示。

图10-1 复杂模型机原理图

(1)指令系统

在本实验中,定义了28条机器指令,格式和功能如下: 1)一般指令格式的指令

格式: I7I6I5I4 I3I2 I1I0 OP SR DR ① ADD DR,SR 格式: I7I6I5I4 I3I2 I1I0 0000 SR DR 功能: (SR)+(DR)→DR -35-

图10-2 复杂模型机的接线图

② ADC DR,SR

格式: I7I6I5I4 I3I2 I1I0 0001 SR DR 功能: (SR)+(DR)+FC→D

③ SUB DR,SR

格式: I7I6I5I4 I3I2 I1I0 0010 SR DR 功能: (SR)-(DR)→DR

④ SUC DR,SR

格式: I7I6I5I4 I3I2 I1I0 0011 SR DR 功能: (SR)-(DR)-FC→DR

⑤ AND DR,DR

格式: I7I6I5I4 I3I2 I1I0 0100 SR DR 功能: (SR)∧(DR)→DR

⑥ OR DR,DR

格式: I7I6I5I4 I3I2 I1I0 0101 SR DR 功能: (SR)∨(DR)→DR

⑦ MOV1 DR,SR

格式: I7I6I5I4 I3I2 I1I0 0110 SR DR -36-

功能: (SR)→DR

⑧ HLT

格式: I7I6I5I4 I3I2 I1I0 0111 ×× ×× 功能: 停机,只有有中断时才会跳出该指令。 2)存储器访问及转移类指令(有4条)

格式: I7I6 I5I4 I3I2 I1I0 10 MOD OP2 DR ADDR/DISP/X 寻址方式定义:

MOD=00:变址寻址,有效地址EA=(RI)+X;其中SI隐含为R2; MOD=01:相对寻址,有交地址EA=(PC)+DISP; MOD=10:直接寻址,有效地址EA=ADDR; MOD=11:间接寻址,有效地址EA=(ADDR)。 操作码及功能见下表所示:

助记符 操作码OP2 功能 LDA 00 [EA] →DR STA 01 DR→[EA] JMP 10 EA→PC BZC 11 若FC+FZ=1,则EA→PC,否则,结束指令 3)操作码扩展指令(单字节指令) 格式: I7I6 I5I4I3I2 I1I0 11 OP DR ① RR DR

格式: I7I6 I5I4I3I2 I1I0 11 0010 DR 功能: DR寄存器的内容循环右移 ② RL DR

格式: I7I6 I5I4I3I2 I1I0 11 0011 DR 功能: DR寄存器的内容循环左移 ③ RRC DR

格式: I7I6 I5I4I3I2 I1I0 11 0100 DR 功能: DR寄存器的内容 带进位循环右移 ④ RLC DR

格式: I7I6 I5I4I3I2 I1I0

-37-

11 0101 DR 功能: DR寄存器的内容带进位循环左移 ⑤ STI

格式: I7I6 I5I4I3I2 I1I0 11 功能: 开中断 ⑥ INC DR

格式: I7I6 I5I4I3I2 I1I0 11 功能:(DR)+1→DR ⑦ DEC DR

格式: I7I6 I5I4I3I2 I1I0 11 功能:(DR)-1→DR ⑧ IRET

格式: I7I6 I5I4I3I2 I1I0

11 功能:中断返回指令 ⑨RET

格式: I7I6 I5I4I3I2 I1I0 11 功能:子程序返回指令 ⑩ CLI

格式: I7I6 I5I4I3I2 I1I0

11 功能:关中断指令 ⑾ PUSH

格式: I7I6 I5I4I3I2 I1I0 11 1101 ×× 1100 ×× 1011 ×× 1001 ×× 1000 DR 0111 DR 0110 ×× 功能:(SP)-1→SP,(DR)→SP(DR进栈) ⑿ POP

格式: I7I6 I5I4I3I2 I1I0 11 1110 ×× 功能:[SP]→DR,(SP)+1→SP (栈→DR) 4)操作码扩展指令,双字节指令

格式: I7I6 I5I4I3I2 I1I0

-38-

11 OP PORTAR/ADDR/X DR ① IN DR,[PORTAR]

格式: I7I6 I5I4I3I2 I1I0 11 0000 DR PORTAR 功能:[PORTAR] →DR(PORTAR的值由实验联线的情况而定) ② OUT [PORTAR] ,DR

格式: I7I6 I5I4I3I2 I1I0 11 0001 DR PORTAR 功能: DR →[PORTAR](PORTAR的值由实验联线的情况而定) ③ CALL ADDR

格式: I7I6 I5I4I3I2 I1I0 11 1010 ×× ADDR 功能:调用子程序(ADDR是子程序的地址) ④ MOV2 DR,X

格式: I7I6 I5I4I3I2 I1I0 11 1111 DR DATA 功能:DATA →DR (2)程序流程图及微码

复杂模型机的一般指令程序流程图如图10-3所示,其操作码扩展指令流程图如图10-4所示,其微码如表10-1。

-39-

图10-3 一般指令及访存指令流程图

图10-4 操作码扩展指令流程图

-40-

表 10—1微指令码表

微地址 00H 01H 02H 03H 04H 05H 06H 07H 08H 09H 0AH 0BH 0CH 0DH 0EH 0FH 10H 11H 12H 13H 14H 15H 16H 17H 18H 19H 1AH 1BH 1CH 1DH 1EH 1FH 20H 21H 22H 23H 24H 25H 26H 27H 微代码 01C008 DC4002 610003 00C010 500005 87E57F 500007 87657F 000001 DC400C C40C0F 000001 21000D C40C0E 05BC09 22001C 2C0004 2C0006 2C001E 2C0024 2C0026 2C0028 8C007F 02C045 DC402A DC402C DC4053 DC402F DC401D 04810A 50001F 87D87F 81007F 10807F E4417F 024040 500025 87587F 500027 84EE7F BTO OTB 000 000 110 111 011 000 000 000 010 100 100 001 010 100 100 001 000 000 110 111 110 001 000 000 001 000 110 001 000 001 001 000 001 011 001 011 001 011 001 011 001 011 001 011 100 011 000 000 110 111 110 111 110 111 110 111 110 111 000 001 010 100 100 001 100 000 000 100 111 001 000 000 010 100 100 001 010 100 100 001 FUNC 001 000 010 001 000 111 000 110 000 000 000 000 010 000 011 100 000 000 000 000 000 000 000 101 000 000 000 000 000 001 000 111 010 001 000 100 000 110 000 111 FS 1 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 1 0 0 1 1 0 1 0 1 S3S2S1S0MCi 000000 000000 000000 000000 000000 100101 000000 100101 000000 000000 001100 000000 000000 001100 111100 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000001 000000 011000 000000 000000 000001 000000 000000 011000 000000 101110 N 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 下址 0001000 0000010 0000011 0010000 0000101 1111111 0000111 1111111 0000001 0001100 0001111 0000001 0001101 0001110 0001001 0011100 0000100 0000110 0011110 0100100 0100110 0101000 1111111 1000101 0101010 0101100 1010011 0101111 0011101 0001010 0011111 1111111 1111111 1111111 1111111 1000000 0100101 1111111 0100111 1111111 微指令注释 J(3) PC->AR,PC=PC+1 RAM->IR J(1) DR->DA2 DA1+DA2->DR,CyNCn DR->DA2 DA1+DA2->DR,CyNCn NULL PC->AR,PC=PC+1 0->AR NULL RAM->DA1 0->AR DA1->OUT IN->DA1 SR->DA1 SR->DA1 SR->DA1 SR->DA1 SR->DA1 SR->DA1 SR->DR J(5) PC->AR,PC=PC+1 PC->AR,PC=PC+1 PC->AR,PC=PC+1 PC->AR,PC=PC+1 PC->AR,PC=PC+1 DA1->RAM DR->DA2 DA1-DA2>DR,CyNCn RAM->DR DR->RAM DA1->PC,PC+1有效 J(4) DR->DA2 DA1-DA2>DR,CyCn DR->DA2 DA1&&DA2->DR,CyNCn -41-

微地址 28H 29H 2AH 2BH 2CH 2DH 2EH 2FH 30H 31H 32H 33H 34H 35H 36H 37H 38H 39H 3AH 3BH 3CH 3DH 3EH 3FH 40H 41H 42H 43H 44H 45H 46H 47H 48H 49H 4AH 4BH 4CH 4DH 4EH 4FH 微代码 500029 84FA7F 21002B 54002E 21002D 5C002E 242546 C1007E DC4047 DC4049 100C4B 100C4D 100C4F 100C51 03007F 300054 300055 D80056 DC405A D80060 028001 380066 D80069 DC406C 00007F E4417F E4417F E4417F 000001 000017 C54120 C10048 82007F C1004A 11807F 08084C 88007F 08044E 88007F 080A50 BTO OTB 101 100 100 001 001 000 010 101 001 000 010 111 001 001 110 000 110 111 110 111 000 100 000 100 000 100 000 100 000 000 001 100 001 100 110 110 110 111 110 110 000 000 001 110 110 110 110 111 000 000 111 001 111 001 111 001 000 000 000 000 110 001 110 000 100 000 110 000 000 100 000 010 100 010 000 010 100 010 000 010 FUNC 000 111 010 000 010 000 000 010 000 000 000 000 000 000 110 000 000 000 000 000 101 000 000 000 000 000 000 000 000 000 010 010 100 010 011 000 000 000 000 000 FS 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 S3S2S1S0MCi 000000 111010 000000 000000 000000 000000 100101 000000 000000 000000 001100 001100 001100 001100 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000001 000001 000001 000000 000000 000001 000000 000000 000000 000000 001000 000000 000100 000000 001010 N 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 下址 0101001 1111111 0101011 0101110 0101101 0101110 1000110 1111110 1000111 1001001 1001011 1001101 1001111 1010001 1111111 101010 1010101 1010110 1011010 1100000 0000001 1100110 1101001 1101100 1111111 1111111 1111111 1111111 0000001 0010111 0100000 1001000 1111111 1001010 1111111 1001100 1111111 1001110 1111111 1010000 微指令注释 DR->DA2 DA1|DA2->DR,CyNCn RAM->DA1 SI->DA2 RAM->DA1 PC->DA2 DA1+DA2->DA1 RAM->AR PC->AR,PC=PC+1 PC->AR,PC=PC+1 DR->BUS,R299装数 DR->BUS,R299装数 DR->BUS,R299装数 DR->BUS,R299装数 INT->BUS,INT-R=0 DR->DA1 DR->DA1 SP->AR PC->AR,PC=PC+1 SP->AR INT->BUS SP->DA1 SP->AR PC->AR,PC=PC+1 NULL DA1->PC,PC+1有效 DA1->PC,PC+1有效 DA1->PC,PC+1有效 NULL NULL DA1->AR,J(2) RAM->AR IN->DR RAM->AR DR->OUT R299循环右移 R299->DR,R299保持 R299循环左移 R299->DR,R299保持 R299带进位循环右移 -42-

微地址 50H 51H 52H 53H 54H 55H 56H 57H 58H 59H 5AH 5BH 5CH 5DH 5EH 5FH 60H 61H 62H 63H 64H 65H 66H 67H 68H 69H 6AH 6BH 6CH 6DH 6EH 6FH 70H 71H 7FH 微代码 BTO OTB 88007F 100 010 080652 000 010 88007F 100 010 210246 001 000 87C07F 100 001 87FD7F 100 001 210057 001 000 E44158 111 001 380059 001 110 A7807F 101 001 41005B 010 000 3B805C 001 110 A7BD5D 101 001 D8005E 110 110 1C805F 000 111 E46A7F 111 001 210061 001 000 E44162 111 001 380063 001 110 A7807F 101 001 38006D 001 110 000064 000 000 A7BD67 101 001 D80068 110 110 10807F 000 100 81006A 100 000 38006B 001 110 A7807F 101 001 81007F 100 000 A7BD6E 101 001 D8006F 110 110 1C8070 000 111 228071 001 000 E44101 111 001 02C044 000 000 FUNC 000 000 000 010 111 111 010 000 000 111 010 111 111 000 001 000 010 000 000 111 000 000 111 000 001 010 000 111 010 111 000 001 101 000 101 FS 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 S3S2S1S0MCi 000000 000110 000000 000010 000000 111101 000000 000001 000000 000000 000000 000000 1111101 000000 000000 101010 000000 000001 000000 000000 000000 000000 111101 000000 000000 000000 000000 000000 000000 111101 000000 000000 000000 000001 000000 N 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 下址 1111111 1010010 1111111 1000110 1111111 1111111 1010111 1011000 1011001 1111111 1011011 1011100 1011101 1011110 1011111 1111111 1100001 1100010 1100011 1111111 1101101 1100100 1100111 1101000 1111111 1101010 1101011 1111111 1111111 1101110 1101111 1110000 1110001 0000001 1000100 微指令注释 R299->DR,R299保持 R299带进位循环左移 R299->DR,R299保持 RAM->DA1 DA1+1->DR,CyNCn DA1-1->DR,CyNCn RAM->DA1 DA1->PC,PC+1有效 SP->DA1 DA1+1->SP RAM->DA2 SP->DA1 DA1-1->SP SP->AR PC->RAM DA2->PC,PC+1有效 RAM->DA1 DA1->PC,PC+1有效 SP->DA1 DA1+1->SP SP->DA1 NULL DA1-1->SP SP->AR DR->RAM RAM->DR SP->DA1 DA1+1->SP RAM->DR DA1-1->SP SP->AR PC->RAM INT->DA1 DA->PC,PC+1有效 J(5) 4.实验操作过程 (1)连接实验线路。

按图10-2连接线路,仔细检查连线无误后,接通电源。

(2)编写并装入微程序代码

根据图10-3和10-4给出的流程图,编写微程序代码表,并用上位机软件装入到上位机中。 (3)测试程序

编写测试程序,功能为:将两个存放在内存单元的三字节的数相加,再存回另一内存单元:

数据1:[20H],[21H],[22H] 数据2:[28H],[29H],[2AH] 结果: [2CH],[2DH],[2EH] MOV2 SP,FF MOV2 R2,00

OR R1,R0 ;清除进位 LL: LDA R0,[SI+20H]

LDA R1,[SI+28H] ADC R1,R0

STA [SI+2CH],R1

RLC R0 ;保存进位

-43-

INC R2 CALL L

JZ EE ;采用相对寻址 RRC R0 ;恢复进位 JMP LL

EE: HLT

L: PUSH R2 ;判断R2是否为3

MOV2 R1,03H SUB R2,R1 POP R2 RET

表10-2测试程序

地址 00H 01H 02H 03H 04H 05H 06H 07H 08H 09H 0AH 0BH 0CH 0DH 0EH 0FH 程序 FF FF FE 00 51 80 20 81 28 11 85 2C D4 DE E8 16 解释 MOV2 SP(R3),FFH MOV2 SP(R2),00H OR R1,R2 LDA R0,[SI+20H] LDA R1,[SI+28H] ADC R1,R0 STA [SI+2CH],R1 RLC R0 保存进位 INC R2 CALL L(L=16H) 地址 10H 11H 12H 13H 14H 15H 16H 17H 18H 19H 1AH 1BH 程序 9C 03 D0 A8 05 70 子程序 F6 FD 03 26 FA EC 解释 JZ L2;采用相对寻址 RRC R0;恢复进位 JMP L1(L1=05H) 采用直接寻址 HLT PUSH R2 MOV2 R1,03H SUB R2,R1 POP R2 RET (4)运行程序

运行程序方法上述实验七。 (5)检查结果

在PC机上通过联机方式可对实验仪进行单步微指令执行、单步指令执行、连续指令执行及断点运行,通过PC机的界面可观察当前微指令的数据流向、控制信号和各个单元的状态。还可以通过时序窗口观察信号、数据的时序波形。通过这些手段可判断出实验是否正确连线,程序和微程序是否正确运行等内容。

5.实验要求

(1)将上述测试程序编写成机器码,按微程序流程图编写微代码,然后联机输入机器。 (2)执行程序,检查结果是否正确,检查原因并改正。 (注:此程序的执行时间较长。)

-44-

第3篇 附 录 附录1 指 令 系 统

由于本实验仪的开放型结构,它的指令系统也相对具有可重设计性,因此,在控制器实验中,每个模型机的指令系统设计都是不同的。

1 指令格式框架

下面的指令格式,是实验仪所能实现的指令系统的格式框架;按照下面提供的框架,并参照全机的功能结构,可自行设计指令系统并实现它。

1.1 格式1:一般指令格式

I7I6I5I4 I3I2 I1I0 OP SR DR DATA OP——指令操作码,4位,用于对12条机器指令进行编码,是识别指令的标志,可通过J1方式实现散转。

SR——源寄存器号,2位,用于对四个通用寄存器R0、R1、R2、R3的选择,其内容送总线,只作源操作数。

DR——目的寄存器号,2位,用于对四个通用寄存器R0、R1、R2、R3的选择,其内容可送总线,也可从总线上接受数据,通常作为目的操作数。

DATA——指令的第二个字节,可有可无,其含义也可以由用户自定义,可以是立即数,可以是直接/间接地址,也可以是其它寻址方式用到的地址信息,如相对偏移量、形式地址等等。

1.2 格式2:带寻址方式码的指令格式

I7I6 I5I4 I3I2 I1I0 OP1 MOD OP2 DR ADDR/DISP/X OP1——第一指令操作码,2位,是带寻址方式码的指令(4条)的特征位,与MOD一起,可通过J1方式实现散转。

MOD——寻址方式码,2位,用于对4种寻址方式的编码,至于4种寻址方式的定义,可以自行设计,通常为直接、间接、变址、相对寻址。

OP2——第二个指令操作码,2位,是4条带寻址方式码的指令本身的编码,可通过J2方式实现散转。

DR——目的寄存器号,2位,用于对四个通用寄存器R0、R1、R2、R3的选择,其内容可送总线,也可以从总线上接收数据,通常作为目的操作数。

-45-

ADDR/DISP/X——指令的第二个字节,为寻址方式中所用到的直接/间接地址ADDR,或者是相对寻址的偏移量DISP,或者是变址寻址的形式地址X。

1.3 格式3:三字节指令

I7I6 I5I4 I3I2 I1I0 OP1 MOD OP1 XX ADDR1/DISP/X ADDR2/DISP/X 该指令为双存储器地址的指令,既指令的两个操作数均在存储器内,其余同格式2。

1.4 格式4:操作码扩展指令格式

I7I6 I5I4I3I2 I1I0 1 1 OP ADDR/DISP/X OP——指令操作码,4位,是单寄存器地址指令(16条)的操作码,可通过I7 I6为11方式实现散转。

SR/RD——源或目的寄存器号,2位,用于对四个通用寄存器R0、R1、R2、R3的选择,其内容可送总线,也可以从总线上接收数据。

ADDR/DISP/X——指令的第二个字节,为寻址方式中所用到的直接/间接地址ADDR,或者是相对寻址的偏移量DISP,或者是变址寻址的形式地址X。

SR/DR 2 寻址方式

本实验仪的指令系统,可实现寄存器的直接、寄存器间接、直接、间接、相对、变址、立即数7种基本寻址方式。对于其中相对复杂的寻址方式(直接、间接、相对、变址),可以由指令中的MOD字段来定义,其它相对简单的寻址方式可以直接由指令操作数指定。但是注意,任何一种寻址方式,均可以直接由指令操作码隐含指定。

另外,用户也可以根据需要,自行设计一些特殊的寻址方式,例如相对SR的偏移量寻址方法,即EA=(SR)+ADDR。

对于上一节中的指令格式2,即带寻址方式MOD的指令格式,假设定义: · MOD=00: 直接寻址,则有效地址EA=ADDR,操作数=[ADDR]; · MOD=01: 间接寻址,则有效地址EA=[ADDR],操作数=[[ADDR]] ;

· MOD=10: 变址寻址,则有效地址EA=(SI)+X,操作数=[(SI)+X];其中SI隐含为R2; · MOD=11: 相对寻址,则有效地址EA=(PC)+DISP,操作数=[(PC)+DISP];

3 指令系统设计

3.1指令设计原则

1.指令的格式必须按照上面所规定的格式设计,即操作码OP、源寄存器号SR、目的寄存器

-46-

DR必须按格式规定固定长度和位置,若按照格式2设计指令,则操作码OP分为两段。

2.寻址方式的设计,可以根据需要,或由MOD字段定义,或由操作码隐含指定。 3.指令类型及功能的设计,只需要满足程序设计的要求和需求即可。 4.指令操作码的分配设计,要注意规整性。

3.2 指令系统设计举例

指令系统一:共有12条指令,各条指令的格式、功能、寻址方式如下: 1、5条双寄存器算术逻辑运算类指令: ·格式:

I7I6I5I4 I3I2 I1I0 OP SR DR ·操作码及功能:见表1-1。 表1-1 算术逻辑运算类指令操作码及功能 助记符 操作码OP 功 能 MOV DR, SR 0000 (SR)—>DR ADD DR, SR 0001 (SR)+(DR)→DR SUB DR, SR 0010 (DR)-(SR)→DR AND DR, SR 0011 (SR)∧(DR)→DR RRC DR, SR 0100 (SR)进行带进位循环右移→DR INC DR 110100 (DR)+1→DR DEC DR 111000 (DR)-1→DR CLR DR 111100 0→DR 2、3条单寄存器指令 ·格式:

I7I6 I5I4I3I2 I1I0 1 1 OP DR 3、4条存储器访问指令:

·格式:

I7I6 I5I4 I3I2 I1I0 1 0 MOD OP2 DR ADDR/DISP/X ·寻址方式定义:

MOD=00:直接寻址,则有效地址 EA=ADDR; MOD=01:间接寻址,则有效地址 EA=[ADDR];

MOD=10:变址寻址,则有效地址 EA=(SI)+X;其中SI隐含为R2; MOD=11:相对寻址,则有效地址 EA=(PC)+DISP; · 操作码及功能:见表1-2。

注意:助记符中没有操作数,是因为寻址方式有4种,例如LDA指令可写成: LDA DR,[ADDR];直接寻址 LDA DR,[[ADDR]];间接寻址

-47-

号 LDA DR,[(SI)+X];变址寻址,SI为变址寄存器,并默认R2。 LDA DR,[(PC)+DISP];相对寻址

另外,JZC指令的转移条件是FC+FZ=1,其中FC=1表明有进位或者有借位;而FC=0表明无进位或者无借位;FZ=1表明结果为零,FZ=0表明结果不为零。

表1-2存储器访问类指令操作码及功能

助记符 LDA STA JMP JZC 操作码OP2 00 01 10 11 功 能 [EA]→DR (DR)→EA EA→PC 若FC+FZ=1,则EA →PC,否则,结束指令 4、2条I/0指令:

(1)IN DR,[PORTAR]

· 格式: I7I6 I5I4I3I2 I1I0 11 0000 DR PORTAR · 功能:(IN)→DR;从输入口数据开关(OUTPUT/INPUT UNIT-INPUT PORT)上读入数据至DR寄存器,PORTAR为口地址(实验一般用其中的以为Ai线选该单元)。 (2)OUT DR,[PORTAR]

· 格式: I7I6 I5I4I3I2 I1I0 11 0001 DR PORTAR · 功能:(DR)→LED:将DR寄存器的内容送至输出口并在发光管(OUTPUT/INPUT UNIT-OUTPUT PORT)上显示,PORTAR为输出口地址(实验一般用其中的一位Ai线选该单元)。

5、2条过程控制类指令:

(1)CALL ADDR

· 格式: I7I6 I5I4I3I2 I1I0 11 0010 ×× ADDR · 功能:调用子程序,子程序首地址ADDR在指令的第二字节。它实现的具体操作是,先将(SP)-1→SP,再将(SP)→AR,然后再将PC中的内容送入地址为AR的存储单元中。

(2)RET

· 格式: I7I6 I5I4I3I2 I1I0 11 0011 XX · 功能:子程序返回。它实现的具体操作是,将存储器堆栈内容(由SP指向)读出,送PC,(SP)+1→SP。

指令系统二:共有10条指令,各条指令的格式、功能、寻址方式如下:

1、MOV0 DR,SR

-48-

· 格式: I7I6I5I4 I3I2 I1I0 0000 SR DR · 功能: (SR)→DR

2、MOV1 [DR],SR

· 格式: I7I6I5I4 I3I2 I1I0 0001 SR DR · 功能:(SR)→[(DR)];寄存器间接寻址,SR的内容送DR所指向的存储器单元。

3、MOV2 DR,[ADDR]

· 格式: I7I6I5I4 I3I2 I1I0 0010 XX DR ADDR · 功能:[ADDR] →DR;直接寻址,存储器单元地址ADDR的内容送DR寄存器。 4、MOV3 DR,#DATA

· 格式: I7I6I5I4 I3I2 I1I0 0011 XX DR DATA · 功能:DATA→DR;立即数寻址,立即数DATA送DR寄存器。

5、ADD DR,SR

· 格式: I7I6I5I4 I3I2 I1I0 0100 SR DR · 功能:(SR)+(DR) →DR

6、SUB DR,SR

· 格式: I7I6I5I4 I3I2 I1I0 0101 SR DR · 功能(SR)-(DR) →DR

7、IN DR,[PORTAR]

· 格式: I7I6 I5I4I3I2 I1I0 11 0000 DR PORTAR · 功能(IN)→DR;从输入设备数据开关(OUTPUT/INPUT-INPUT PORT)上读入数据至DR寄存器,PORTAR为输入设备的地址。

8、OUT [PORTAR],[ADDR]

· 格式: I7I6 I5I4I3I2 I1I0 11 0001 XX ADDR PORTAR ·功能:[ADDR]→LED;将存储器单元ADDR的内容送至输出设备数码管(OUTPUT/INPUT-OUTPUT PORT)上显示,PORTAR为输出设备的地址。 9、JMP DISP

· 格式: I7I6I5I4 I3I2I1I0 XXXX 1001

-49-

DISP · 功能:(PC)+DISP→PC;必转至距当前指令DISP个单元处继续执行。 10、HLT

· 格式: I7I6I5I4 I3I2I1I0 1111 XXXX · 功能:动态停机,即反复执行本指令,或反复执行该指令中的微指令。前者通过操作(PC)-1→PC来实现,后者通过设置一条空操作的微指令的下址字段为自身来实现。

4 程序设计

对于开放型结构的实验仪,指令系统的设计灵活性大,没有相应的固定汇编语言。所有的程序设计,均应按照已设计好的指令系统,手工编写机器码,这样可以让学生更真切、更感性地认识到计算机的工作过程和原理。

下面的表1-3所描述的一段程序是按照上述指令系统设计中的“指令系统一”为例编写的,功能是将存储器单元以20H开始的10个数据累加,将和送至2AH。阅读时,注意观察及学习机器码的编写方法。

-50-

本文来源:https://www.bwwdw.com/article/tn8a.html

Top