计算机组成原理实验指导书.docx
- 文档编号:29636118
- 上传时间:2023-07-25
- 格式:DOCX
- 页数:36
- 大小:33.74KB
计算机组成原理实验指导书.docx
《计算机组成原理实验指导书.docx》由会员分享,可在线阅读,更多相关《计算机组成原理实验指导书.docx(36页珍藏版)》请在冰豆网上搜索。
计算机组成原理实验指导书
计算机组成原理
实验指导书
目录
实验一基础汇编语言程序设计与脱机运算器实验-----------------------------1
实验二存储器部件实验-------------------------------------------------------------10
实验三微程序控制器实验----------------------------------------------------------14
实验四多级中断实验----------------------------------------------------------------18
附录一TEC-2000教学机的操作与使用方法练习说明-----------------------21
附录二TEC-2000教学机的指令系统--------------------------------------------24
实验一基础汇编语言程序设计与脱机运算器实验
第一部分脱机运算器实验
实验目的
深入了解AM2901运算器的功能与具体用法,4片AM2901的级连方式,深化运算器部件的组成、设计、控制与使用等诸项知识。
实验说明
脱机运算器实验,是指让运算器从教学计算机整机中脱离出来,此时,它的全部控制与操作均需通过两个12位的微型开关来完成,这就谈不上执行指令,只能通过开关、按键控制教学机的运算器完成指定的运算功能,并通过指示灯观察运算结果。
下面先把与该实验直接有关的结论性内容汇总如下。
12位微型开关的具体控制功能分配如下所述:
A口、B口地址:
送给AM2901器件用于选择源与目的操作数的寄存器编号;
I8~I0:
选择操作数来源、运算操作功能、选择操作数处理结果和运算器输出内容的3组3位的控制码;
SCi、SSH和SST:
用于确定运算器最低位的进位输入、移位信号的入/出和怎样处理AM2901产生的状态标志位的结果。
实验内容
1.将教学机左下方的5个拨动开关置为1XX00(单步、16位、脱机);先按一下“RESET”按键,再按一下“START”按键,进行初始化。
2.接下来,按下页表格所列的操作在十六位机上进行运算器脱机实验,将结果填入表中。
其中D1取为0101H(H表示十六进制),D2取为1010H。
通过两个12位的红色微型开关向运算器提供控制信号,通过16位数据开关向运算器提供数据,通过指示灯观察运算结果及状态标志。
实验要求
1.实验之前认真预习,看清实验要求、执行步骤,查找TEC—2000简明操作卡,填写下面的表格,将实验过程中每一步运算所需的24位控制信号填入表中,也可以在表格中增加或修改一些运算功能。
2.实验过程中认真操作,听从教师安排,按时开始和结束实验过程;仔细分析遇到的问题并设法解决,做好实验过程与实验结果的记录工作;防止损坏设备。
3.实验之后认真完成实验报告,包括实验预习与数据准备情况,实验中遇到的问题和解决的办法及效果,实验操作过程与实验结果的分析整理等总结性的内容,实验中尚未完全理解或解决的问题,实验的收获及心得体会,对实验安排的建议与意见等。
压START键后
CZVS
ALU
输出
压START键前
CZVS
(4位二进制)
ALU输出
(4位十六进制)
控制信号(用二进制数据表示)
B口
0000
A口
不用
SSH
00
SCi
00
SST
001
I8~I0
011000111
算术逻辑运算
*D1+0→R0
*D2+0→R1
R0+R1→R0
R0-R1→R0
R1-R0→R1
R0R1→R1
R0R1→R0
R0R1→R0
┐(R0R1)→R0
2*R0→R0
R0/2→R0
注:
用*作标记的运算,表示D1、D2的数据是由拨动开关SW给出的。
表格中的一系列运算是连续执行的,即每一步运算是在前一步运算结果的基础上运行的。
第二部分基础汇编语言程序设计
实验目的
1.学习和了解TEC-2000十六位机监控命令的用法;
2.学习和了解TEC-2000十六位机的指令系统;
3.学习简单的TEC-2000十六位机汇编程序设计。
实验内容
1.使用监控程序的R命令显示/修改寄存器内容、D命令显示存储器内容、E命令修改存储器内容;
2.使用A命令写一小段汇编程序,U命令反汇编刚输入的程序,用G命令连续运行该程序,用T、P命令单步运行并观察程序单步执行情况。
实验要求
1.在使用该教学机之前,应先熟悉教学机的各个组成部分及其使用方法。
2.实验前仔细阅读附录一和附录二。
实验步骤
1.关闭电源,将大板上的COMl口与PC机的串口相连;
2.接通电源,在PC机上运行PCEC.EXE文件,设置所用PC机的串口为“l”或“2”,其它的设置一般不用改动,直接回车即可;
3.置控制开关为00101(连续、内存读指令、组合逻辑、16位、联机),开关拨向上方表示“1”,拨向下方表示“0”,“X”表示任意。
其它实验相同;
4.按一下“RESET”按键,再按一下“START”’按键,主机上显示:
TEC-2000CRTMONITOR
Version2.02001.10
ComputerArchitectureLab.,TsinghuaUniversity
CopyrightJasonHe
>
5.用R命令查看寄存器内容或修改寄存器的内容
1)在命令行提示符状态下输入:
R↙;显示寄存器的内容
注:
寄存器的内容在运行程序或执行命令后会发生变化。
2)在命令行提示符状态下输入:
RR0↙;修改寄存器R0的内容,被修改的寄存器与所赋值之间可以无空格,
也可有—个或数个空格
主机显示:
寄存器原值:
xxxx
在后面输入新的值0036
再用R命令显示寄存器内容,则R0的内容变为0036。
6.用D命令显示存储器内容
在命令行提示符状态下输入:
D2000↙
会显示从2000H地址开始的连续120个字的内容;
连续使用不带参数的D命令,起始地址会自动加120(即78H)。
7.用E命令修改存储器内容
在命令行提示符状态下输入:
E2000↙
屏幕显示:
2000xxxx(地址单元的原有内容):
(光标在此闪烁等待输入)
输入0000
(提示快捷使用方法:
用E命令连续修改内存单元的值时,每修改完—个,按一下空格键,系统会自动给出下一个内存单元的值,等待修改;按回车键则退出E命令。
)
依次改变地址单元2001~2005的内容为:
11112222333344445555
用D命令显示这几个单元的内容
D2000↙
可以看到这六个地址单元的内容变为000011112222333344445555。
8.用A命令键入一段汇编源程序,主要是向累加器送入数据和进行运算,执行程序并观察运行结果。
1)在命令行提示符状态下输入:
A2000↙;表示该程序从2000H(内存RAM区的起始地址)地址开始
屏幕将显示:
2000:
输入如下形式的程序:
2000:
MVRDR0,AAAA;MVRD与R0之间只有一个空格,其他指令相同
2002:
MVRDR1,5555
2004:
ADDR0,R1
2005:
ANDR0,R1
2006:
RET;程序的最后一个语句,必须为RET指令
2007:
↙;直接敲回车键,结束A命令输入程序的操作过程
若输入有误,系统会给出提示并显示出错地址,用户只需在该地址重新输入正确的指令即可。
2)用U命令反汇编刚输入的程序
在命令行提示符状态下输入:
U2000↙
在相应的地址会得到输入的指令及其操作码。
注:
连续使用不带参数的U命令时,将接着从上一次反汇编的最后一条语句之后继续反汇编。
3)用G命令运行前面刚键入的源程序
G2000↙
程序运行结束后,观察程序的运行结果,记录寄存器R0和R1的值。
R0=?
R1=?
4)用P或T命令,单步执行这段程序,观察指令执行结果
在命令行提示符状态下输入:
T2000↙
寄存器R0=?
T↙
寄存器R1=?
T↙
寄存器R0=?
T↙
寄存器R0=?
用P命令执行过程同上。
注:
T总是执行单条指令,但执行P命令时,则把每一个CALL语句连同被调用的子程序一次执行完成。
T、P命令每次执行后均显示所有通用寄存器及状态寄存器的内容,并反汇编出下一条将要执行的指令。
7.举例编写汇编程序,用“A”命令输入,运行并观察结果
1)例1:
设计一个小程序,从键盘上接收一个字符并在屏幕上输出显示该字符。
<1>在命令行提示符状态下输入:
A2000↙
屏幕将显示:
2000:
输入如下形式的程序:
2000:
IN81;判断键盘上是否按了一个键
2001:
SHRR0;即串行口是否有了输入的字符
2002:
SHRR0
2003:
JRNC2000;未输入完则循环测试
2004:
IN80;接收该字符
2005:
OUT80;在屏幕上输出该字符
2006:
RET;每个用户程序都必须用RET指令结束
2007:
↙;(按回车键即结束输入过程)
注:
在十六位机中,基本I/0接口的地址是确定的,数据口的地址为80H,状态口的地址为81H。
<2>用“G”命令运行程序
在命令行提示符状态下输入:
G2000↙
执行上面输入的程序。
光标闪烁等待输入,用户从键盘键入字符后,屏幕会显示该字符。
该例建立了一个从主存2000H地址开始的小程序。
在这种方式下,所有的数字都约定使用16进制数,故数字后不用跟字符H。
每个用户程序的最后一个语句一定为RET汇编语句。
因为监控程序是选用类似子程序调用方式使实验者的程序投入运行的,用户程序只有用RET语句结束,才能保证程序运行结束时能正确返回到监控程序的断点,保证监控程序能继续控制教学机的运行过程。
2)例2:
设计一个小程序,用次数控制在终端屏幕上输出‘0’到‘9’十个数字符。
<1>在命令行提示符状态下输入:
A2020↙
屏幕将显示:
2020:
从地址2020H开始输入下列程序:
2020:
MVRDR2,000A;送入输出字符个数
2022:
MVRDR0,0030;“0”字符的ASCII码送寄存器R0
2024:
OUT80;输出保存在R0低位字节的字符
2025:
DECR2;输出字符个数减1
2026:
JRZ202E;判10个字符输出完否,已完,则转到程序结束处
2027:
PUSHR0;未完,保存R0的值到堆栈中
2028:
IN81;查询接口状态,判字符串行输出完成否,
2029:
SHRR0;
202A:
JRNC2028;未完成,则循环等待
202B:
POPR0;已完成,准备输出下一字符并从堆栈恢复R0的值
202C:
INCR0;得到下一个要输出的字符
202D:
JR2024;转去输出字符
202E:
RET
202F:
↙
该程序的执行码放在2020H起始的连续内存区中。
若送入源码的过程中有错,系统会进行提示,等待重新输入正确的汇编语句。
输入过程中,在应输入语句的位置直接打回车则结束输入过程。
<2>用“G”命令运行程序
在命令行提示符状态下输入:
G2020↙
记录执行结果:
【思考题】当把IN81,SHRR0,JNC2028三条语句换成3个MVRRR0,R0语句,该程序执行过程会出现什么现象?
试分析并实际执行一次。
类似的,若要求在终端屏幕上输出‘A’到‘Z’共26个英文字母,应如何修改例2中给出的程序?
请验证之。
将程序写入实验报告。
例3:
从键盘上连续打入多个属于‘0’到‘9’的数字符并在屏幕上显示,遇非数字符结束输入过程。
<1>在命令行提示符状态下输入:
A2040↙
屏幕将显示:
2040:
从地址2040H开始输入下列程序:
(2040)MVRDR2,0030;用于判数字符的下界值
MVRDR3,0039;用于判数字符的上界值
(2044)IN81;判键盘上是否按了一个键
SHRR0;即串行口是否有了输入的字符
SHRR0
JRNC2044;没有输入则循环测试
IN80;输入字符到R0
MVRDR1,00FF
ANDR0,R1;R0的高位字节内容清零
CMPR0,R2;判输入字符≥字符‘0’否
JRNC2053;若为否,则转到程序结束处
CMPR3,R0;判输入字符≤字符‘9’否
JRNC2053;若为否,则转到程序结束处
OUT80;输出刚输入的数字符
JMPA2044;转去程序前边2044处等待输入下一个字符
(2053)RET
<2>在命令行提示符状态下输入:
G2040↙
光标闪烁等待键盘输入,若输入0~9十个数字符,则在屏幕上回显;若输入非数字符,则屏幕不再显示该字符,出现命令提示符,等待新命令。
【思考题】本程序中为什么不必判别串行口输出完成否?
设计打入‘A’~‘Z’和‘0’~‘9’的程序,遇其它字符结束输入过程。
运行通过后将程序写入实验报告。
3)例4:
计算1到10的累加和。
<1>在命令行提示符状态下输入:
A2060↙
屏幕将显示:
2060:
从地址2060H开始输入下列程序:
(2060)MVRDR1,0000;置累加和的初值为0
MVRDR2,000A;最大的加数
MVRDR3,0000
(2066)INCR3;得到下一个参加累加的数
ADDR1,R3;累加计算
CMPR3,R2;判是否累加完
JRNZ2066;未完,开始下一轮累加
RET
<2>在命令行提示符状态下输入:
G2060↙
运行过后,可以用R命令观察寄存器的内容。
结果为:
R1=?
R2=?
R3=?
哪个寄存器的内容为累加和?
4)例5:
设计一个有读写内存和子程序调用指令的程序,功能是读出内存中的字符,将其显示到显示器的屏幕上,转换为小写字母后再写回存储器原存储区域。
<1>将被显示的6个字符‘A’~‘F’送入到内存20F0H开始的存储区域中。
在命令行提示符状态下输入:
E20F0↙
屏幕将显示:
20F0内存单元原值
按下列格式输入:
20F0内存原值:
0041内存原值:
0042内存原值:
0043
内存原值:
0044内存原值:
0045内存原值:
0046↙
在命令行提示符状态下输入:
从地址2080H开始输入下列程序:
(2080)MVRDR3,0006;指定被读数据的个数
MVRDR2,20F0;指定被读、写数据内存区首地址
(2084)LDRRR0,[R2];读内存中的一个字符到R0寄存器
CALA2100;调用地址为2100子程序,完成显示、转换并写回的功能
DECR3;检查输出的字符个数
JRZ208B;完成输出则结束程序的执行过程
INCR2;未完成,修改内存地址
JR2084;转移到程序的2084处,循环执行规定的处理
(208B)RET
从地址2100H开始输入下列程序:
(2100)OUT80;输出保存在R0寄存器中的字符
MVRDR1,0020
ADDR0,R1;将保存在R0中的大写字母转换为小写字母
STRR[R2],R0;写R0中的字符到内存,地址同LOD所用的地址
(2105)IN81;测试串行接口是否完成输出过程
SHRR0
JRNC2105;未完成输出过程则循环测试
RET;结束子程序执行过程,返回主程序
<2>在命令行提示符状态下输入:
G2080↙
记录屏幕显示的运行结果:
<3>在命令行提示符状态下输入:
D20F0↙
记录20F0H~20F5H内存单元的内容:
【思考题】为什么上面程序中ADDR0,R1可实现大小写字母转换?
是如何实现的?
将其实现原理写入实验报告。
实验二存储器部件实验
实验目的
通过看懂教学计算机中已经使用的几个存储器芯片的逻辑连接关系和用于完成存储器容量扩展的几个存储器芯片的布线安排,在教学计算机上设计、实现并调试出存储器容量扩展的实验内容。
其最终要达到的目的是:
1.深入理解计算机内存储器的功能、组成知识;
2.深入地学懂静态存储器芯片的读写原理和用他们组成教学计算机存储器系统的方法(即字、位扩展技术),控制其运行的方式;
思考并对比静态存储器芯片和动态存储器芯片在特性与使用场合等方面的异同。
实验说明
教学计算机存储器系统由8K的ROM和2K的RAM两个存储区组成,分别用EPROM芯片(或EEPROM芯片)和RAM芯片构成。
TEC-2000教学计算机中还安排了另外几个存储器器件插座,可以插上相应存储器芯片以完成存储器容量扩展的教学实验,为此必须比较清楚地了解:
1.TEC-2000教学机的存储器系统的总体组成及其连接关系;
2.TEC-2000教学机的有关存储器芯片、I/0接口芯片的片选控制和读写命令的给出及具体使用办法;
3.RAM和EPROM、EEPROM存储器芯片在读写控制、写入时间等方面的异同,并正确建立连线关系和在程序中完成正确的读写过程;
4.如何在TEC-2000教学机中使用扩展的存储器空间并检查其运行的正确性。
实验内容
1.要完成存储器容量扩展的教学实验,需为扩展存储器选择一个地址,即将扩展存储器的片选(标有/CS的2个插孔的上面一个)与标有MEM/CS的插孔中的一个相连;
2.用监控程序的D、E命令对存储器进行读写,比较RAM(6116)、EEPROM(28系列芯片)EPROM(27系列芯片)在读写上的异同;
3.用监控程序的A命令编写一段程序,对RAM(6116)进行读写,用D命令查看结果是否正确;
4.用监控程序的A命令编写一段程序,对扩展存储器EEPROM(28系列芯片)进行读写,用D命令查看结果是否正确;如不正确,分析原因,改写程序,重新运行。
实验要求
1.实验之前,应认真预先准备,写出实验步骤和具体设计内容,否则实验效率会特别低,一次实验时间根本无法完成实验任务,即使基本做对了,也很难说学懂了些什么重要教学内容;
2.实验过程中,应认真进行实验操作,既不要因为粗心造成短路等事故而损坏设备,又要仔细思考实验有关内容,提高学习的主动性和创造性,把自己想不太明白的问题通过实验理解清楚,争取最好的实验效果,力求达到教学实验的主要目的;
3.实验之后,应认真思考总结,写出实验报告,包括实验步骤和具体实验结果,遇到的主要问题以及分析与解决问题的思路。
实验报告中,还应写出自己的学习心得和切身体会,也可以对教学实验提出新的建议等。
实验步骤
1.将RAM(6116)右边的两个圆孔针用导线连接起来。
2.6116支持即时读写,可直接用A、E命令向扩展的存储器输入程序或改变内存单元的值。
1)用E命令改变内存单元的值并用D命令观察结果。
<1>在命令行提示符状态下输入:
E2020↙
屏幕将显示:
2020内存单元原值:
按如下形式键入:
2020原值:
2222(空格)原值:
3333(空格)原值:
4444(空格)原值:
5555↙
<2>在命令行提示符状态下输入:
D2020↙
屏幕将显示从2020内存单元开始的值,记录2020H~2023H的值:
<3>断电后重新启动教学实验机,用D命令观察内存单元2020~2023的值,会发现什么现象?
说明了什么道理?
2)用A命令输入一段程序,执行并观察结果。
<1>在命令行提示符状态下输入:
A2000↙
屏幕将显示:
2000:
按如下形式键入:
2000:
MVRDR0,AAAA
2002:
MVRDR1,5555
2004:
ANDR0,R1
2005:
RET
2006:
↙
<2>在命令行提示符状态下输入:
T2000↙
R0=?
R1=?
T↙
R0=?
R1=?
T↙
R0=?
R1=?
<3>在命令行提示符状态下输入:
G2000↙
运行输入的程序。
<4>在命令行提示符状态下输入:
R↙
屏幕显示:
R0=?
R1=?
【思考题】由此可得出什么结论(即RAM芯片具有什么特性)?
3.将扩展的高位ROM芯片(27或28系列)右侧标有/CS的圆孔针与标有MEM/CS的一排圆孔针中地址为4000~5FFF的一个用导线相连;将扩展的低位ROM芯片右侧的两个圆孔针用导线相连。
这表示扩展的ROM的内存地址是从4000H开始,可用空间是4000H~5FFFH,用户可在这个范围内输入程序或改变内存单元的值。
下面以AN58C65为例,进行扩展EEPROM实验。
4.AN58C65的读操作和RAM一样,而写操作需要一定的时间,大约为1毫秒。
因此,需要编写一段延时子程序,在对EEPROM进行写操作时,调用该延时子程序,以完成正确的读写。
1)用E命令改变内存单元的值并用D命令观察结果。
<1>在命令行提示符状态下输入:
E5000↙
屏幕将显示;5000内存单元原值:
按如下形式键入:
5000原值:
2424(空格)原值:
3636(空格)原值:
4848(空格)原值:
5050↙
<2>在命令行提示符状态下输入:
D5000↙
屏幕将显示5000H~507FH内存单元的值,从5000开始的连续四个内存单元的值依次为2424363648485050。
<3>断电后重新启动,用D命令察看内存单元5000~5003的值,观察数值是否发生变化,说明EEPROM的内容断电后能否保持?
2)AN58C65存储器不能直接用A命令输入程序(建议试一试),可将编写好的程序用编程器写入片内;也可将程序放到RAM(6116)中,调用延时子程序,访问AN58C65中的内存地址。
下面给出的程序,在5000H~500FH单元中依次写入数据0000H、0001H、...000FH。
<1>从2000H单元开始输入主程序:
(2000)MVRDR0,0000
MVRDR2,0010;R2记录循环次数
MVRDR3,5000;R3的内容为16位内存地址
(2006)STRR[R3],R0;将R0寄存器的内容放到R3给出的内存单元中
CALA2200;调用延时子程序
INCR0;R0加1
1NCR3;R3加1
DECR2;R2减l
JRNZ2006;R2不为0跳转到2006H
RET
<2>从2200H单元开始输入延时子程序:
(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 组成 原理 实验 指导书