找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3658|回复: 0
打印 上一主题 下一主题
收起左侧

计算机组成原理实验

[复制链接]
跳转到指定楼层
楼主
ID:531802 发表于 2019-5-9 18:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  
一、实验目的
  
通过看懂教学计算机中已经设计好并正常运行的几条典型指令(例如,ADD、SHR、OUT、MVRD、JRC、RET、CALA等指令)的功能、格式和执行流程,然后自己设计几条(至少5条)指令的功能、格式和执行流程,并在教学计算机上实现、调试正确。
  
二、实验设备
  
1.串口工作良好的PC机一台
  
2.TEC-XP+教学实验系统一台
  
三、实验内容
  
1.完成控制器部件的综合设计实验,自己设计几条指令的的功能、格式和执行流程,并在教学计算机上实现、调试正确。
  
2.首先是看懂TEC-XP+教学计算机的功能部件组成和线路逻辑关系,然后分析教学计算机中已经设计好并正常运行的几条典型指令(例如,ADD、SHR、OUT、MVRD、JRC、CALA、RET等指令)的功能、格式和执行流程。
  
3.设计几条指令的功能、格式和执行流程,并在教学计算机上实现、调试正确。例如ADC、JRS、JRNS、LDRA、STOR、JMPR等指令,可以从《TEC-XP+教学计算机系统技术说明与实验指导》第二章给出的19条扩展指令中任意选择,当然也可以设计与实现其它的指令,包括原来已经实现的基本指令(要变换为另外一个指令操作码)或自己确定的指令。在原来提供的MACH程序的基础上按照ABEL语言的要求添加新指令的控制信号,编译产生.JED文件并下载到MACH芯片里。软件的使用和下载参加附录。
  
4.单条运行指令,查看指令的功能、格式和执行流程。先将教学机左下方的6个拨动开关置为111100,再按一下“RESET”按键,然后通过16位的数据开关(SWH、SWL)置入指令,按“START”按键单步送脉冲,通过指示灯观察控制信号的变化。
  
5.用监控程序的A、E(扩展指令必须用E命令置入)命令编写一段小程序,观察运行结果。
  
6.实验时将教学机左下方的6个拨动开关置为001100,运行编写的小程序。观察终端显示的结果,检验设计的指令是否正确。若与预定结果不符,可查看指令的功能、格式、执行、流程设计的是否正确。
  
四、实验步骤
  
1.设计几条扩展指令的控制信号如下表:  
  
(1)选择扩展指令ADC、STC、JRS、LDRX、STRX和JMPR,其节拍和设计的控制信号为:  
  
   
节拍
   
指令
编码
/MIO
REO
/WE
A
B
Sci
SSH
18-6
15-3
12-0
SST
DC1
DC2
1000
1
0
0
0101
0101
01
00
011
001
001
000
000
111
0000
1
0
0
0101
0101
01
00
010
000
011
000
000
011
0010
0
0
1
0000
0000
00
00
001
000
000
000
000
001
0011
ADC
00100000
1
0
0
SR
DR
10
00
011
000
001
001
000
000
JRS
01100100
1
0
0
0101
0101
00
00
0S1
000
101
000
010
000
STC
01101101
1
0
0
0000
0000
00
00
001
000
000
100
000
000
JMPR
01100000
1
0
0
SR
0101
00
00
011
000
100
000
000
000
0110
LDRX
11100110
1
0
0
0101
0101
01
00
010
000
011
000
000
011
STRX
11100110
1
0
0
0101
0101
01
00
010
000
011
000
000
011
0111
LDRX
11100101
0
0
1
SR
0000
00
00
001
000
101
000
000
011
STRX
11100110
0
0
1
SR
0000
00
00
001
000
101
000
000
011
0101
LDRX
11100101
0
0
1
0000
DR
00
00
011
000
111
000
000
000
STR
11100110
0
0
0
0000
DR
00
00
001
000
011
000
001
000
  
(2)根据设计的控制信号的表格用ABEL语言编写MACH的逻辑表达式。
  
(3)将编译好的程序MACHC.JED下载到MACH芯片内。
  
2.单步方式下,通过指示灯观察上面扩展的几条扩展指令的控制信号是否与设计的一致。  
  
(1)观察A组指令中的ADC指令
  
①置拨动开关SW=00100000 00010000;
  
②先按“RESET”按键;再连续按“START”按键,观察每一步的节拍及控制信号如下表:
  
   
节拍
   
指令
编码
/MIO
REQ
/WE
A
B
Sci
SSH
I8-6
I5-3
I2-0
SST
DC1
DC2
1000
1
0
0
0101
0101
01
00
011
001
001
000
000
111
0000
1
0
0
0101
0101
01
00
010
000
011
000
000
011
0010
0
0
1
0000
0000
00
00
001
000
000
000
000
001
0011
ADC
00100000
1
0
0
SR
DR
10
00
011
000
001
001
000
000
  
(2)观察A组指令中的JRS指令:
  
①动开关SW=01100100 00000000;  
  
②先按“RESET”按键;再连续按“START”按键,观察每一步的节拍及控制信号如下表:
  
   
节拍
   
指令
编码
/MIO
REQ
/WE
A
B
Sci
SSH
I8-6
I5-3
I2-0
SST
DC1
DC2
1000
1
0
0
0101
0101
01
00
011
001
001
000
000
111
0000
1
0
0
0101
0101
01
00
010
000
011
000
000
011
0010
0
0
1
0000
0000
00
00
001
000
000
000
000
001
0011
JRS
01100100
1
0
0
0101
0101
00
00
0S1
000
101
000
010
000
  
(3)观察A组指令中的STC指令:
  
①置拨动开关SW=01101101  00000000;
  
②先按“RESET”按键;再连续按“START”按键,观察每一步的节拍及控制信号如下表。
  
   
节拍
   
指令
编码
/MIO
REQ
/WE
A
B
Sci
SSH
I8-6
I5-3
I2-0
SST
DC1
DC2
1000
1
0
0
0101
0101
01
00
011
001
001
000
000
111
0000
1
0
0
0101
0101
01
00
010
000
011
000
000
011
0010
0
0
1
0000
0000
00
00
001
000
000
000
000
001
0011
STC
01101101
1
0
0
0000
0000
00
00
001
000
000
100
000
000
  
(4)观察A组指令中的JMPR指令:
  
②  置拨动开关SW=01100000  00000001;
  
②先按“RESET”按键;再连续按“START”按键,观察每一步的节拍及控制信号如下表。
  
   
节拍
   
指令
编码
/MIO
REQ
/WE
A
B
Sci
SSH
I8-6
I5-3
I2-0
SST
DC1
DC2
1000
1
0
0
0101
0101
01
00
011
001
001
000
000
111
0000
1
0
0
0101
0101
01
00
010
000
011
000
000
011
0010
0
0
1
0000
0000
00
00
001
000
000
000
000
001
0011
JMPR
01100000
1
0
0
0001
0101
00
00
011
000
100
000
000
000
  
(5)观察C组指令中的LDRX指令:
  
①置拨动开关SW=11100101  00000000;
  
②先按“RESET”按键;再连续按“START”按键,观察每一步的节拍及控制信号。
  
   
节拍
   
指令
编码
/MIO
REO
/WE
A
B
Sci
SSH
18-6
15-3
12-0
SST
DC1
DC2
1000
1
0
0
0101
0101
01
00
011
001
001
000
000
111
0000
1
0
0
0101
0101
01
00
010
000
011
000
000
011
0010
0
0
1
0000
0000
00
00
001
000
000
000
000
001
0110
LDRX
11100101
1
0
0
0101
0101
01
00
010
000
011
000
000
011
0111
LDRX
11100101
0
0
1
SR
0000
00
00
001
000
101
000
000
011
0101
LDRX
11100101
0
0
1
0000
DR
00
00
011
000
111
000
000
000
  
(6)观察C组指令中的STRX指令:
  
①置拨动开关SW=11100110  00000000;
  
②先按“RESET”按键;再连续按“START”按键,观察每一步的节拍及控制信号。
  
   
节拍
   
指令
编码
/MIO
REO
/WE
A
B
Sci
SSH
18-6
15-3
12-0
SST
DC1
DC2
1000
1
0
0
0101
0101
01
00
011
001
001
000
000
111
0000
1
0
0
0101
0101
01
00
010
000
011
000
000
011
0010
0
0
1
0000
0000
00
00
001
000
000
000
000
001
0110
STRX
11100110
1
0
0
0101
0101
01
00
010
000
011
000
000
011
0111
STRX
11100110
0
0
1
SR
0000
00
00
001
000
101
000
000
011
0101
STRX
11100110
0
0
0
0000
DR
00
00
001
000
011
000
001
000
  
3.用教学机已实现的基本指令和扩展的几条指令编写程序并运行,测试扩展的几条指令是否正确。
  
(1)测试ADC指令。
  
在命令行提示符状态下输入:
  
A 2000↙
  
屏幕将显示:
  
2000:
  
从地址2000H开始输入下列程序:
  
2000: MVRD R0,0101 ;给R0赋值 0101
  
2002: MVRD R1,1010 ;给R1赋值 1010
  
2004: ↙
  
在命令行提示符状态下输入: A 2006↙
  
2006:  RET
  
2007: ↙
  
用E命令输入STC、ADC  R0,R1的代码,在命令行提示符状态下输入:
  
E 2004↙
  
2004: 6D00
  
2005:2001
  
2006: ↙
  
用G命令运行前面刚键入源程序,在命令行提示符状态下输入:
  
G 2000↙
  
用R命令察看寄存器的内容,在命令行提示符状态下输入
  
R↙
  
运行结果应为R0=1112   R1=1010。
  
(2)测试JMPR指令:
  
在命令行提示符状态下输入:
  
A 2020↙
  
屏幕将显示:
  
2020:
  
从地址2020开始输入下列程序:
  
2020: MVRD R2,000D ;给R2赋值000D,000D为回车键的ASCII码值  
  
2022: IN 81 ;判键盘上是否按了一个键,
  
2023: SHR R0 ;即串行口是否有了输入的字符
  
2024: SHR R0
  
2025: JRNC 2022 ;没有输入则循环测试
  
2026: IN 80 ;输入字符到R0低位字节
  
2027:MVRD R1,00FF
  
2029:AND R0,R1 ;清零R0的高位字节内容
  
202A: CMP R0,R2 ;判断输入字符是否为回车
  
202B: JRZ 2030 ;若是转向程序结束地址
  
202C: OUT 80 ;若否输出键入字符
  
202D: MVRD R3,2022
  
202F:↙
  
在命令行提示符状态下输入:
  
A 2030↙
  
2030: RET
  
2031:  ↙
  
用E命令输入JMPR R3的代码,在命令行提示符状态下输入:
  
E 202F↙
  
202F:6003  
  
2030:  ↙
  
用G命令运行前面刚键入源程序,在命令行提示符状态下输入:
  
G  2020↙ 光标闪烁等待键盘输入,若输入非回车字符,则在屏幕上回显;若输入回车字符,则程序执行结束。
  
(3)测试JRS指令:在命令行提示符状态下输入:
  
A 2100↙
  
屏幕将显示:
  
2100:从地址2100H开始输入下列程序:
  
2100:MVRD R1,0000 ;给R1赋值0000
  
2102:MVRD R2,4040 ;给R2赋值4040
  
2104:MVRD R3,01FF ;给R3赋值01FF
  
2106:ADD R2,R3 ;R2和R3相加
  
*2107:JRS 210E ;判第一位,若为1,向后跳6个单元
  
2108:MVRD R0,0030 ;给R0赋字符“0”
  
210A:OUT 80 ;输出该字符  
  
210B:INC R3 ;R3加1
  
210C:INC R1 ;R1加1
  
210D:JR 2106 ;跳到2106循环执行
  
210E:MVRD R0,0031 ;给R0赋字符“1”
  
2110:OUT 80 ;输出该字符  
  
2111:RET
  
E 2107↙
  
2107:6406 ;06为偏移量,该值是要转向的地址值减去JRS下一条指令的地址得出的。
  
用G命令运行前面刚键入源程序,在命令行提示符状态下输入:
  
G 2100↙
  
屏幕显示字符0001。
  
用R命令看寄存器的内容,在命令行提示符状态下输入:
  
R↙
  
屏幕回显15个寄存器的值,其中R1的值表示R3加1的次数。
  
(4)测LDRX
  
①在命令行提示符状态下输入:  
  
A 2080 屏幕将显示:   
  
2080: 从地址2080H开始输入下列程序:
  
2080:MVRD R2,2000 ;给寄存器R2赋值2000
  
*2082LDRX R10020[R2] ;将寄存器R2的内容与偏移量相加,相加的和为 ;内存单元2020,将该单元的内容赋给R1
  
*2084JMPR R1 ;跳转到寄存器R1所示的内存单元
  
2085:MVRD R0,0030 ;将字符‘0’的ASCII码值赋给R0
  
2087:OUT 80 ;输出该字符
  
2088:RET
  
2089:↙
  
注:扩展指令LDRX、JMPR必须用E命令键入,形式为:E 2082
  
2082 原值:E512 (空格) 原值:0020(空格)原值:6001↙
  
②在命令行提示符状态下输入:
  
E 2020
  
屏幕将显示:
  
内存单元原值:-
  
在光标处输入2100
  
③在命令行提示符状态下输入:
  
A 2100
  
屏幕将显示:
  
2100:
  
从地址2100H开始输入下列程序:
  
2100:MVRD R0,0036 ;将字符‘6’的ASCII码值赋给R0
  
2102:OUT 80 ;输出该字符
  
2103:RET
  
2104:↙
  
④在命令行提示符状态下输入:
  
G 2080↙
  
屏幕回显数字6。
  
(5)测STRX指令.
  
①在命令行提示符状态下输入:  
  
A 2000
  
屏幕将显示:
  
2000:
  
从地址2000H开始输入下列程序:  
  
2000:MVRD R1,6666
  
2002:MVRD R2,2000
  
*2004:STRX R1,0080[R2]
  
2006:RET
  
2007: ↙
  
扩展指令STRX是按如下格式输入的:
  
在命令行提示符状态下输入:
  
E 2004↙
  
内存单元原值:E612(空格) 内存单元原值:0060↙
  
②在命令行提示符状态下输入:
  
G 2000↙
  
执行输入的程序。
  
③在命令行提示符状态下输入: D 2060↙  
  
可以观察到2060内存单元的值为6666,表明寄存器R1中的内容已放入该内存单元,内存单元的值是由寄存器R2中的内容和偏移量0060相加得到的。
  
  
五、实验总结
  
通过本次试验,我通过看懂教学计算机中已经设计好并正常运行的几条典型指令(例如,ADD、SHR、OUT、MVRD、JRC、RET、CALA等指令)的功能、格式和执行流程,然后自己设计几条(至少5条)指令的功能、格式和执行流程,并在教学计算机上实现、调试正确。也看懂并了解了TEC-XP+教学计算机的功能部件组成和线路逻辑关系,然后分析了教学计算机中已经设计好并正常运行的几条典型指令(例如,ADD、SHR、OUT、MVRD、JRC、CALA、RET等指令)的功能、格式和执行流程。首先我感谢老师的辅导,没有老师的指导,我的试验也不会完成。实验的过程中我遇到了许多的困难,丹我都一一的进行了克服。从中我对于计算机的组成及原理更加的深入贯彻,享受从理论上升到了实践的过程。
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
教师签名:
  
  
                                                           年    月     日
  

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表