综合实验COP实验仪中排序方法的探讨.docx

上传人:b****8 文档编号:29738933 上传时间:2023-07-26 格式:DOCX 页数:15 大小:372.01KB
下载 相关 举报
综合实验COP实验仪中排序方法的探讨.docx_第1页
第1页 / 共15页
综合实验COP实验仪中排序方法的探讨.docx_第2页
第2页 / 共15页
综合实验COP实验仪中排序方法的探讨.docx_第3页
第3页 / 共15页
综合实验COP实验仪中排序方法的探讨.docx_第4页
第4页 / 共15页
综合实验COP实验仪中排序方法的探讨.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

综合实验COP实验仪中排序方法的探讨.docx

《综合实验COP实验仪中排序方法的探讨.docx》由会员分享,可在线阅读,更多相关《综合实验COP实验仪中排序方法的探讨.docx(15页珍藏版)》请在冰豆网上搜索。

综合实验COP实验仪中排序方法的探讨.docx

综合实验COP实验仪中排序方法的探讨

模型机综合实验(微程序设计)

一、实验目的

综合运用所学计算机原理知识,设计微程序实现题目规定的指令。

二、实验要求

1.做好预习。

2.上机调试使其能达到在"程序单步"状态正确运行题目规定的程序。

3.完成实验报告(写出调试小结:

在实验中遇到的问题、解决的方法及相关的讨论等)。

三、实验器材

系统计算机、伟福COP2000型计算机组成原理教学实验系统各一台,排线若干。

四、实验内容

(一)任务:

COP2000实验仪中排序方法探讨。

排序。

对于存放在R0~R3中的数进行排序,有序的存回R0~R3。

分析:

对待比较两个数采用减法比较大小,然后按照顺序存回。

针对排序过程可采用不同排序方法,如:

冒泡排序,快速排序等。

并可以查看不同排序方法在实验仪器上的效率。

这个实验过程涉及到数大小比较,数据存储,程序跳转控制,这些过程均能在COP2000计算机组成原理实验仪上完成。

在数据结构中,我们学习了对数字排序的不同算法,并详细学习了算法复杂度。

但是针对我们使用的计算机不能体会到不同算法在时间上的不同。

此次试验能够具体体会算法之间在时间复杂度上的区别。

有一定的实验意义。

综上所述:

本次试验目标至少做出一种排序方法,并在此基础之上比较各种排序方法的效率。

 

(二)总体设计

1.汇编程序流程:

2.程序流程说明:

本程序完成对R0,R1,R2,R3这四个寄存器的排序工作,按R0-R3降序排序。

排序采用冒泡排序法,分别对于R0和R1,R1和R2,R2和R3,三个关系进行判断。

若一个关系的前者小于后者,则通过stack寄存器交换两者的值,若前者大于后者,则继续进行下一个关系的大小判断。

三个关系依次判断一遍之后,可以保证四个数的最小的数在R3中。

再对于三个关系依次判断一遍之后,可以保证第二小的数在R2中,再对于三个关系依次判断一遍之后,可以保证第三小的数在R1中,此时最大的数就在R0中,排序完成。

循环执行了三次,用一个数记住循环计数,这个数存在EM中。

每次执行一次循环之后就减1,当循环计数为0时,程序结束。

 

(三)详细设计

1.硬件平台:

我们所使用的实验仪器为COP2000计算机组成原理实验仪。

COP2000计算机组成原理实验系统由实验平台、开关电源、软件三大部分组成。

实验平台上有寄存器组R0-R3、运算单元、累加器A、暂存器W、直通/左移/右移单元、

地址寄存器、程序计数器、堆栈、中断源、输入/输出单元、存储器单元、微地址寄存器、

指令寄存器、微程序控制器、组合逻辑控制器、扩展座、总线插孔区、微动开关/指示灯、

逻辑笔、脉冲源、20个按键、字符式LCD、RS232口。

模型机的寻址方式分五种:

累加器寻址:

操作数为累加器A,还有些指令是隐含寻址累加器A。

寄存器寻址:

参与运算的数据在R0-R3的寄存器中,

寄存器间接寻址:

参与运算的数据在存储器EM中,数据的地址在寄存器R0-R3中,

存储器直接寻址:

参与运算的数据在存储器EM中,数据的地址为指令的操作数。

立即数寻址:

参与运算的数据为指令的操作数。

其工作界面截图如下图:

COP2000计算机组成原理实验仪软件工作界面

COP2000实验仪器硬件平台结构图如下图:

COP2000计算机组成原理实验仪硬件平台

 

2.指令流程图

模型机的缺省的指令集分几大类:

算术运算指令、逻辑运算指令、移位指令、数据传输指令、跳转指令、中断返回指令、输入/输出指令。

用户可以通过COP2000计算机组成原理实验软件或组成原理实验仪来设计自己的指令集。

此次试验中部分指令是由我们用COP2000计算机组成原理实验软件设计指令功能自行设计的。

下图所示列出本次实验中所用到的指令的周期流程图。

MOV指令周期流程图

相关运算指令周期流程图

跳转指令周期流程图

3.微指令设计:

1)微指令格式

模型机的指令码为8位,根据指令类型的不同,可以有0到2个操作数。

指令码的最低两位用来选择R0-R3寄存器,在微程序控制方式中,用指令码做为微地址来寻址微程序存储器,找到执行该指令的微程序。

而在组合逻辑控制方式中,按时序用指令码产生相应的控制位。

在本模型机中,一条指令最多分四个状态周期,一个状态周期为一个时钟脉冲,每个状态周期产生不同的控制逻辑,实现模型机的各种功能。

模型机有24位控制位以控制寄存器的输入、输出,选择运算器的运算功能,存储器的读写。

24位控制位如下:

24位微命令图示

2)微命令含义

24位微命令控制寄存器的输入、输出,选择运算器的运算功能,存储器的读写功能,其含义如下:

XRD:

外部设备读信号,当给出了外设的地址后,输出此信号,从指定外设读数据。

EMWR:

程序存储器EM写信号。

EMRD:

程序存储器EM读信号。

PCOE:

将程序计数器PC的值送到地址总线ABUS上。

EMEN:

将程序存储器EM与数据总线DBUS接通,由EMWR和EMRD决定是将DBUS数据写到EM中,还是从EM读出数据送到DBUS。

IREN:

将程序存储器EM读出的数据打入指令寄存器IR和微指令计数器uPC。

EINT:

中断返回时清除中断响应和中断请求标志,便于下次中断。

ELP:

PC打入允许,与指令寄存器的IR3、IR2位结合,控制程序跳转。

MAREN:

将数据总线DBUS上数据打入地址寄存器MAR。

MAROE:

将地址寄存器MAR的值送到地址总线ABUS上。

OUTEN:

将数据总线DBUS上数据送到输出端口寄存器OUT里。

STEN:

将数据总线DBUS上数据存入堆栈寄存器ST中。

RRD:

读寄存器组R0-R3,寄存器R?

的选择由指令的最低两位决定。

RWR:

写寄存器组R0-R3,寄存器R?

的选择由指令的最低两位决定。

CN:

决定运算器是否带进位移位,CN=1带进位,CN=0不带进位。

FEN:

将标志位存入ALU内部的标志寄存器。

X2:

X1:

X0:

X2、X1、X0三位组合来译码选择将数据送到DBUS上的寄存器。

WEN:

将数据总线DBUS的值打入工作寄存器W中。

AEN:

将数据总线DBUS的值打入累加器A中。

S2:

S1:

S0:

S2、S1、S0三位组合决定ALU做何种运算。

X2、X1、X0三位组合来译码

 

S2、S1、S0三位组合决定ALU做何种运算

3)指令/微指令表

指令表

 

微指令集

指令含义:

MOVA,MM:

本指令为三个状态周期。

在T2状态时,由上条取指操作取出的指令机器码为78H,存入uPC和IR寄存器后做为微程序存储器uM的地址,读出微指令的值为0C77FFFH,相应的有效控制位为EMRD、PCOE、EMEN和MAREN,PCOE有效表示将PC值做为程序存储器EM的地址,EMRD表示从程序存储器中读出数据,在本指令中此数据值为01H,EMEN表示将读出的数据送到DBUS总线,MAREN表示将DBUS总线上的数据打入地址寄存器MAR。

uPC同时加1,取出下条微指令准备执行。

在T1状态时,由uPC做为微程序存储器地址,从uM的79H单元中读出微指令的值为0D7BFF7H,可以参见上条指令的T1状态,此微指令的所完成的功能是,以MAR的值做为程序存储器的地址,读出数据并送到数据总线DBUS,同时将此数据存入累加器A中。

uPC加1取出下条微指令准备执行。

在T0状态,微指令执行取指令操作。

MOVA,#IIH:

本指令为两个状态周期。

在T1状态时,上次读出的指令机器码,存入uPC中做为微程序存储器uM的地址,读出微指令的值为0C7FFF7H,对应到各个控制位就是EMRD、PCOE、EMEN及AEN为低,处于有效状态,其它控制位为无效状态。

由于上条微指令(取指操作)已将PC加1,此时PCOE是将加1后的PC输出到ABUS做为程序存储器EM的地址,EMRD就是从程序存储器EM中读出数据,本指令中读出的数据应为12H,EMEN将读出的数据送到DBUS总线上,AEN是将DBUS总线上的值存入累加器A中。

同时uPC加1为执行下条微指令做准备,PC加1为读取下一条指令做准备。

每条指令的最后一条微指令一定是取指令操作,本指令的T0状态周期即为取指令,执行上一条微指令时uPC已经加1,按照此uPC为地址从微程序存储器uM读出的微指令的值为0CBFFFFH,参照第一步的说明,此微指令从程序存储器EM中读取指令。

MOVR?

,#IIH:

本指令为两个状态周期,T1状态时,类似上条指令,此条指令是将立即数存入R?

寄存器内。

T0状态为取指令操作。

,执行上一条微指令时uPC已经加1,按照此uPC为地址从微程序存储器uM读出的微指令的值为0CBFFFFH,参照第一步的说明,此微指令从程序存储器EM中读取指令。

MOVMM,A:

本指令分为三个状态周期,T2状态周期,由上条取指令操作,取得微指令值为0C77FFF,地址值MM送到MAR寄存器,为下一步做准备。

T1状态周期,微指令值为0B7BF9F,ALU直通,MAR输出地址,A累加器中数据送入EM中地址值为MM的寄存器中。

本指令的T0状态也是取指令,完成的功能是取出下一条要执行的指令机器码,并存入uPC和IR寄存器中。

MOVA,R?

本指令为两个状态周期。

在T1状态时,由上条取指操作取出的指令机器码为70H,存入uPC后做为微程序地址访问微程序存储器uM的70H单元,读出微指令的值为0FFF7F7,各控制位的状态为RRD、AEN为低电平为有效状态,RRD有效表示从寄存器组R0-R3中读数送到DBUS上,在上条取指令操作时,IREN将取出的指令机器码70H送入IR寄存器,而IR寄存器的最低两位是用来选择寄存器R?

的,此时IR寄存器最低两位为00,被读出的寄存器为R0。

AEN有效表示将DBUS的数据写到累加器A中。

同时uPC加1,为执行下条微指令做准备。

本指令的T0状态也是取指令,完成的功能是取出下一条要执行的指令机器码,并存入uPC和IR寄存器中。

MOVR?

A:

本指令为两个状态周期。

在T1状态时,由上条指令取出指令,读出微指令值为0FFFB9F。

控制位RWR有效。

X2,X1,X0置为100,ALU直通,数据由R?

送到A累加寄存器上。

同时uPC加1,为执行下条微指令做准备。

本指令的T0状态也是取指令,完成的功能是取出下一条要执行的指令机器码,并存入uPC和IR寄存器中。

SUBA,#IIH:

本指令为两个状态周期,在T1状态时,由上条指令取出指令,读出微指令值为0C7FFEF,立即数IIH送入W中,。

在T1状态微指令为0FFFE91H,表示ALU做“减运算”,其结果直通到DBUS,再存入A中,同时保存标志位。

T0状态为取指操作。

SUBA,R?

本指令为三个状态周期。

在T1状态时,由上条指令取指令,读出微指令值为0FFF7EF,寄存器R?

中数据送入W中,在T1状态,微指令为0FFFE99H,表示ALU做“减运算”,其结果直通到DBUS,再存入A中,同时保存标志位。

T0状态为取指操作

DCY:

本指令是用来消除进位位信号。

取微指令值:

0FFFE94微指令。

ALU直通,做一次清零预算,消除进位位信号。

PUSHR?

本指令为两个指令周期。

T1状态时取微指令值:

0FFE7FF。

ST写入使能,RRD使能,R?

寄存器数据送入ST堆栈中。

本指令的T0状态也是取指令,完成的功能是取出下一条要执行的指令机器码,并存入uPC和IR寄存器中。

POPR?

本指令为两个指令周期。

T1状态时取微指令值:

0FFFB5F。

ST输出使能,RWR使能,R?

寄存器允许写入。

ST堆栈寄存器中数据送入R?

中。

本指令的T0状态也是取指令,完成的功能是取出下一条要执行的指令机器码,并存入uPC和IR寄存器中。

JC:

由上条取指读出的指令码为0A0H,存入IR寄存器后,IR3、IR2的值为00(二进制),表示判进位跳转功能,指令码存入uPC后,从uM读出的微指令值为0C6FFFFH,表示以PC为地址从EM中读出数据02H并送到DBUS,ELP为低成有效状态,与IR3、IR2组成进位跳转控制,此时若有进位,就会产生一个控制信号,将总线DBUS上的值22H打入PC,下条微指令取指时,就会从EM新的地址22H中读指令码;此时若无进位,DBUS上的值被忽略,PC加1,下条取指操作按新PC取出指令码执行。

当前无进位标志,顺序执行下条指令。

JZ:

由上条取指读出的指令码为3AH,存入IR寄存器后,IR3、IR2的值为01(二进制),表示判零跳转功能,指令码存入uPC后,从uM读出的微指令值为0C6FFFFH,表示以PC为地址从EM中读出数据3AH并送到DBUS,ELP为低成有效状态,与IR3、IR2组成零跳转控制,此跳转指令为判零跳转。

此时若零标志位为1,即A=0时,就会产生一个控制信号,将总线DBUS上的值3AH打入PC,下条微指令取指时,就会从EM新的地址3AH中读指令码;此时若零标志位为0,DBUS上的值被忽略,PC加1,下条取指操作按新PC取出指令码执行。

JMP:

由上条取指操作读出的指令码为0CH,存入IR寄存器后,IR3、IR2的值为11(二进制),此为无条件跳转控制,指令码存入uPC后,从uM读出的微指令为0C6FFFFH,表示以PC为地址从EM中读出数据并送到数据总线DBUS上,因为ELP有效,与IR3、IR2组合产生PC的打入信号,将DBUS上的数据存入PC中,下一条取指微指令按新的PC值读出程序的指令码。

 

(四)具体实现

每个程序的一开始的第一条微指令一定是取指令,此微指令的值为0CBFFFFH,对应到各个控制位就是EMRD、PCOE、及IREN为低,此三位有效,其它所有位都处于无效状态。

在程序第一次运行时或复位后,uPC和PC的值都为0,PCOE有效将PC值送到ABUS,做为程序存储器EM的地址,EMRD信号有效就是从程序存储器EM中读出程序指令,IREN将读出的指令送到IR寄存器和uPC,此微指令的作用就是:

从程序存储器EM的0地址读出程序指令机器码7CH,并存入uPC中做为微程序存储器uM的地址,从微程序存储器uM的7CH单元中读出微控制码0C7FFF7H,同时PC加1为读下一条指令或数据做准备。

(五)总结

1.目标是否达到

2.存在问题

 

附录:

实验汇编源代码:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1