计算机组成原理实验手册TECWord文件下载.docx
《计算机组成原理实验手册TECWord文件下载.docx》由会员分享,可在线阅读,更多相关《计算机组成原理实验手册TECWord文件下载.docx(30页珍藏版)》请在冰点文库上搜索。
例3、
小结
一、每个程序最终必需以RET指令结束,使得程序结束后返回去运行监控程序
二、80H、81H两端口分别是串行通信控制器8251的数据端口与状态端口,对它们进行读写能达到以下功能
1、读80H端口(IN80H),可使教学机监控程序向PCEC读取用户在PC键盘上按下按键对应的ASCII码,存储到R0寄存器
2、写80H端口(OUT80H),可使教学机监控程序将R0的值发送给PCEC,PCEC将接收到的值当做ASCII码,将相应字符显示在PC机显示器上
3、读状态端口(IN81H),可得到串行通信控制器8251的状态字,其D0位用于指示数据是否发送就绪(D0=1发送就绪),D1位用于指示数据是否接收就绪(D1=1接收就绪),这里的8251是教学机COM1对应的那片8251,发送和接收指教学机的发送接收。
串行通信控制器8251状态寄存器的状态位:
使用汇编源程序编程
摘要
一、在PC机上用文本编辑器编写教学机汇编源程序
二、在PC机上用交叉汇编程序ASEC编译教学机源程序,生成教学机可执行代码
二、通过PCEC将教学机可执行代码加载到教学机内存中
交叉汇编程序
教学机编程源文件格式示例
org2000h
mvrdr0,44h
out80h
jr2000h
ret
end
ORG2000H
MVRDR2,0AH
MVRDR0,30H
OUT80H
DECR2
JRZ200EH
PUSHR0
IN81H
SHRR0
JRNC2008H
POPR0
INCR0
JR2004H
RET
END
教学机汇编编程小结
1、可使用标号做跳转,标号字符数不可太长(8位?
)
test:
jrtest
2、可使用标号指示子程序入口,标号字符数不可太长(8位?
calaxx
…
xx:
pushr0
mvrdR14,1234h
out80h;
将R0保存的ASCII字符显示在PC机的屏幕上
教学机内存空间用法:
0000~FFFFH:
可寻址64K内存地址空间,但其中只有部分的地址空间对应物理存储单元。
0000~1FFFH:
ROM(8K字*16位),保存监控程序
2000~27FFH:
RAM(2K字*16位)
2000~25FFH:
1.5K字
2600~27FFH:
0.5k字,监控程序专用
实验一、TEC-2000汇编语言程序设计
实验目的
1.学习和了解TEC-2000十六位机监控命令的用法;
(参考实验指导书P116)
2.学习和了解TEC-2000十六位机的指令系统;
3.学习TEC-2000十六位机汇编程序设计。
实验设备
TEC-2000教学机和PC机各一台
实验内容
1.熟悉教学机的组成,完成教学机与PC机互联(具体步骤见实验参考)。
2.熟悉监控命令的使用(具体步骤见实验参考)。
3.汇编程序设计
a)设计一个小程序,从键盘上接收一个字符并在屏幕上输出显示该字符。
b)编程将Fibonacci数列的前20个数顺序存放在主存地址为2200H~2213H单元内。
c)编程在屏幕上显示Fibonacci数列的前20个数(显示数值的二进制码即可)。
注意事项
内存:
只能使用2000~27FF这个空间
R:
不用能R4,R5
默认数制是16进制
0,1,逗号的ascii码分别为30H,31H,2CH
预习要求
1.熟悉教学机的基本指令集
2.实验前仔细阅读本文档的“TEC2000使用手册”
3.提交实验预习报告,其中给出“实验报告格式”一~四的内容。
实验报告格式
一、实验目的
二、实验设备
三、实验内容
四、汇编程序设计:
给出程序源代码
五、实验小结
实验参考
一、教学机与PC机互联
1.关闭电源,将TEC2000上的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
>
二、监控命令的使用
1.用R命令查看寄存器内容或修改寄存器的内容
1)在命令行提示符状态下输入:
R↙;
显示寄存器的内容
注:
寄存器的内容在运行程序或执行命令后会发生变化。
2)在命令行提示符状态下输入:
RR0↙;
修改寄存器R0的内容,被修改的寄存器与所赋值之间可以无空格,也可有—个或数个空格
主机显示:
寄存器原值:
xxxx
在后面输入新的值0036
再用R命令显示寄存器内容,则R0的内容变为0036。
2.用D命令显示存储器内容
在命令行提示符状态下输入:
D2000↙
会显示从2000H地址开始的连续120个字的内容;
连续使用不带参数的D命令,起始地址会自动加120(即78H)。
3.用E命令修改存储器内容
E2000↙
屏幕显示:
2000xxxx(地址单元的原有内容):
(光标在此闪烁等待输入)
输入0000
(提示快捷使用方法:
用E命令连续修改内存单元的值时,每修改完—个,按一下空格键,系统会自动给出下一个内存单元的值,等待修改;
按回车键则退出E命令。
依次改变地址单元2001~2005的内容为:
11112222333344445555
用D命令显示这几个单元的内容
可以看到这六个地址单元的内容变为000011112222333344445555。
4.用A命令键入一段汇编源程序,主要是向累加器送入数据和进行运算,执行程序并观察运行结果。
A2000↙;
表示该程序从2000H(内存RAM区的起始地址)地址开始
屏幕将显示:
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=?
用P命令执行过程同上。
T总是执行单条指令,但执行P命令时,则把每一个CALL语句连同被调用的子程序一次执行完成。
T、P命令每次执行后均显示所有通用寄存器及状态寄存器的内容,并反汇编出下一条将要执行的指令。
实验二、脱机运算器部件实验
实验描述参见下图的“6.2脱机运算器部件实验”,对其做如下修改
3.实验内容
1)拨动开关置为1xx00(16位机)
2)D1取为0101H,D2取为1010H
实验预习报告:
填表6-1的ALU控制信号
操作参考
实验三、微程序控制器
通过设计一条指令的微程序,深入理解微程序控制器的工作原理。
运行TEC-2000模拟软件的PC机。
为TEC-2000新增一条指令,其功能为将两个内存单元的内容相加,结果写回其中一个内存单元。
1、说明上述指令的指令格式并为其分配指令操作码(不能与基本、扩展指令集中的任一指令操作码相同)
2、给出上述指令的执行周期微程序编码,并为其中的每一条微指令分配微地址
3、说明实现上述指令应修改MAPROM存储单元的地址和值。
实验参考:
一、教学计算机微程序控制器模拟程序使用说明
运行“16位机微程序模拟程序.exe”,将出现图2-1所示界面。
图2-1TEC-2000微程序模拟主界面
界面的最左边是功能区,设置了程序的主要功能按钮,下面将介绍这些按钮的功能和使用方法。
中间部分是用户程序区,用做调试的用户程序将在程序区中显示,供调试过程中查看。
右边的上半部分是输出窗口,可看成是TEC-2000教学计算机的显示器,按下“显示ROMS内容”按钮后,将被切换为显示各ROM的二进制数值。
下半部分是模拟程序的输出,主要包括当前运行程序的指令字、程序状态字、各通用寄存器的值,以及ALU的输出结果,这些,可供用户调试程序时观察程序运行的结果。
使用模拟程序主要是对用户设计的微程序方案进行仿真运行,以检验方案的正确性。
因此,首先要装入用户设计的微程序,它采用的是和真正要在硬件的控制存储器上烧制的格式,即全部微程序方案由MAPROM、ROM1~ROM7共8个二进制文件组成。
这些文件可用UltraEdit软件编写,也可自行编制程序完成由文本格式到二进制数据格式的转换后生成。
准备好MAPROM、ROM1~ROM7共8个二进制文件后,将它们存放在一个文件目录下。
然后,按图5-1中界面上的“导入各ROM文件”按钮,在图5-2所示界面上选定这8个文件(文件名必须按照上述名称给定,并以.bin为文件后缀),按“打开”按钮,将装入用户设计的微程序方案。
以后的操作,均是对本方案的各种机器语言程序运行过程的模拟。
图5-2装入微程序方案
微程序方案装入完成后,可点击“显示各ROMS内容”按钮,进行查看和检查,如图5-3所示。
若发现错误,可直接在界面上修改。
修改后注意按“Update”按钮保存。
图5-3查看或修改微程序界面
按“显示输出窗口”按钮可返回主界面。
为检查、验证微程序方案的正确性,需要对微程序实现的指令系统中全部指令进行模拟运行,检查运行结果是否正确。
这一过程可用简单的机器语言程序来完成,如我们可以用如下程序来验证MVRD、ADD及RET三条指令的正确性。
MVRDR0,0
MVRDR1,1
ADDR0,R1
将指令系统中所有指令都验证完后,可得到微程序方案基本设计正确的结论。
此时,可尝试进行加载监控程序并运行,这样,整个教学计算机将在用户设计的微程序控制器的控制下运行。
为方便用户输入程序,教学计算机模拟系统支持汇编语言(如用户使用TEC-2000规定的基本指令集)、文本形式的二进制机器语言程序(对一些用户自行扩展的指令,交叉汇编程序不能汇编,此时可采用这种方式)和纯二进制机器指令程序(即真正的机器语言程序)。
下面分别介绍它们的使用过程。
汇编语言程序是符号化的机器语言,与机器语言相比,更方便进行人机交流。
通过“导入汇编文件”按钮或“文件”菜单项中的“导入汇编文件”项,将汇编语言程序读入到系统中,然后,再使用“交叉汇编”按钮,对该汇编语言程序进行交叉汇编。
此时,系统界面如图5-4所示,可以对该汇编语言程序进行连续、单指令或单步骤执行。
图5-4装入汇编语言程序并交叉汇编
汇编语言程序虽然比较直观,但受交叉汇编的限制,只能是使用TEC-2000的基本指令且是规定的操作码。
对用户自行扩展的指令,或者是改变了指令的操作码,则无法直接使用汇编语言程序,只能使用机器语言程序。
机器语言程序一般应是二进制格式,直接装入到主存储器中运行,这样,对用户编写程序就不是很方便,写出0、1的代码后,还要事先转换成二进制格式才能装入。
为此,教学计算机模拟系统支持用户用0、1代码编写的机器语言程序(文本形式),由模拟系统本身进行到二进制的转换。
例如,我们可以用下面的机器语言文本文件来替换前面的汇编语言程序。
1000100000000000
0000000000000000
1000100000010000
0000000000000001
1000111100000000
这些机器指令由前面的汇编语言程序对应而来,使用的是TEC-2000缺省定义的操作码。
将这些内容保存为文本文件后(以.txt)为后缀,选择“文件”菜单项中的“导入机器指令的汇编文件”项,可将程序装入到系统中。
系统将自动完成该程序从文本文件到二进制机器指令的转换。
当然,本系统也可直接装入二进制机器指令运行,这可以将一些已经是机器指令的程序直接装入到系统中运行。
程序在模拟系统中运行正确后,也可以用做在实际的教学计算机上,用来进行硬件调试(此类文件一般应以.COD或.BIN作为后缀)。
选择“文件”菜单项中的“导入机器指令的汇编文件”项,可将程序装入到系统中。
需要说明的是,监控程序也可以采用这种方式装入。
所有的指令均检查无误后,可以把监控程序作为对微程序设计方案的一个总的测试对象。
选择“文件”菜单项中的“加载监控程序”项,可将监控程序装入到系统中。
程序装入完成后,可使用“Reset”按钮,启动程序的运行。
可用“连续执行”按钮将程序完整的执行,也可使用“单指令执行”按钮单独执行一条指令,还可以用“单步执行”按钮单独执行一个微操作。
“单指令执行”和“单步执行”时,可通过观察各输出结果,判断程序执行的正确性。
若不正确,可能是微程序设计方案有错误,可通过前面介绍的查看和修改微程序界面,修改微程序,再进行进一步的调试,直到程序能正常运行。
最后,可通过运行监控程序来进行较大规模的检验。
二、微程序控制器指令扩展示例
下面,以在现有TEC-2000教学计算机微程序控制器基础上,扩展指令ADCDR,SR为例,说明实验的步骤。
(1)指令功能和格式的确定
ADCDR,SR指令的功能是,将SR中的值用作源操作数、DR的值用作目的操作数,并把状态寄存器中C标志位的值作为最低位进位输入完成求和运算,结果存入目的寄存器DR中,即DR←DR+SR+C。
指令格式可确定为操作码(8位),DR(4位),SR(4位)。
由于它的功能在取指之后可一步完成,我们把它归为A组指令,分配操作码为00100000。
指令寻址方式显然为寄存器寻址。
(2)指令步骤划分
与ADD指令类似,ADC指令也划分为以下3个步骤:
(i)AR←PC
(ii)读主存,IR←读出内容
PC←PC+1
(iii)DR←DR+SR+C,保存状态信息
结束,检测中断请求,无中断请求,进入下一条指令的执行过程。
(3)给出每个步骤的控制信号
我们发现,上面的(i)(ii)两步都可借用原有微程序的段,只有(iii)的控制信号需要设计。
根据教学计算机的要求,各部件要求的控制信号设计如下:
CI3~0SCC3~00MRW0I2~0SAI8~6SBI5~3B口A口0SSTSSHSCIDC2DC1
001100000100000110111000000000000001001000000000
另外,(iii)结束后,将和其他指令一样,转到检测中断请求的操作,所以,该条微指令的下地址字段值应为00110000(也就是16进制的30)。
(4)将设计好的微程序段加入到原有微程序中
首先,应确定该段微程序的微地址,我们可以选择一个原有微程序中没有使用的微地址如50,来存放该段微程序。
具体的操作步骤是,启动模拟程序后,先导入只有基本指令的ROM文件,进入显示ROMS内容窗口,在该窗口输入微地址50,按“查找”按钮后,在对应栏目中输入上面设计的微程序控制信号,输入完成后,按“update”按钮修改。
注意:
因为我们给ADC设计的操作码是20,还需要修改地址为20的MPROM单元的内容,向该单元写入50。
如希望保存设计结果,可按“生成新文件”按钮保存。
此处的数字均为16进制的数。
(5)检查并调试设计方案
设计一段汇编语言程序,包含有ADC指令。
装入到模拟程序中运行调试,通过观察寄存器状态,检查设计正确与否