一、实验目的 通过看懂教学计算机中已经设计好并正常运行的几条典型指令(例如,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,其节拍和设计的控制信号为: (2)根据设计的控制信号的表格用ABEL语言编写MACH的逻辑表达式。 (3)将编译好的程序MACHC.JED下载到MACH芯片内。 2.单步方式下,通过指示灯观察上面扩展的几条扩展指令的控制信号是否与设计的一致。 (1)观察A组指令中的ADC指令 ①置拨动开关SW=00100000 00010000; ②先按“RESET”按键;再连续按“START”按键,观察每一步的节拍及控制信号如下表: (2)观察A组指令中的JRS指令: ①动开关SW=01100100 00000000; ②先按“RESET”按键;再连续按“START”按键,观察每一步的节拍及控制信号如下表: (3)观察A组指令中的STC指令: ①置拨动开关SW=01101101 00000000; ②先按“RESET”按键;再连续按“START”按键,观察每一步的节拍及控制信号如下表。 (4)观察A组指令中的JMPR指令: ② 置拨动开关SW=01100000 00000001; ②先按“RESET”按键;再连续按“START”按键,观察每一步的节拍及控制信号如下表。 (5)观察C组指令中的LDRX指令: ①置拨动开关SW=11100101 00000000; ②先按“RESET”按键;再连续按“START”按键,观察每一步的节拍及控制信号。 (6)观察C组指令中的STRX指令: ①置拨动开关SW=11100110 00000000; ②先按“RESET”按键;再连续按“START”按键,观察每一步的节拍及控制信号。 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 *2082:LDRX R1,0020[R2] ;将寄存器R2的内容与偏移量相加,相加的和为 ;内存单元2020,将该单元的内容赋给R1 *2084:JMPR 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等指令)的功能、格式和执行流程。首先我感谢老师的辅导,没有老师的指导,我的试验也不会完成。实验的过程中我遇到了许多的困难,丹我都一一的进行了克服。从中我对于计算机的组成及原理更加的深入贯彻,享受从理论上升到了实践的过程。 教师签名: 年 月 日 |