《计算机组成原理实验指导》1030Word文档格式.docx
《《计算机组成原理实验指导》1030Word文档格式.docx》由会员分享,可在线阅读,更多相关《《计算机组成原理实验指导》1030Word文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
这包括小巧的指令系统,最小的监控程序,简单的控制器设计,小的主存和简单的输入/输出接口等。
2、TEC-2000A教学计算机系统的特点
(1)TEC—2000是由多个型号产品构成的系列教学实验计算机系统的总称。
硬软件配置相对完整,可支持8位或16位字长,可以选用组合逻辑控制器或微程序控制器方案,文字与图纸资料相对齐全,是主要用于《计算机组成原理》课程教学实验的计算机系统。
(2)该系统的物理结构应设计成全暴露方式。
全部线路做在一、二块印制电路板上,以互不遮盖方式插接在一起:
全部线路芯片均以芯片插座与线路板连接:
逻辑线路按功能部件划分在印制板的不同区域;
主板上安装有一定数量的开关、按键与指示灯:
线路板上布有适当的量测孔,一定数量的跳线夹,用以人为设置机器故障或变更设计。
(3)该系统应提供适当的软件支持与常规输入/输出外设接入支持,它既是学习计算机组成原理知识的必备部分,也提供了完成多项教学实验的最先进的实验手段.配备适当的软件系统是我们突出强调的重要目标之一。
(4)该系统应提供最齐全的设计、实现、操作使用的资料。
这是保证教师与学生在教学过程中用好、学好有关知识的重要条件。
包括全部图纸、器件清单、印制板上的器件布局、可编程器件的逻辑内容,指令格式与功能,微指令格式及微程序清单,组合逻辑的指令执行流程表及化简后的全部逻辑表达式,监控程序的源码等内容,还包括对上述内容必要的文字说明,还可以提供PC机仿真终端程序,交叉汇编程序源程序清单。
(5)提供配套的教师用书,把一些在讲课中应强调的内容,务实验项目的参考答案等汇集在一起,以减轻讲课与辅导实验教师的备课负担.应严格控制此书的发行范围,确保教师用书只供教师使用,避免学生因抄袭实验答案而降低教学质量。
3、TEC-2000A实验教学计算机原理简介
计算机终端和PC机是计算机标准设备,可通过串行接口与TEC-2000A教学机机接通,作为输入/输出设备使用,在监控程序的支持下,可大大提高实验效率和水平。
TEC-2000A教学机上的串行接口是该机用于连接输入/输出设备的线路。
CPU实验之外的其他各种扩展操作的实验,如内存容量扩展实验,多级中断实验,并行接口实验,以及其他I/O接口实验等,都可以直接在TEC-2000机大板右侧的扩展实验区域完成。
TEC-2000A教学机上的按键、开关、指示灯是作为最底层的输入/输出手段使用的部件。
按键:
用于启动计算机,执行RESET操作,控制打入开关拨入的数据或地址,作为中断源以产生中断请求信号。
开关:
用于选择TEC-2000机的运行方式,
可向机内拨入数据和地址等信息,
微型开关用于给出实验控制信号。
指示灯:
有多个,同时显示实验机内的各种数据、地址和控制信号的状态。
TEC-2000A教学机上的运算器,可选8或16位字长,分别由2或4片4位的位片结构的器件组成,作为讲解运算器的实例和教学实验的对象,有很强的典型性。
它可脱离TEC-2000A主机,单独地进行运算器部件实验,也可在主机控制下完成运算器部件实验、其它功能部件实验或整机实验。
位片结构是说,每个器件本身就是一个完整的运算器,只是位数较少,要组成更多位数的实用运算器要用多片共同实现,这里选用的是美国AMD公司的Am2901芯片。
Am2901芯片的内部组成如下图所示。
Am2901芯片是一个4位的位片结构的运算器器件,其内部由三部分组成:
第一部分是算逻运算部件ALU,完成3种算术运算和5种逻辑运算,共计8种功能。
其输出为F,两路输入为S、R,最低位进位Cn,四个状态输出信号如图所示。
第二个组成部分是通用寄存器组,由16个寄存器构成,并通过B口与A口地址选择被读的寄存器,B口地址还用于指定写入寄存器。
通过B口地址、A口地址读出的数据将送到B、A锁存器,要写入寄存器的数据由一个多路选择器送来。
第三个组成部分是乘商寄存器Q,它能对自己的内容完成左右移位功能,其输出可以送往ALU,并可接收ALU的输出结果。
3.1TEC-2000A实验教学机的硬件组成
下图为TEC-2000A实验教学机的布局图。
下图为TEC-2000A实验教学机的总体框图。
(该图反过来拍板,占一整页)
3.2TEC-2000A实验教学机的软件组成
TEC-2000实验教学机研主要提供了如下软件:
监控程序MONITOR:
固化在主存ROM存储区,实现的功能类似PC机的DEBUG,有8条监控命令,控制TEC-2000A教学机正常运行,执行输入输出等操作。
交插汇编程序ASEC:
汇编语言程序在PC上建立完成后,应对其进行交叉汇编,得到相应的机器语言程序,才能供教学计算机调试和运行。
ASEC对TEC-2000A教学机的汇编程序进行汇编,产生TEC-2000A教学机的指令代码。
这样,很容易就把通过扩展实现的新指令的汇编功能添加进去。
PC机仿真终端程序PCEC:
运行在PC机上,通过串行口使PC机作为TEC-2000A教学机的输入/输出设备。
微程序:
解释执行TEC-2000A教学机的各条指令。
下面,注意对监控程序MONITOR进行说明。
TEC-2000A教学机的监控程序是用教学机的汇编语言实现的,运行在教学机的硬件系统之上。
它的主要功能是支持把计算机终端或PC机仿真终端接入教学机系统,使用这样的设备执行输入/输出操作,运行教学机的有关程序,以更方便直观的形式支持教学机上的各项实验功能,提供教学机汇编语言的可用子程序。
监控程序提供类似PC机DOS系统下的Debug程序的功能,支持A、U、G、T、R、D和E共8个监控命令。
监控命令的格式:
单字母的命令名(字母大小写均可)后跟回车,或命令名后跟一个地址参数,或寄存器名(编号)参数。
当有些命令运行时需要参数,但命令名后又不跟参数时,监控程序会从内存指定单元取一个默认的地址参数值,通常为该命令前一次运行后所接收地址。
TEC-2000A机从终端接收地址、指令,数值时,均用最多4位的16进制数输入与显示,并且不能(或说不必)用跟字符h加以标志。
⑴单条汇编命令A
格式:
A[adr]
这里的[adr]表示此处的地址参,由4位16进制数组成,为任选项(范围为0800H-0FFFH)。
无此参数时,系统将取默认值(该规则下同)。
功能:
完成单条指令的汇编操作,把产生出来的TEC-2000A的执行代码放入对应的内存单元中。
命令名后的地址是头一条汇编语句的执行码的内存单元地址。
每条语句汇编完成之后,系统将相应修改地址值,以便正确处理下条汇编语句。
在应该输入汇编语句时,如果不给出汇编语句而直接回车,则结束A命令的运行过程。
若汇编中发现语法错误,用ˆ指明出错位置后请求重新给出正确语句。
要说明,这里的单条汇编功能不很完善,例如不支持语句标号,也不能使用伪指令等。
遇到这些问题,要求使用者直接使用机器码,并通过E命令将其送入相应内存单元。
⑵反汇编命令U
U[adr]
每次从指定的(或默认的)地址反汇编15条命令,并将结果显示在终端屏幕上。
反汇编完成之后,已将该命令的默认地址修改好。
接下来再键入不带参数的U命令,将接着从上一次反汇编的最后一条语句之后继续反汇编。
⑶执行程序命令G
G[adr]
从指定的(或默认的)地址连续运行一个用户程序。
为了使程序执行后能返回监控程序,要求每个程序的最后一条指令应为RET指令。
⑷单指令执行程序命令T
T[adr]
从指定地址(或PC中的当前地址)开始单条执行程序指令。
每运行一次T将执行一条指令。
每次执行后均显示所有通用寄存器及状态寄存器的内容,并反汇编出下一条将要执行的指令。
由于T命令是通过设置断点来实现的,而在ROM区不能设置断点,故不能用它们来执行固化在ROM区中的监控程序。
⑸显示/修改寄存器内容的命令R
R[reg]
当R命令不带寄存器名时,显示全部寄存器(包括SP,PC和IP)及状态寄存器的值,并反汇编当前PC所指的一条指令。
其中状态的显示格式为:
“F=8位二进制数”,其各位的值分别对应于C、Z、V、S,INTE、P2、P1、P0的值。
当R命令带有寄存器名时,先显示出该寄存器的值,若修改打入新值回车,否则只按回车即可。
⑹显示存储器内容的命令D
D[adr]
从指定(或默认)地址开始显示内存128个存储字的内容。
显示的格式:
最左一列4位的16进制数是本行中第一个字的地址,接下来的8列是4位的16进制的8个连续内存字的内容,最右一列是每个字节所对应的ASCⅡ字符。
当其值不为可显示字符的ASCⅡ码值时,用一个“.”字符标记。
连续的D命令,保证所显示内容前后正确的连续关系,即每次执行D命令,会将默认的地址值加上128。
TEC-2000A机通常采用字地址读写内存。
⑺修改存储器内容命令E
E[adr]
从指定(或默认)地址逐字节修改每个内存单元的内容,并等待用户打入一个新的值存回该内存单元。
若用户未打入新值就打了空格键,则该内存单元内容保持不变。
若在打入新值后跟空格键,则内存单元内容写成新值。
空格键表明要连续修改一片内存区,故接下来显示下一个单元的内容并等待修改。
打回车键,则会结束E命令的执行过程,若回车前打入一个新值,相应内存单元的内容也将被修改。
注:
进入监控程序的具体操作步骤:
1、准备一台串口工作良好的PC机;
2、将TH-union放在实验台上,打开实验箱的盖子,确定电源处于断开状态;
3、将黑色的电源线一端接220V交流电源,另一端插在TH-union实验箱的电源插座里;
4、取出通讯线,将通讯线的9芯插头接在TH-union实验箱上的串口“COM1”或“COM2”上,另一端接到PC机的串口上;
5、将TH-union实验系统左下方的五个黑色的控制机器运行状态的开关置于正确的位置,在找个实验中开关应置为00110(连续、内存读指令、组合逻辑、联机、16位),控制开关的功能在开关上、下方有标识:
开关拨向上方表示“1”,拨向下方表示“0”,“X”表示任意,其他实验相同;
6、打开电源,船形开关和5V电源指示灯亮。
7、在PC机上运行PCEC16.EXE文件,根据连接的PC机的串口设置所用PC机的串口为“1”或“2”,其它的设置一般不用改动,直接回车即可。
(具体步骤附后)
8、按一下“RESET”按键,再按一下“START”按键,主机上显示:
TEC-2000ACRTMONITOR
Version1.0April2001
ComputerArchitecturLab.,TsinghuaUniversity
ProgrammedbyHeJia
4、TEC-2000A实验教学计算机的指令系统
TEC-2000A教学机实现29条基本指令,用于编写教学机的监控程序和支持简单的汇编语言程序设计;
同时预留了19条扩展指令,供学生在实验中完成对这些指令的设计与调试。
按照指令功能和指令的执行步骤,所有指令分为四组:
(1)A组:
完成通用寄存器直接的数据运算或传送,在取指后可以一步完成;
基本指令:
ADD,SUB,AND,OR,XOR,CMP,TEST,MVRR,DEC,INC,SHL,SHR,JR,JRC,JRNC,JRZ,JRNZ
扩展指令:
ADC,SBB,RCL,RCR,ASR,NOT,CLC,STC,EI,DI,JRS,JRNS,JMPR
(2)B组:
完成一次内存或I/O读写操作,在取指之后可以两步完成:
第一步传送地址到地址寄存器ARH、ARL中,第二步执行内存或I/O读写操作。
JMPA,LDRR,STRR,PUSH,POP,PSHF,POPF,MVRD,IN,OUT,RET
(3)C组:
指令取指后用三步完成:
第一步置地址寄存器ARH、ARL;
第二步读内存(取地址操作数)、计算内存地址、置地址寄存器ARH、ARL;
第三步读写内存。
注:
CALR指令用两步读写内存之后,第三步执行寄存器直接的数据传送。
扩展指令:
CALR,LDRA,STRA,LDRX,STRX
(4)D组:
完成两次读写内存操作,取指后可以四步完成。
CALA
IRET
第二部分实验内容
本实验指导共安排6个实验,可根据实际情况酌情选用。
实验1基础汇编语言程序设计
实验目的:
1.学习和了解TEC-2000A十六位机监控命令的用法:
2.学习和了解TEC-2000A十六位机的指令系统;
3.学习简单的TEC-2000A十六位机汇编程序设计;
实验内容:
1.使用监控程序的R命令显示/修改寄存器内容、D命令显示存储器内容、E命令修改存储器内容;
2.使用A命令写一小段汇编程序,U命令反汇编刚输入的程序,用G命令连续运行该程序,用T命令单步运行并观察程序单步执行情况;
实验要求
在使用该教学机之前,应先熟悉其的各个组成部分,及使用方法。
十六位教学机的汇编语言程序设计举例:
例子1:
设计一个小程序,在屏幕上输出显示字符‘6’。
A2000(回车);
地址从16进制的2000(内存RAM区的起始地址)开始;
2000:
MVRDR0,0036;
把字符‘6’的ASCII码送入R0;
2002:
OUT80;
在屏幕上输出显示字符‘6’,80为串行接口地址;
2003:
RET;
每个用户程序都必须用RET指令结束;
2004:
(按回车键即结束输入过程)
这就建立了一个从主存2000h地址开始的小程序。
在这种方式下,所有的数字都约定使用16进制数,故数字后不用跟字符h,每个用户程序的最后一个语句一定为RET汇编语句。
因为监控程序是选用类似子程序调用方式使实验者的程序投入运行的,用户程序只有用RET语句结束,才能保证程序运行结束时能正确返回到监控程序的断点,保证监控程序能继续控制教学机的运行过程。
例子2:
设计一个小程序,用次数控制在终端屏幕上输出’0’到’9’十个数字符。
A2020(回车)
2020:
MVRDR2,000A;
送入输出字符个数;
MVRDR0,0030;
“0”字符的ASCII码送寄存器R0;
输出保存在R0低位字节的字符;
DECR2;
输出字符个数减1;
JRZ202E;
判10个字符输出完否,已完,则转到程序结束处;
PUSHR0;
未完,保存肋的值到堆栈中;
2028:
IN81;
查询接口状态,判字符串行输出完成否,
SHRR0
JRNC2028;
未完成,则循环等待;
POPR0;
已完成,准备输出下一字符并从堆栈恢复R0的值;
INCR0;
得到下一个要输出的字符;
JR2024;
转去输出字符;
202E:
RET;
这个程序只使用基本汇编语句。
理解中的一个难点,是程序当中判串行口是否完成一个字符的输出过程并循环等待的三个汇编语句。
具体解释见有关串行接口讲解部分的内容。
该程序的执行码放在2020起始的连续内存区中。
若送入源码的过程中有错,系统会进行提示,等待重新打入正确汇编语句。
在输入过程中,在应打入语句的位置直接打回车则结束输入过程。
接下来可用G2020命令运行该程序。
思考题:
当把IN01,SHRR0,JNC,2029三个语句换成4个MOVR0,R0语句,该程序执行过程会出现什么现象?
试分析并实际执行一次。
类似的,若要求在终端屏幕上输出‘A’到‘Z’共26个英文字母,应如何修改例1中给出的程序?
请验证之。
例子3:
从键盘上连续打入多个属于“0”到“9”的数字符并在屏幕上显示,遇非数字符结束输入过程。
A2040(回车)
2040:
MVRDR2,0030;
用于判数字符的下界值;
MVRDR3,003A;
用于判数字符的上界值;
2044:
判键盘上是否按了一个键,
SHRR0;
即串行口是否有了输入的字符;
JRNC2044;
没有输入则循环测试;
IN80;
输入字符到R0;
MVRDR1,00FF
ANDR0,R1;
清零R0的高位字节内容
CMPR0,R2;
判输入字符≥字符’0’否;
JRNC2053;
为否,则转到程序结束处;
CMPR0,R3:
判输入字符≤字符’g’否;
JRC2053;
OUT80;
输出刚输入的数字符;
JMPA2044:
转去程序前边2044处等待输入下一个字符;
2053:
RET
本程序中为什么不必判断串行口输出完成否?
设计打入‘A’~‘Z’和‘0’~‘9’的程序,遇其它字符结束输入过程。
从地址2040开始输入下列程序:
例子4:
计算1到10的累加和。
A2060(回车)
2060:
MVRDR1,0000;
置累加和的初值为0;
MVRDR2,000A;
最大的加数;
MVRDR3,0000
2066:
INCR3;
得到下一个参加累加的数;
ADDR1,R3;
累加计算;
CMPR3,R2;
判是否累加完;
JRNZ2066;
未完,开始下一轮累加;
RET
运行过后,可以用R命令看R1中的累加结果。
例子5:
设计一个有读写内存和子程序调用指令的程序,功能是读出内存中的字符,将其显示到显示器的屏幕上,转换为小写字母后再写回存储器原存储区域。
E20FO(送入将被显示的6个字符‘A’,~‘F’到内存20F0开始的存储区域中)
004100420043004400450046
A2080
2080:
MVRDR3,0006;
指定被读数据的个数
MVRDR2,20F0;
指定被读,写数据内存区首地址
2084:
LDRRR0,[R2];
读内存中的一个字符到R0寄存器
MVRDR8,2100;
指定子程序地址为2100
CALRR8;
调用于程序,完成显示。
转换并写回的功能
DECR3;
检查输出的字符个数
JRZ208C;
完成输出则结束程序的执行过程
INCR2;
未完成,修改内存地址
JR2084;
转移到程序的2086处,循环执行规定的处理
208C:
A2100(回车);
输入用到的于程序到内存2100开始的存储区
2100:
OUT80;
输出保存在R0寄存器中的字符
MVRDR1,0020
ADDR0,R1;
将保存在R0中的大写字母转换为小写字母
STRR[R2],R0;
写R0中的字符到内存,地址同LOD所用的地址
2105:
IN81;
测试串行接口是否完成输出过程
SHRR0
JRNC2105;
未完成输出过程则循环测试
结束子程序执行过程,返回主程序
运行过程中,可以直接看到屏幕上显示的内容,运行过后,再用D20F0命令看内存的20F0区域中保存的运行结果:
006100620063006400650066
上述5个例子,都是用监控程序的A命令完成输入源汇编程序的。
在涉及到汇编语句标号的地方,不能用符号表示,只能在指令中使用绝对地址.使用内存中的数据,也由程序员给出数据在内存中的绝对地址。
显而易见,对这样的极短小程序矛盾并不突出,但很容易想到,对很大的程序,一定会有较大的困难。
在用A命令输入汇编源语句的过程中,有一定用机经验的人,常常抱怨A命令中未提供适当的编辑功能,这并不是设计者的疏漏,因为我们并不准备在这种操作方式下支持设计较长的程序,这种工作应转到提供了交叉汇编程序的PC机上去完成.相反的情况是,输入上述一些小程序,用监控程序的A命令完成,往往比用交叉汇编完成更简捷。
实验2脱机运算器实验
实验目的
深入了解AM2901运算器的功能与具体用法,2片(16位为4片)AM2901的级连方式,深化运算器部件的组成、设计、控制与使用等诸项知识。
实验说明
脱机运算器实验,是指让运算器从教学计算机整机中脱离出来,此时,它的全部控制与操作均需通过两个12位的微型开关来完成,这就谈不上执行指令,只能通过开关、按键控制教学机的运算器完成指定的运算功能,并通过指示灯观察运算结果。
实验内容
1.将教学机左下方的5个拨动开关置为1XX00(单步、16位、脱机);
先按一下“RESET”按键,再按一下“START”按键,进行初始化。
2.接下来,按下表所列的操作在八位机上进行运算器脱机实验,将结果填入表中:
其中D1取为0101h,D2取为l0l0h;
通过两个12位的微型拨动开关向运算器提供控制信号,通过