计算机组成原理实验指导-2012-1 - 图文

更新时间:2024-01-19 18:34:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

计算机组成原理 实验指导

河南大学计算机与信息工程学院

2011年

TEC-XP实验设备概述

TEC-XP实验设备是由清华大学科教仪器厂和清华大学计算机系联合研制,并通过教育部鉴定的实验系统。TEC-XP是在原有TEC系列教学计算机系统的基础上,重新设计的新一代产品,进一步增加了用单片FPGA门阵列器件实现的CPU系统。该实验系统重点用于计算机组成原理、计算机系统结构等课程的硬件教学实验,还支持监控程序、汇编语言程序设计、BASIC高级语言程序设计等软件方面的教学实验。

TEC-XP教学机的外观如图1所示。

图1 TEC-XP教学机的外观

TEC-XP教学机的系统结构如图2所示。

/GAR地址寄存器电平转换Y地CZVS址译码 2路串行接口器运算器部件总线DA口 B口I8~I0SSH SCI SST数据内部总线双线选通门/SWTOIB/YTOIB/IRLTOIB/FTOIB控制信号总线数据总线FFPGPGAA芯片实现的CPUPU系统控制总线/MIO REQ /WEDC2译/GAR码器/GIR译码器DC1译码器 内存体控制器部件地址总线

图2 TEC-XP教学机的系统结构图

TEC-XP教学机的主要技术指标

TEC-XP教学机的机器字长16位,即运算器、主存、数据总线、地址总线都是16位。 (1)TEC-XP的内存地址分配如图3所示。其中0000H~1FFFH的8K空间是由ROM构成的,存放洗的监控程序,2000H~27FFH的2K空间是由RAM构成的工作区。该教学机还可以进一步完成存储器扩展的教学实验,扩展地址从4000H开始。

图3 TEX-XP教学机的内存分配

(2)运算器由4片位片结构器件级联而成,片间用串行进位方式传递进位信号。ALU实现8种算术与逻辑运算功能,内部包括16个双端口读出、单端口写入的通用寄存器,和一个能自行移位的乘商寄存器。设置C(进位标志位)、Z(零标志位)、V(溢出标志位)、S(符号标志位)四个状态标志位。

(3)控制器采用微程序和硬布线两种控制方案实现,可由实验者自由选择。

TEC-XP教学机的面板结构

TEC-XP教学机的面板结构如图4所示,控制部件主要由运算部件ALU、控制部件——组合逻辑控制器和微程序处理器、存储部件——ROM和RAM、控制存储器等芯片构成。

用户输入部分在面板的最下方,自左向右分别是工作模式选择开关、运算器控制信号输入开关、数据输入开关三个部分。系统中的输出结果可由面板上的发光二极管状态得到。

图4 TEX-XP教学机的面板

TEC-XP教学机的脱机和联机工作方式

TEC-XP教学机可以采用脱机和联机两种工作方式。 脱机工作方式是指所有操作在TEC-XP教学机上完成,通过控制按钮、数据开关等硬件的设置来控制TEC-XP教学机的工作,执行结果在发光二极管上查看。这种方式适合于需要做硬件级别实验时使用。

联机工作方式是指,TEC-XP教学机通过串口与PC连接,由PC运行仿真终端软件PCEC(路径一般为:D:\\大板可编程器件内容\\Pcec16.com),在监控状态下对TEC-XP教学机的工作进行操作控制。这种方式适合于需要大量数据输入和输出的实验中使用。

图5 TEC-XP教学机的串口

工作模式选择开关

在每次使用TEC-XP教学机进行实验之前,都应先选择当前教学机应工作的状态,这由面板左下方的5个黑色控制开关的状态决定,工作模式的选择如表1所示。其中“1”表示开关上拨,“0”表示开关下拨,“X”表示该开关无用。

表1 工作模式选择开关状态

开关状态 00110 00010 11110 11010 1XX00

工作模式 连续运行程序、采用组合逻辑控制器、联机、16位机 连续运行程序、采用微程序控制器、联机、16位机 单步运行程序、手动设置指令、采用组合逻辑控制器、联机、16位机 单步运行程序、手动设置指令、采用微程序控制器、联机、16位机 16位机、脱机运算器实验 TEC-XP教学机串口的状态寄存器

TEC-XP教学机是通过串口(可编程串行接口8251A)与PC连接的,在联机操作中,PC机对教学机的访问是通过对其数据端口和控制状态端口来完成的。TEC-XP教学机的COM1口(左侧)的数据端口地址为80H,控制与状态口地址为81H;COM2(右侧)的数据端口地址为82H,控制与状态口地址为83H。

TEC-XP教学机与PC机的联机操作方法

1、将TEC-XP教学机放在实验台上,连接好电源线,关上实验箱侧边的电源开关。 2、使用串行通信线连接TEC-XP教学机与PC机的串口。(该串口连接已由实验室老师完成)

3、将TEC-XP教学机的工作模式选择开关设置为00110。

4、打开TEC-XP教学机的电源开关,检查面板上的发光二极管状态是否正常。 5、打开PC机,在D:\\大板可编程器件内容\\Pcec16.com路径下找到PCEC16.EXE文件,并运行;

注意:监控程序运行时需要选择连接串口,此时应选的是当前所连PC机的串口,而不是TEC-XP教学机的串口。

实验时可尝试选择串口1或串口2,其他设置一般不用改动,直接回车即可。

6、按下TEC-XP教学机的面板左下角的RESET和START按键,当主机上显示如下内容时,表示已进入TEC-XP教学机的的监控程序,可以开始联机实验。

TEC-XP CRT MONITOR Version 1.0 April 2001 Computer Architecture Lab. ,Tsinghua Uniersity Programmed by He Jia > 注意:提示符“>”是TEC-XP教学机监控程序的提示符。

TEC-XP教学机的监控命令

当TEC-XP教学机在联机工作方式下时,应使用PC来控制教学机的工作。在PC机的监控状态下,监控命令与DOS系统的DEBUG命令相似,具体命令格式及含义如表2所示。

表2 教学机的监控命令格式及含义

命令名称 汇编命令 反汇编命令 执行程序命令 命令格式 功能 A[adr] U[adr] G[adr] 输入单条指令,并将汇编之后的机器代码存入相应的内存单元中。有错误提示,但功能并不完善 从指定或默认地址开始反汇编15条指令,并将结果显示处理 从指定或默认地址开始连续运行一个用户程序 从命令指定或PC指定地址开始单条执行指令 当R命令不带参数时只是显示所有寄存器的内容;当R命令带参数时显示指定寄存器的内容,并可修改其值 从指定或默认地址开始显示内存128个存储字的内容 从指定或默认地址开始逐字显示每个内存字的内容并等待用户键入一个新值存回该单元,用空格切换各个单元,用回车结束E命令的执行。 单条指令执T[adr] 行命令 P[adr] 显示/修改寄存器内容命R[reg] 令 显示存储器内容命令 D[adr] 修改存储器E[adr] 内容命令 其中,adr表示直接地址,reg表示寄存器,均是可选项。 注意:以上监控命令与8086汇编系统中的DEBUG命令名相同,但命令格式不同,请注意使用时区分清楚。

TEC-XP教学计算机的指令系统

TEC-XP教学计算机的指令系统中共有48条指令,包含基本的传送类指令、算术逻辑运算类指令、IO访问指令、转移控制类指令、子程序调用和返回指令等。

根据指令的不同功能,指令的操作数个数为0~3个,操作数可以使用立即数寻址方式、寄存器寻址方式、直接寻址方式、寄存器间接寻址方式、寄存器相对寻址方式等,但每条指令中的操作数寻址方式都是固定的,只能按照对应的格式使用,不能随意更改。

1、指令系统的分组

TEC-XP教学计算机中,按照每条指令的功能和实际的执行步骤,将指令分成了A、B、C、D共4组,每条指令的所属组详见具体的指令描述。

A组中的指令执行时,一般只是完成通用寄存器间的数据运算或传送,在取指后可一步完成。

B组中的指令,一般需要完成一次内存或I/O读、写操作,在取指后可两步完成:第一步把要使用的地址传送到地址寄存器ARH、ARL中,第二步执行内存或I/O读写操作。

C组中的指令,在取指后可三步完成:其中CALR在用两步读写内存后,第三步执行寄存器间的数据传递;而其它指令在第一步置地址寄存器ARH、ARL,第二步读内存(即取地址操作数)、计算内存地址、置地址寄存器ARH、ARL,第三步读、写内存。

D组中的指令,完成两次读、写内存操作,在取指之后可四步完成。

2、指令的一般格式

该指令系统中包含有单字长指令(16位)和双字长指令(32位),其指令的一般格式如下所示。

15 8 7 4 3 0 操作码 目的寄存器号 源寄存器号 I/O端口地址/相对偏移量 立即数/绝对地址/变址偏移量 所有指令的操作码均为8位的,(记作IR15~IR8),每位的含义如下:

①IR15、IR14用于区分指令组:0X表示A组,10表示B组,11表示C、D组;C、D组的区分还要用IR11,IR11=0为C组,IR11=1为D组。

②IR13用于区分基本指令和扩展指令:基本指令该位为0,扩展指令该位为1。 ③IR12用于简化控制器实现,其值恒为0。

④IR11~IR8用于区分同一指令组中的不同指令。

若指令中使用寄存器寻址方式,则可使用的寄存器共有16个,分别为R0~R15,其中R4,R5,R6为专用寄存器,分别作为R4——堆栈指针;R5——程序计数器PC;R6——指令当前地址寄存器IP;其余13个寄存器作为通用寄存器供用户编程用。

3、指令系统

下面按照指令字长和指令中操作数的个数,分类介绍每条指令,在以下描述中,使用默认的助记符如下:

SR―源操作数寄存器;

DR-目的操作数寄存器; PC-程序计数器; OP-指令操作码。

① 单字、无操作数指令,共8条

格式:

指令格式 PSHF POPF RET CLC STC EI DI IRET

② 单字、单操作数指令,共21条

指令格式 DEC DR INC DR SHL DR SHR DR JR OFFSET JRC OFFSET JRNC OFFSET JRZ OFFSET JRNZ OFFSET IN I/O端口 OUT I/O端口 含义 状态标志(C、Z、V、S、P1、P0)入栈 弹出栈顶数据到状态标志寄存器 子程序返回 清进位标志位C= 0 置进位标志位C= 1 开中断,置中断允许位INTE=1 关中断,置中断允许位INTE=0 中断返回 指令类型 B组基本指令 B组基本指令 B组基本指令 A组扩展指令 A组扩展指令 A组扩展指令 A组扩展指令 D组扩展指令 15 8 OP 7 0 0000 0000 15 8 OP 7 0 DR 0000 0000 SR OFFSET I/O 端口 含义 指令类型 A组基本指令 A组基本指令 A组基本指令 A组基本指令 A组基本指令 A组基本指令 A组基本指令 A组基本指令 A组基本指令 B组基本指令 B组基本指令 DR←DR-1 DR←DR+1 DR逻辑左移(低位补0,高位移入C) DR逻辑右移 (高位补0,低位移入C) 无条件转移到ADR,ADR=原PC值+位移量 C=1时,转移到ADR,ADR=原PC值+位移量 C=0时,转移到ADR,ADR=原PC值+位移量 Z=1时,转移到ADR,ADR=原PC值+位移量 Z=0时,转移到ADR,ADR=原PC值+位移量 R0←[I/O端口] 从外设I/O端口读入字节数据到R0低8位 [I/O端口]←R0 R0低8位数据写入外设I/O端口 PUSH SR POP DR RCL DR RCR DR ASR DR NOT DR JMPR SR CALR SR JRS OFFSET JRNS OFFSET SR入栈 弹出栈顶数据到DR DR与C循环左移 (C移入最低位,最高位移入C) DR与C循环右移 (C移入最高位,最低位移入C) DR算术右移 (最高位不变,最低位移入C) DR求反,即DR←/DR 无条件转移到SR指向的地址 调用SR指向的子程序 S=1时,转移到ADR,ADR=原PC值+位移量 S=0时,转移到ADR,ADR=原PC值+位移量 B组基本指令 B组基本指令 A组扩展指令 A组扩展指令 A组扩展指令 A组扩展指令 A组扩展指令 C组扩展指令 A组扩展指令 A组扩展指令 ③ 单字、双操作数指令,共12条 指令格式 ADD DR , SR SUB DR , SR AND DR , SR CMP DR , SR XOR DR , SR TEST DR , SR OR DR , SR MVRR DR , SR LDRR DR,[SR] STRR [DR],SR ADC DR , SR SBB DR , SR ④ 双字、单操作数指令,2条

15 8 7 4 3 0 OP DR 含义 不带进位加 不带进位减 逻辑与 比较(SR‐DR的结果影响标志位) 逻辑异或 测试(做与操作,但不改变操作数,只影响标志位) 逻辑或 寄存器间传送数据 DR←[SR] [DR]←SR 带进位加 带进位减 SR 指令类型 A组基本指令 A组基本指令 A组基本指令 A组基本指令 A组基本指令 A组基本指令 A组基本指令 A组基本指令 B组基本指令 B组基本指令 A组扩展指令 A组扩展指令 15 8 7 0 OP 0000 0000 ADR 指令格式 JMPA ADR 含义 无条件转移到地址ADR 指令类型 B组基本指令 D组基本指令 调用首地址在ADR的子程序 CALA ADR ⑤ 双字、双操作数指令,2种格式 格式1:

基本指令 MVRD DR,DATA LDRA DR,[ADR] STRA [ADR],SR

格式2: 15 8 OP 7 0 DR 0000 0000 SR DATA 含义 DR←DATA DR←[ADR] [ADR]←SR 指令类型 B组基本指令 C组扩展指令 C组扩展指令 15 8 7 0 OP DR SR DATA 含义 DR← [OFFSET+ SR] [OFFSET+ DR]← SR 指令类型 C组扩展指令 C组扩展指令 指令格式 LDRX DR,OFFSET[SR] STRX OFFSET[DR],SR

实验项目设置与安排

计算机组成原理实验一共有5个实验,总共18个学时。

实验项目 实验一 TEC-XP教学机环境熟悉 实验二 运算器实验 实验三 存储器实验 实验四 微程序控制器实验 实验五 TEC-XP汇编语言程序设计 实验六 中断实验 合计

学时安排 2学时 4学时 2学时 4学时 2学时 4学时 18学时 实验注意事项

1、硬件芯片级实验,避免用手、金属物直接碰触芯片,以防静电损坏芯片;

2、进行硬件连接、或长时间不用时,请关闭实验箱电源;

3、按时到达实验室(608),认真实验,做好数据记录,课下完成实验报告;

实验一 TEC-XP教学机环境熟悉

实验目的

1、 学习和了解TEC-XP教学实验系统监控命令的用法; 2、 学习和了解TEC-XP教学实验系统的指令系统;

3、 学习和了解TEC-XP教学实验系统汇编程序设计方法。

实验内容

1、 熟悉TEC-XP教学机与PC机的联机操作过程;

2、 练习常用的TEC-XP教学机监控命令;

3、 在监控状态下输入给定的汇编程序,进行单步跟踪执行,并观察结果; 4、 编写指定功能的汇编语言程序,并调试通过。

实验要求

使用教学机前,熟悉TEC-XP教学机的各个组成部分及其使用方法。

实验学时

2学时

实验步骤

1、完成TEC-XP教学机与PC机的联机操作

详细步骤见概述部分的“脱机和联机工作方式”。

2、练习常用的TEC-XP教学机监控命令

(1)R命令(查看或修改寄存器内容)

1在命令行提示符状态下输入: ○

R↙ ;显示寄存器内容

2在命令行提示符状态下输入: ○

R R0↙ ;修改寄存器R0的内容,再用R命令查看修改的结果。

(2)用D命令显示存储器的内容

在命令行提示符状态下输入:

D 2000↙ ;显示从地址2000H开始的128个字的内容;

连续使用不带参数的D命令,起始地址会自动加128(即80H)。

(3)用E命令修改存储器的内容 在命令行提示符状态下输入:

E 2000↙

屏幕显示地址2000单元的原有内容,可输入更改值;然后再用D命令显示修

改的结果。

注意:用E命令连续修改内存单元的值时,每修改完一个,按一下空格,系统会自动给出下一个内存单元的值,等待修改;按回车则退出E命令。

3、输入给定的汇编程序,单步跟踪执行,并观察结果

(1)输入如下形式的程序,请单步跟踪执行,说明程序功能。

2000:MVRD R0,AAAA ;MVRD与R0之间有且只有一个空格,其他同 2002:MVRD R1,5555 2004:ADD R0,R1

2005:AND R0,R1

2006:RET ↙ ;程序的最后一个语句,必须为RET指令

2007:↙

若输入有误,系统会给出提示并显示出错地址,只需在该地址用A命令重新输入正确的指令即可。

(2)输入如下形式的程序,请单步跟踪执行,说明程序功能。

2000: IN 80 ;输入数据保存于R0寄存器的低8位中 2001: CMP R0 , 30 2002: JRC EXIT 2003: CMP R0 , 39 2004: JRNC EXIT

2005: OUT 80 ; R0-> [I/O PORT] 2006: RET ↙ 2007: ↙

实验报告要求

本次实验需完成实验报告一份。

实验二 运算器实验

实验目的

1、深入了解AM2901运算器的功能与具体用法; 2、深化运算器部件的组成、设计、控制与使用等知识。

实验内容

在脱机方式下,对于给定指令分析其执行过程中运算的步骤,通过对AM2901运算器所需控制信号的设置,使之完成运算,并核对运算结果。

实验要求

1.实验前,认真了解AM2901运算器的基本结构,预习所需实验的内容,并在课前填写实验步骤表格,对于实验数据和实验结果进行预期性的分析,以提高实验效率;

2.实验过程中,要按正确流程操作,防止损坏设备,分析可能遇到的各种现象,判断结果是否正确,记录运行结果。

3.实验之后,认真写出实验报告,包括对遇到的各种现象的分析,实验步骤和实验结果。

实验学时

4学时

实验原理

图2-1 Am2901的数据通路

1、运算器数据通路

TEC-XP教学机的运算器主要采用4片Am2901芯片级联组成,每片Am2901芯片实现4位运算,4片芯片级联成16位的运算器。

Am2901芯片的组成包括:1个4位的算术逻辑单元ALU、16个4位的通用寄存器、1个4位的乘商寄存器Q和若干个多路选择开关。Am2901的数据通路如图2-1所示。 (1)算术逻辑单元ALU

ALU有两个数据输入端R和S。R端的数据来源有三个——寄存器A、数据线D、数值0;S端的数据来源有四个——寄存器A、寄存器B、乘商寄存器Q、数值0。在RS的各种组合中除去没有意义的和重复的,只有8种有效的组合。ALU的数据来源由控制信号I2I1I0决定,其控制方式如表2-1所示。

ALU可完成两个操作数的加、减、与、或、异或等多种操作,操作类型的控制有控制信号I5I4I3决定,其控制方式如表2-2所示。ALU若要实现乘除等其他运算,可使用串行算法来完成。

ALU的输出结果可保存到通用寄存器、乘商寄存器Q,并且可以将其值乘除2之后再保存,该过程控制由I8I7I6和SSH控制,其控制方式如表2-3、表2-5所示。

ALU根据其运算的结果会产生4个标志位——符号标志位F3、零标志位F=0、溢出标志位OVR和进位标志位Cn+4。ALU运算后标志位设置可有多种不同的方式,其设置控制由SST

控制信号决定,其控制方式如表2-6所示。

(2)通用寄存器组

Am2901中的通用寄存器组是由16个寄存器构成,具有双端口读写电路。可以通过A口、B口输入的地址(4位地址)选择寄存器,将其值送入A、B锁存器。其中A口地址指定的寄存器是只读的,B口地址指定的寄存器是可读写的。

A、B锁存器可作为ALU的输入数据,ALU输出的结果值也可以保存到B口指定的寄存器中,而且在写寄存器时,可以通过通用寄存器组入口处的三选一多路开关,选择写入ALU结果值,或其左移(乘2)、右移(除2)之后的结果。 (3)乘商寄存器

乘商寄存器Q是为配合ALU的乘除运算而设置的。该寄存器输入端有三选一多路开关,可选择ALU输出结果、或乘商寄存器Q本身的内容作为其输入数据,同时还可以将这两个输入值左移(乘2)、右移(除2)之后,再送入Q中。 (4)最低进位信号Cin

Am2901的基本运算是加法电路,其减法功能的实现是通过对减数求补而完成的。因此,在ALU运算时,应使用SCI控制位设置最低进位信号Cin的状态,具体控制方式见表2-4。

2、Am2901的级联结构

一片4位的Am2901芯片的引脚信号如图2-2所示。其中A3~A0、B3~B0用于输入选中的通用寄存器地址(0000~1111分别对应于R0~R15);I8~I0用于运算过程的控制信号;D3~D0用于输入外部数据;Y3~Y0用于输出运算的结果;CP为时钟信号;/OE为选通信号;RAM3、RAM0为运算结果左右移时的移出位;Q3、Q0为乘商寄存器Q左右移时的移出位;Cy、F=0、Over、F3分别为进位标志位、零标志位、溢出标志位、符号标志位;Cin为外部输入的最低

进位位。

图2-2 Am2901芯片的引脚信号

TEC-XP教学机的16位运算器是采用4片Am2901芯片级联而成的,各芯片之间采用串行进位方式,具体连接图如图2-3所示。该运算器进行运算时,需要对4个芯片加同样的A、B口地址、I8~I0控制信号,通过对选定的16位通用寄存器(每4位分属4个芯片)、或外部数据D的运算,产生Y输出,以及标志位状态。

图2-3 4片Am2901芯片的级联结构

3、Am2901时钟信号的作用

在Am2901的每个ALU操作周期内,ALU各部件的执行时间是不同的,具体操作过程如图2-4所示

图2-4 Am2901时钟信号的作用

4、实验控制信号开关说明

该实验是在完全脱机的方式下完成的。实验过程中,使用实验箱面板下方标有micro switch 1和micro switch 2的两个红色开关(控制信号顺序如图2-5所示),设置24位的运算控制信号。运算完成后,通过实验箱面板中间位置的发光二极管观察运算结果。实验过程中可能会用到外部输入数据,则可通过实验箱面板右下方的16个黑色数据开关设置。

图2-5 Micro switch开关信号顺序

5、指令举例

指令1:MVRD R0,0FFFFH

分析:

(1)该指令是使用立即数为寄存器赋值的,立即数应从数据总线拨入,经ALU传送至目的寄存器R0,因此,ALU的数据来源应选择D、0,即I2-I0取值为111。

(2)该赋值指令中的数据必须经过ALU才可写入通用寄存器,可使用FFFFH+0→R0的操作,因此,ALU的运算类型应选择算术加;I5- I3取值为000。

(3)ALU的运算结果应保存至B口地址指定的通用寄存器中,即I8-I6取值为011,同时B口地址输入R0的地址(0000)。

(4)其余信号:A口地址无用,为任意值;SST取000(标志位保持不变,传送类指令不影响标志位状态);SSH—00(不移位);Sci—00(Cin=0)。

指令2:ADD R0, R1

分析:

(1)该指令是加法运算指令,因此,ALU的运算类型应选择算术加;I5-I3取值为000。 (2)两个操作数都是通用寄存器,故,ALU的数据来源应选择A、B;I2-I0取值为001,且A口地址为0001,B口地址为0000,I8-I6取值为011(将ALU的输出保存至B口指定寄存器)。 (3)其余信号:SST—001(按照运算结果设置标志位,加法指令正常影响标志位);SSH—00(不移位);Sci—00(Cin=0)。

指令3:SUB R0 , R1

分析:

(1)该指令是减法运算指令,两个操作数都是通用寄存器,故,ALU的数据来源应选择A、B;I2-I0取值为001,且A口地址为0001,B口地址为0000,I8-I6取值为011(将ALU的输出保存至B口指定寄存器)。 (2)由ALU数据的来源可决定,本次运算应使用B-A的方式,因此,结合I5-I3的组合形式,可取值001。

(3)其余信号:SST—001(按照运算结果设置标志位);SSH—00(不移位);Sci—01(使用Cin=1的值作为减数求补时末位应加上的1)。

实验步骤

1、预习Am2901运算器原理,并填写下表。(第一次实验之前务必完成)

表1 运算器实验一验证内容

运算 按START前 I8~0 SST 011MVRD R0 , 0101 000111 011MVRD R1 , 1010 000111 011ADD R0 , R1 00 0 00 00 00000001 01 01 0 0 0 00 00 001 1010 000 00 00 SSH SCI B A ALU输出 SVZC 按START后 ALU输出 SVZC 0000 任0101 意 0101 0010 000 1010 SUB R0 , R1 SUB R1 , R0 OR R0 , R1 AND R0 , R1 XOR R0 , R1 ┑(R0⊕R1)?R0 2*R0?R0 R0/2?R0

2、实验方式设置

将TEC-XP教学机左下方的5个功能开关设置为1**00(单步、16位、脱机);先按一下“RESET”按键,再按一下“START”按键,进行初始化。

3、逐条指令执行,并核对结果

完成初始化后,请按顺序控制运算器执行每条指令,每条指令执行时请记录按START前和按START后两个时刻的状态,若与预期结果不同,请查找问题并思考原因。

4、预习Am2901运算器原理,并填写下表。(第二次实验之前务必完成)

表2 运算器实验一验证内容

运算 按START前 I8~0 SST SSH SCI B A ALU输出 SVZC 按START后 ALU输出 SVZC 按照上次实验的步骤,继续完成验证型实验内容。 思考问题

1、每次运算,为什么按START之前和按START之后的结果会有不同?应使用哪个结果作为当前的运算结果?为什么?

2、分析第二次实验内容中的R0-R2→R0 和R8-R9→R9 的结果,说明其中操作控制的区别。

实验报告要求

本次实验需完成实验报告一份,本次实验报告内容写出验证后“表1 证内容”的内容,并对思考问题进行讨论。

运算器实验一验 控制信号附录表

表2-1 ALU数据来源控制I2I1I0 表2-2 ALU运算类型控制I5I4I3 表2-3 ALU数据传送控制I8I7I6

SCI 0 0 1 1 0 1 0 1 Cin 0 1 C TCLK2方波 典型指令 ADD、DEC INC、SUB ADC、SBB 本实验中不使用

表2-4 最低进位Cin控制信号SCI

表2-5 移位状态控制信号SSH

SSH 0 0 1 1 0 1 0 左移 RAM0 0 C Q3 Q0 * * F3 右移 RAM3 0 C CY F3⊕OV Q3 * * RAM0 说明 补0(逻辑左右移) 带进位移(循环移位) 带Q同时移位(乘除时) 补码右移 1 * * RAM0 注:RAM0指任意一个通用寄存器的最低位,RAM15指任意一个通用寄存器的最高位。 表2-6 标志位状态控制信号SST

SST编码 000 001 010 011 100 101 110 111 C Z V S C Z V S Cy F=0 OVR F15 内部总线对应的一位 0 Z V S 1 Z V S RAM0 Z V S RAM15 Z V S Q0 Z V S 说明 四个标志位的值保持不变 接收ALU的标志位输出的值 恢复标志位原来的现场值 置“0”C,另三个标志位不变 置“1”C,另三个标志位不变 右移操作,另三个标志位不变 左移操作,另三个标志位不变 联合右移,另三个标志位不变 实验三 存储器实验

实验目的

1、了解计算机中半导体存储器RAM、EPROM和EPROM的功能和区别; 2、理解并掌握半导体存储器芯片的扩展和验证方式;

2

实验内容

1、验证半导体存储器RAM的读写特性;

2、使用给定的存储芯片进行存储器的容量扩展,扩展地址从4000H开始; 3、对于扩展的存储芯片进行读写验证,并理解E2PROM的读写特性;

实验要求

实验前先复习存储器字、位扩展的方法,并熟悉所做实验的内容。

实验学时

2学时

实验步骤

1、TEC-XP教学机现有RAM存储区的读写特性验证

TEC-XP教学机的存储系统中,2000H~27FFH的2K空间是由6116 RAM芯片构成的(详见概述部分的“主要技术指标”内容介绍)。随机存储器RAM的读写特性是:在不断电的情况下,CPU可以对该存储器的任何单元进行随机读写操作,其中内容可以长期保存;但该存储器是易失性的存储器,一旦断电,其中数据均被清空。

本实验要在监控状态下,分别使用不同的监控命令对该RAM存储芯片的读写特性进行验证。由于是联机测试,需要将TEC-XP的功能开关先置为00110。 (1)检查FPGA下方的插针按下列要求短接 标有“/MWR”“RD”的插针左边两个短接; 标有“/MRD”“GND”的插针右边两个短接; 标有“ROMLCS”和“RAMLCS”的插针短接。 (2)使用E命令修改RAM中某存储单元的值 在命令行提示符状态下输入: E 2020↙

屏幕将显示:2020 内存单元原值:

按如下形式输入:2020 原值:2222(空格)原值:3333(空格)原值:4444(空格)原值:5555↙

注意:E命令之后的地址应为2000~25FFH之间的某一个单元。 (3)使用D命令查看所修改单元的内容 D 2020↙

这里查看到的数据,应与上一步中输入的数据一致。

(4)断电后重新启动教学机,使用D命令再次查看所修改单元的内容 D 2020↙

这里发现原来置入到这几个内存单元的值已经改变。因此,用户使用RAM时,必须在每次断电重启后,重新写入所需要的数据。 (5)使用A命令输入一段指令序列 A 2000↙

按如下形式输入:

2000:MVRD R0,AAAA 2002:MVRD R1,5555 2004:AND R0,R1 2005:RET

2006:↙

这里,对RAM使用A命令写入连续的指令不会出错。 (6)单步方式执行以上指令序列,观察结果 T 2000↙

R0的值变为AAAAH,其余寄存器的值不变。 T↙

R1的值变为5555H,其余寄存器的值不变。 T↙

R0的值变为0000H,其余寄存器的值不变。 (7)教学机断电重启后,以上数据仍然会丢失

2、给定EPROM存储芯片的扩展连接

TEC-XP教学机中的RAM芯片和扩展对应的器件位置如图3-1所示。 (1)将E2PROM芯片插入扩展插槽位置

每台教学机配备2片E2PROM芯片,实验时应首先将这两个芯片插入指定区域标有“EXTROMH”和“EXTROML”的自锁紧插座中。插入方法:将锁紧杆拨开,按正确的方向将芯片插入插座中,然后放下锁紧杆,固定芯片。

2

注意:芯片插入时,应将带有半圆形缺口的一方朝左插入,一旦插反会导致芯片烧毁。

(2)数据地址线连接

将标有“DataBus 15-8”和“DataBus 7-0”的数据总线的指示灯下方的插针短接。 将标有“AddressBus 15-8”和“AddressBus 7-0”的地址总线的指示灯下方的插针短接。 (3)读写控制总线连接

将EXTROML芯片右上方的标有“WE”和“A11”的插针下面两个短接。 标有“TEC”“OE”“GND”“FPGA”的四个插针上面一排左边的两个短接。

图3-1 存储器扩展实验器件位置图

(4)片选信号连接

首先要将“EXTROMLCS”插针短接,具体的片选信号的连接可以有两种方式:一种是插针短接方式,扩展默认地址;另一种是直接连接译码器的方式,扩展地址可选。相关的插槽位置如图3-2所示。

方法一:将EXTROML芯片右边标有“TEC”“/CS”“FPGA”的三个插针左边两个短接,这表示扩展的RAM的内存地址是从4000H开始,可用空间是4000H~5FFFH,用户可在这个范围内输入程序或改变内存单元的值。

方法二:将标有“EXTROMLCS”的圆孔针与74LS138译码器下方的一排圆孔针中的任意一个用导线相连。注意:连接译码器的哪个输出端,给扩展芯片分配的就是对应的地址范围。

图3-2 译码器及插槽示意图

3、扩展容量的读写特性验证

扩展用的E2PROM芯片,其读操作和RAM一样,而其写操作,由于要先擦除信息再写入,因此需要一定的延迟时间,大约为1毫秒。在对EPROM进行写操作时,应加入一段延时子程序的调用,以完成正确的读写。

(1)用E修改扩展单元的内容,并用D查看结果

假定第2步中的扩展连接采用的是默认地址4000H~5FFFH,使用E命令修改该地址范

2

围内的某几个单元,再用D命令查看数据的修改情况。

将教学机断电后重新启动,再次查看以上修改单元的值,分析原因。 (2)控制程序

实验使用的E2PROM芯片不能直接用A命令输入程序,单字节的指令可能会写进去,双字节指令的低位会出错(建议试一试)。因此,可以将程序放到RAM(6116)中,使用程序读写扩展空间5000H~500FH单元。 从2000H单元开始输入主程序: (2000) MVRD R0,0030

MVRD R2,0010 MVRD R3,5000

[R3],R0 2200 R0 R3 R2 2006

CALA INC INC DEC JRNZ RET

;R2记录循环次数

;R3的内容为16位内存地址

;将R0寄存器的内容放到R3给出的内存单元中 ;调用程序地址为2200的延时子程序 ;R0加1 ;R3加1 ;R2减1

;R2不为0跳转到2006H

(2006) STRR

(3)延时子程序

从2200H单元开始输入延时子程序: (2200) PUSH R3 MVRD R3,0001 (2203) DEC R3

JRNZ POP RET

2203 R3

(4)运行程序,查看结果

在命令提示符下输入:G 2000↙,运行主程序。使用D命令查看5000H~500FH单元中的数据。

思考问题

1、该实验中使用的两个E2PROM芯片是位扩展还是字扩展?说明原因。

2、分析2000H单元中的E2PROM写入程序段的功能,与D命令的查看结果对比,思考原因,并改正程序使程序段运行结果正确。

实验注意事项

1、实验中,每次要改动芯片连接时,应先断电再进行。

2、实验完成后,取下扩展芯片,将FPGA下方标有“/MWR”“RD”的插针改成右边两个短接;标有“TEC”“OE”“GND”“FPGA”的四个插针中间垂直的两个短接。

3、实验过程中,不要随意改动其他芯片的位置或连接。

实验报告要求

本次实验需完成实验报告一份,本次实验报告内容写出从实验步骤2开始写,即只写E2PROM的扩展和验证即可。

实验四 微程序控制器实验

实验目的

1、深入理解微程序控制器的功能和组成结构;

2、学习教学计算机各类指令的指令格式、寻址方式及执行流程; 3、学习微程序控制器的设计过程和相关技术。

实验内容

1、分析基本指令的执行流程,在教学机上验证其对应的微指令;

2、设计几条指令的功能、格式和指令流程,并在教学计算机上进行测试。

实验要求

1、实验之前,认真准备,对于该实验的基本原理、微指令格式、以及相关机器指令的微程序等内容预先做好分析和设计;

2、实验过程中,应认真进行实验操作,仔细思考实验有关内容,把难点内容通过实验理解清楚,争取最好的实验效果;

3、实验之后,应认真思考,写出实验总结,包括实验中遇到的主要问题和分析、解决方法。

实验学时

4学时

实验原理

1、TEC-XP教学机的控制器基本原理

TEX-XP教学机中包含组合控制逻辑和微程序控制逻辑两种不同结构的控制器。本实验中使用的是微程序控制器,与微程序控制器相关的机器结构如图4-1所示。控制器中使用程序计数器PC跟踪机器指令的执行,使用PC中的内容访存获取机器指令,得到的机器指令送入控制器中的指令寄存器IR暂存,并由微程序控制器分析执行,执行过程中的所有控制信号均由微程序控制器中的微命令寄存器μIR发出。

图4-1 TEC-XP教学机的基本结构

TEC-XP教学机的微程序控制器详细内部结构如图4-2所示。该控制器中包含指令寄存器IR(存放当前执行的指令)、地址映射部件(确定不同指令对应的微程序入口地址)、微程序定序器Am2910(根据微指令中的下址字段和判断测试条件,产生下一条微指令的地址)、条件判定线路(用于微程序流向控制)、控制存储器CM(包含所有的微指令)、微指令寄存器μIR(存放当前微指令的操作控制字段)等部件。

图4-2 微程序控制器内部结构

微程序控制器的工作过程是:对于指令寄存器IR中的机器指令,由地址映射部件产生该指令所对应微程序的入口地址,通过Am2910送给控制存储器。取出的一条微指令送入微指令寄存器,其中的微命令字段用于发出控制信号,控制各部件的执行,下址字段与条件判定线路的各测试信号一起送给Am2910,由其确定下条微指令的地址,继续执行。

2、地址映射部件

地址映射部件,即微指令地址映射部件,它是由一片EPROM构成的,一般称为MAPROM。指令寄存器IR将其中的高8位指令操作码送给MAPROM,MAPROM根据操作码与微地址之间的映射关系,给出该指令对应微程序的入口地址。

TEC-XP教学机中的指令操作码与微地址之间的映射关系如附录表4-1所示。

2

3、TEC-XP教学机的微指令格式

TEC-XP教学机的微指令共48位,由16位的下址字段和32位的操作控制字段形成,其格式如图4-3所示。

图4-3 TEC-XP教学机的微指令格式

(1)下址字段

a) 8位的微下址

用于给出下一条将要执行的微指令的地址。微程序顺序执行,即把已增1后的微指令地址作为下地址

b) 4位的测试控制码CI3~0

用于决定微程序中的微指令寻址方式(顺序寻址、跳跃寻址)。本实验中只使用到

0000(初始化,使微下址=0)、0010(指令功能分支,做MAPROM映射)、0011(条件转移,由SCC决定是否转移)、1110(顺序寻址,将当前微地址加1作为微下址)这四个命令码。

c) 4位的转移条件编码SCC3~0

当CI3~0=0011时,由这四位编码决定转移判断测试的条件,若选中条件满足,则

使用微下址寻址下一条微指令,否则做顺序寻址,同CI3~0=1110。

下址字段的这3部分控制信号与形成微地址的关系详如附录表4-2所示。

(2)操作控制字段 a) MIQ、REQ、WE

这3位控制信号用于对存储器或I/O接口进行读写操作时的控制。具体定义如附录表4-3所示。

b) I8-I6、I5-I3、I2-I0、A口和B口、SST2-0:具体定义参考实验二。 c) SSH、SCI1-0:本实验中控制方式如附录表4-3所示。

d) DC1

用于选择把哪一组数据发送到CPU的内部总线(IB)上。在微指令执行过程中,若不使用内部总线,则通常将其设置为000,可认为是无效状态。 e) DC2

用于控制数据接收及相关的内部功能。

DC1和DC2的控制方式如附录表4-4所示。

4、控制存储器

控制存储器字长48位,用来存放TEC-XP教学机的所有微指令。硬件实现时,是使用两片EEPROM芯片(58C64)存放16位下地址字段信息,而32位操作控制字段信息存放在MACH器件内。

每次读控制存储器时,从这三个芯片中读出一条微指令。48位的微指令寄存器也分为两段,即16位的下地址信息,和32位的微命令信息。

5、A、B、C、D组指令执行流程

TEC-XP教学计算机中,按照每条指令的功能和实际的执行步骤,将指令分成了A、B、C、D共4组,每条指令的所属组详见具体的指令描述。

A组中的指令执行时,一般只是完成通用寄存器间的数据运算或传送,在取指后可一步完成。

B组中的指令,一般需要完成一次内存或I/O读、写操作,在取指后可两步完成:第一步把要使用的地址传送到地址寄存器AR中,第二步执行内存或I/O读写操作。

C组中的指令,在取指后可三步完成:其中CALR在用两步读写内存后,第三步执行寄存器间的数据传递;而其它指令在第一步置地址寄存器ARH、ARL,第二步读内存(即取地址操作数)、计算内存地址、置地址寄存器ARH、ARL,第三步读、写内存。

D组中的指令,完成两次读、写内存操作,在取指之后可四步完成。

TEC-XP教学机的基本指令、扩展指令执行流程分别由附录中图4-4和4-5给出。

6、TEC-XP教学机的数据通路与微命令的关系

微指令的操作控制字段直接用于控制TEC-XP教学机中的各个执行部件,顺序控制字段分别送微程序控制器中的微地址寄存器和转移控制逻辑,用于产生微下址,寻址微指令。图4-4中给出了微指令中的各个字段与TEC-XP教学机数据通路的对应关系,可帮助理解微指令的应用。

图4-4 TEC-XP教学机的数据通路与微命令

实验步骤

请根据每个步骤的详细要求,完成本实验内容。

1、设定工作方式

接通TEC-XP教学机的电源,将功能开关拨为11010,即设为单步、手动执行指令,使用微程序控制器,联机操作。

2、验证A组基本指令——加法指令ADD R0,R1的微程序

根据如下所示的ADD指令格式,可得到指令ADD R0 , R1的机器代码为00000000 00000001,其中高8位为ADD指令的操作码(详见代码表4-1),接下来的两个4位分别对应R0和R1寄存器。

先按下RESET按键,复位系统,然后通过16位的数据开关SW拨入指令代码,再按下RESET按键,此时指示灯Microp亮,其它灯全灭。

注意:在本实验中,选择的是微程序控制器,Microp指示灯会一直点亮。

由附录图4-5所示的基本指令流程可知,加法指令ADD R0 , R1的整个指令周期包含6

个CPU周期,其中前3个CPU周期是取指阶段,所有指令都是一样的,第4个CPU周期用于指令操作码的地址映射,第5个CPU周期完成加法指令的功能,第6个CPU周期用于判断是否需要执行中断周期,从而决定该加法指令执行结束后的流向。该加法指令的微程序如表4-6所示。

在完成以上设置后,接下来每次按下START按键,控制器就会执行一条微指令,请在实验前看懂以下微指令,在实验中验证每条微指令,并记录每条微指令执行时微地址、微下址指示灯的状态。

表4-6 加法指令ADD R0 , R1的微程序

微地操作功能 址 00H 01H 02H 03H 04H 30H 0?PC下址 CI3~0 SCC3MRW ~0 I2~0 I8~3 001 011 001 011 010 000 000 001 000 000 001 000 001 011 000 111 000 000 B口 A口 SST SSH\\SCI DCDC2 1 111 000 011 00001 000 000 000 0 000 000 000 011 、00H 1110 0000 100 0101 0101 000 001 0101 0101 000 001 0000 0000 000 000 0000 0000 000 000 0000 0001 001 000 0000 0000 000 000 DI#=0 PC?AR、00H 1110 0000 100 PC+1?PC MEM?IR 00H 1110 0000 001 /MAP 00H 0010 0000 100 R0+R1?R30H 0011 0000 100 0 STR→Q、3AH 0011 0010 100 CC#=INT# (1)公操作微指令(0?PC、DI#=0)

该微指令在控制存储器中位于第一个单元,即微地址为00H,是程序运行时的初始操作。本实验中由于是脱机单步运行状态,因此每条指令执行时都需要该微指令。

该操作中的PC清零是通过运算器的PC本身相减得到的,因此这里与运算器相关的控制信号应选择I2~0=001(选择A、B锁存器输入)、I8~6=011(F?B,结果保存到B口指定寄存器)、I5~3=001(S-R,减法运算)、B口=0101(指定R5,即PC)、A口=0101(指定R5,即PC)、SST=000(标志位保持不变)、SSH SCI=001(减法运算的最低位进位Cin=1)。

该操作中不需要访存,或访问IO,因此MRW为100(无读写)。DC1无用,选择000。

本条微指令的另一个操作DI#=0,使用DC2=111,选择关中断实现。

本条微指令执行完成后应进入指令的取指周期,因此要转向执行PC?AR微指令,因此,CI应选择1110(顺序寻址),则下条微指令的地址应在本条微指令地址(00H)的基础上加1,即01H。顺序寻址方式下,SCC无效,直接写0000。 (2)送指令地址微指令(PC?AR、PC+1?PC)

本条微指令首先要做的是PC?AR的操作,这里使用A口地址指定PC,即0101,并设置I8~6=010(使A口指定内容输出到内部总线上),DC2=011(指定AR接收内部总线上的数据)。

本条微指令中要完成的PC+1?PC,仍然通过运算器做加法,加上Cin来实现,故控制信号I2~0=011(选择0、B数据),B口=0101(B口指定PC),I8~6=010(F?B,运算结果送PC),I5~3=000(加法运算),SST=000(标志位保持不变)、SSH SCI=001(增量运算中使用

最低进位位Cin提供加数)。

该操作中不需要访存,或访问IO,因此MRW为100(无读写)。DC1无用,选择000。

本条微指令将所要访问主存单元的地址送给AR,则接下来应从主存中读出机器指令字,即本条微指令之后的微指令一定是MEM?IR,因此,CI应选择1110(顺序寻址),则下条微指令的地址应在本条微指令地址(01H)的基础上加1,即02H。顺序寻址方式下,SCC无效,直接写0000。

(3)读指令字微指令(MEM?IR)

本条微指令需要做访存读取机器指令,因此运算器相关的命令可设置无效,即I2~0=000,I8~6=001,I5~3=010,A口=0000,B口=0000,SST=000(标志位保持不变)、SSH SCI=000。

访存获取的指令字应存放于指令寄存器IR中,因此,MRW=001(内存读),DC2=001(IR接收)。DC1无用,选择000。

本条微指令执行后,控制器应进行操作码的译码,做微地址映射,因此,CI应选择1110(顺序寻址),则下条微指令的地址应在本条微指令地址(02H)的基础上加1,即03H。顺序寻址方式下,SCC无效,直接写0000。

注意:以上3条微指令是适用于所有指令的取指操作的。 (4)地址映射微指令(/MAP)

本条微指令主要是由地址映射部件,根据指令操作码给出对应的指令周期微程序的入口地址,故,本条微指令中有关运算器和访存的控制信号均无效,即I2~0=000,I8~6=001,I5~3=010,A口=0000,B口=0000,SST=000(标志位保持不变),SSH SCI=000,DC1=000,DC2=000。 微地址的映射用CI的2号命令控制,即CI3~0=0010(指令功能分支),SCC3~0=0000(必转)。下址字段无效,写00H。根据地址映射表4-1可知,ADD指令的微程序入口地址为04H,故该微指令执行后,下址指示灯显示为0000 0100。 (5)加法微指令(R0+R1?R0)

本条微指令主要完成两个通用寄存器的加法运算,由实验二可知,运算器相关的控制信号为:I2~0=001(选择AB口数据),I8~6=011(F?B),I5~3=000(加法运算),A口=0001(R1作为源操作数),B口=0000(R0作为目的操作数),SST=001(运算影响标志位),SSH SCI=000(Cin=0)。

本条微指令无访存控制,因此DC1=000,DC2=000。

本条微指令执行结束时,ADD指令功能已完成,即指令的执行周期完成,按照指令周期的流程,这里需要检查系统是否有中断请求。因此,本条微指令执行结束即应转向中断判断微指令,CI3~0=0011码(条件转移),SCC3~0=0000(必转),下址字段给出中断判断微指令的地址,30H。

(6)中断判断微指令(STR→Q、CC#=INT#)

本条微指令用于判断当前系统是否有中断请求,若有,则转去处理中断(地址为3AH的微指令),否则顺序执行下一条机器指令(地址为31H的微指令)。因此,CI3~0=0011码(条件转移),所依据的条件应为SCC3~0=0010(若有中断请求时转移),下址=3AH。

在进行中断判断时,需要使用到标志位状态,因此,本条微指令需要做的另一个操作是DC1=011(将标志位送到内部总线上),用以判断中断。

3、验证B组基本指令——传送指令MVRD R0,D的微程序

指令MVRD是将立即数传送到指定寄存器的数据传送类指令,该指令是双字长双操作数指令。其指令格式如下所示,则指令MVRD R0 , D的机器代码的高16位为10001000 00000000,其中高8位为MVRD指令的操作码(详见代码表4-1),接下来的4位对应目的寄存器R0。本次实验中,只是验证指令的微程序,至于该指令所传送的数据D可采用存储单元中的随机值。

先按下RESET按键,复位系统,然后通过16位的数据开关SW拨入指令代码,再按下RESET按键,此时指示灯Microp亮,其它灯全灭。

由附录图4-5所示的基本指令流程可知,传送指令MVRD R0 , D的指令周期共包含7个CPU周期,比A组指令在执行阶段多一个CPU周期,主要用于访存获取操作数。这里MVRD的源操作数是立即数寻址方式,其值保存于指令的第二个字上,而TEC-XP教学机是16位机,在取指阶段仅读出该指令的第一个字,所以,在访存取操作数时应使用PC中的地址寻址存储单元,执行1DH的微指令。该传送指令的微程序如表4-6所示。

在完成以上设置后,接下来每次按下START按键,控制器就会执行一条微指令,请在实验前看懂以下微指令,在实验中验证每条微指令。

表4-6 传送指令MVRD R0 , D的微程序

微地操作功能 址 00H 01H 02H 03H 0?PCDI#=0 下址 CI3~0 SCC3MR~0 I2~0 I8~3 001 011 001 011 010 000 000 001 000 000 001 000 011 010 000 111 011 000 111 000 000 B口 A口 SST SSH\\SCI DCDC2 1 W 0101 0101 000 001 0101 0101 000 001 0000 0000 000 000 0000 0000 000 000 0101 0101 000 001 、00H 1110 0000 100 111 000 011 000 001 000 000 000 0 PC?AR、00H 1110 0000 100 PC+1?PC MEM?IR 00H 1110 0000 001 /MAP 00H 0010 0000 100 1DH PC?AR、1CH 0011 0000 100 PC+1?PC、CC#=0 1CH 30H MEM→30H 0011 0000 001 DR、CC#=0 STR→Q、3AH 0011 0010 100 CC#=INT# 011 000000 0000 000 000 0000 0000 000 000 000 000 000 011

在传送指令MVRD R0 , D执行过程中,前3条取指相关的微指令和最后1条中断处理微指令与ADD之前完全相同,这里只对不同的3条微指令进行介绍。 (1)地址映射微指令(/MAP)

本条微指令主要是由地址映射部件,根据指令操作码给出对应的指令周期微程序的入口地址,故,本条微指令中有关运算器和访存的控制信号均无效,即I2~0=000,I8~6=001,I5~3=010,

A口=0000,B口=0000,SST=000(标志位保持不变),SSH SCI=000,DC1=000,DC2=000。 微地址的映射用CI的2号命令控制,即CI3~0=0010(指令功能分支),SCC3~0=0000(必转)。下址字段无效,写00H。根据地址映射表4-1可知,MVRD指令的微程序入口地址为1DH,故该微指令执行后,下址指示灯显示为0001 1101。

(2)取机器指令的第二个字节微指令(PC?AR、PC+1?PC、CC#=0)

由于MVRD指令是双字指令,在取指阶段仅从主存中取得了指令中包含操作码的高字部分,这里要执行该指令时,必须获取指令的第二个字数据,即指令中的16位立即数。因此,在完成地址映射后,应执行该微指令,再次读取主存。

本条微指令的执行与取指阶段PC?AR、PC+1?PC微指令的操作控制部分完全相同,但顺序控制部分,根据指令的执行流程可知,下条微指令应将使用主存中读得的立即数给目的寄存器赋值。因此CI3~0=0011(条件转移),SCC3~0=0010(必转),所要转向的地址由下址字段给出,即1CH。

(3)访存赋值微指令(MEM→DR、CC#=0)

本条微指令是将存储单元中读得的立即数给目的寄存器赋值。这里使用运算器D+0?R操作实现,其中D为从存储单元中读出的操作数。因此,MRW=001(内存读),I2~0=111(选择外部数据D和0),I8~6=011(F?B),I5~3=000(加法),A口未用,B口=0000(指定目的寄存器R0),SST=000(标志位保持不变),SSH SCI=000(Cin=0)。

本条微指令中DC1=000(无效),DC2=000(无操作)。

本条微指令执行结束时,MVRD指令功能已完成,即指令的执行周期完成,按照指令周期的流程,这里需要检查系统是否有中断请求。因此,本条微指令执行结束即应转向中断判断微指令,CI3~0=0011码(条件转移),SCC3~0=0000(必转),下址字段给出中断判断微指令的地址,30H。

4、分析D组基本指令——子程序调用指令CALA ADR的微程序

指令CALA是将立即数传送到指定寄存器的数据传送类指令,该指令是双字长双操作数指令。其指令格式如下所示,则指令CALA ADR的机器代码的高16位为11001110 00000000,其中高8位为CALA指令的操作码(详见代码表4-1),接下来的4位对应目的寄存器R0。本次实验中,只是验证指令的微程序,至于该指令所用到的直接地址可采用存储单元中的随机值。

先按下RESET按键,复位系统,然后通过16位的数据开关SW拨入指令代码,再按下RESET按键,此时指示灯Microp亮,其它灯全灭。

由附录图4-5所示的基本指令流程可知,子程序调用指令CALA ADR的指令周期共包含9个CPU周期,执行阶段比B类指令多用2个CPU周期。CALA指令的微程序如表4-7所示。在完成以上设置后,接下来每次按下START按键,控制器就会执行一条微指令,请在实验前完成对表4-7中每条微指令的分析,在实验中验证,并分析每条微指令的具体功能。

表4-7 子程序调用指令CALA ADR的微程序

微地操作功能 址 00H 0?PC下址 CI3~0 SCC3MR~0 I2~0 I8~3 001 011 B口 A口 SST SSH\\SCI DCDC2 1 W 、00H 1110 0000 100 0101 0101 000 001 111 0001H 02H 03H 1FH 20H 21H 22H DI#=0 PC?AR、00H 1110 0000 100 PC+1?PC MEM?IR 00H 1110 0000 001 /MAP 00H 0010 0000 100 001 011 010 000 000 001 000 000 001 000 011 010 000 111 000 000 011 011 001 010 010 000 0101 0101 000 000 000 0101 0101 000 001 0000 0000 000 000 0000 0000 000 000 0101 0101 000 001 0000 0000 000 000 0100 0000 000 000 0 011 000 001 000 000 000 0 00PC?AR、00H 1110 0000 100 PC+1?PC MEM→Q 00H 1110 0000 001 SP-1→SP、 00H 1110 0000 100 SP→AR PC→30H 0011 0000 000 MEM、 Q→PC、CC#=0 011 00000 0 011 000 001 30H STR→Q、3AH 0011 0010 100 CC#=INT# 111 000 000 0000 0000 000 000 000 011 5、设计扩展指令ADC、STC、LDRA、CALR的微程序

TEC-XP教学机支持动态微程序设计,即允许用户把自己设计的微程序写入控制存储器中,当扩展指令需要执行时,直接从控制存储器中读取对应的微指令执行即可。但写控制存储器时,需要用到硬件描述语言VHDL,故在本次实验中,对于扩展实验直接采用出厂已设计好的扩展指令进行验证。

扩展指令ADC、STC、LDRA、CALR的执行周期相关微指令如表4-8所示,请在实验时以单步方式进行验证。

表4-8 若干扩展指令的执行周期微程序

指令 微地操作功下址 能 址 CI3~0 SCC3MR~0 I2~0 I8~3 001 011 000 B口 A口 SST SSH\\SCI DCDC2 1 W ADC 50H DR+SR30H 0011 0000 100 +CF?DR STC 57H 1?CF LDRA 5BH PC?AR PC+1?PC 5CH MEM?1CAR H CALR P 0011 0000 001 30H 0011 0000 100 00H 1110 0000 100 0000 0000 001 010 000 000 000 0 000 001 000 011 010 000 0000 0000 100 000 0101 0101 000 001 000 011 00111 001 000 011 011 001 0000 0000 000 000 0100 0000 000 000 011 000 011 000 64H SP-1?S00H 1110 0000 100 SP?AR 65H PC?M00H 1110 0000 000 EM 66H SR?PC 30H 0011 0000 100

100 001 000 100 011 000 0000 0101 000 000 0101 0000 000 000 000 000 001 000 6、测试扩展指令

扩展指令在使用时与基本指令不同,基本指令可以在监控环境下使用汇编命令A以汇编指令格式输入存储单元中,而扩展指令只能使用存储单元修改命令E以机器指令的形式写入存储单元中。相关扩展指令的操作码编码见表4-1。 (1)设置功能开关

测试扩展指令之前,先将TEC-XP的功能开关设置为00010,即连续运行程序、采用微程序控制器、联机、16位机。运行“D:\\大板可编程器件内容\\”路径下的PCEC16.EXE文件,进入TEC-XP的监控环境。 (2)测试STC、ADC指令

①将如下测试程序段输入到主存2000H开始的存储区域中。

MVRD R0 , 0101 MVRD R1 , 1010 *STC

*ADC R0 , R1

RET

注意:带*号的指令为扩展指令,只能使用E命令写入,请先对照指令的操作码编码表4-1和指令格式写出对应指令的机器代码。

②使用如下格式的G命令连续运行该程序段:

G 2000↙

③使用如下格式的R命令察看寄存器的内容: R↙ 可观察到运行结果应为R0=1112,R1=1010。

(3)测试CALR 指令

对CALR指令的测试需要设计一个有读写内存和子程序调用指令的程序。下面使用一个功能是读出内存中的字符,将其显示到显示器的屏幕上,转换为小写字母后再写回存储器原存储区域的程序进行测试。

①从地址2080H开始输入下列主程序段:

MVRD R3 , 6 MVRD LDRR MVRD *CALR DEC

R2 , 20F0 R0 , [R2] R8 , 2100 R8 R3

JRZ 208C

INC R2 JR 2084 RET

②从地址2100H开始输入下列子程序段:

OUT ADD STRR IN SHR JRNC

80 R0 , R1 [R2] , R0 81 R0 2105

MVRD R1 , 20

RET

③使用E命令将‘A’~‘F’这6个字符送入到存储单元20F0H~20F5H中。 ④使用如下格式的G命令连续运行2080H中的程序段: G 2080↙ 屏幕显示运行结果为:

ABCDEF 56

⑤使用如下格式的D命令,查看20F0H~20F5H单元中的内容: D 20F0↙ 屏幕上显示查看结果应为:

0061 0062 0063 0064 0065 0066

(4)测试指令LDRA

编写一个使用LDRA指令将存储单元2100H和2101H中的内容通过R0输出的程序段,测试扩展指令LDRA的功能。

①从地址2000H开始输入下列程序段:

*LDRA R0 , [2100] OUT 80 IN SHR

81 R0

JRNC 2003

*LDRA R0 , [2101]

OUT 80 RET

②使用E命令将要显示的两个字符“A”、“B”写入存储单元2100H和2101H中。 ③在如下格式的G命令,连续运行以上程序段: G 2000↙ 屏幕上将会显示预设置字符‘A’、‘B’。

实验报告要求

本次实验需完成实验报告一份,本次实验报告内容写出以下两个内容:

1、D组基本指令——程序调用指令CALA的微程序分析; 2、扩展指令LDRA的设计和测试。

附录

表4-1 指令机器编码和微程序入口地址对应表

基 本 指 令 指令 ADD DR , SR SUB DR , SR AND DR , SR OR DR , SR XOR DR , SR CMP DR , SR TEST DR , SR MVRR DR , SR INC DR DEC DR SHL DR SHR DR JRC OFFSET JRNC OFFSET JRZ OFFSET JRNZ OFFSET JR OFFSET IN PORT OUT PORT PSHF PUSH DR POP DR POPF STRR [DR] , SR LORR DR , [SR] MVRD DR , DATA JMPA ADR CALA ADR RET 操作码编码 0000 0000 0000 0001 0000 0010 0000 0110 0000 0100 0000 0011 0000 0101 0000 0111 0000 1001 0000 1000 0000 1010 0000 1011 0100 0100 0100 0101 0100 0110 0100 0111 0100 0001 1000 0010 1000 0110 1000 0100 1000 0101 1000 0111 1000 1100 1000 0011 1000 0001 1000 1000 1000 0000 1100 1110 1000 1110 0010 0000 0010 0001 0010 1101 0010 1100 0010 1010 0010 1011 0110 1100 0110 1101 微程序入口地址 04H 05H 06H 07H 08H 09H 0AH 0BH 0CH 0DH 0EH 0FH 10H 10H 10H 10H 11H 12H 12H 15H 15H 17H 17H 19H 1BH 1DH 1EH 1FH 23H 50H 51H 52H 53H 54H 55H 56H 57H 扩 展 ADC DR , SR SBB DR , SR NOT DR ASR DR RCL DR RCR DR CLC STC 指 令 EI DI JMPR SR LDRA DR , [ADR] LDRX DR , OFFSET[SR] STRA [ADR] , SR STRX DR , OFFSET[SR] CALR SR IRET JRS OFFSET JRNS OFFSET 0110 1110 0110 1111 0110 0000 1110 0100 1110 0101 1110 0111 1110 0110 1110 0000 1110 1111 0110 0100 0110 0101 58H 59H 5AH 5BH 5DH 5FH 61H 64H 67H 69H 69H

表4-2 微指令中的下址确定

CI3~0 0000 0010 SCC3~0 0000(无效) 0000(无效) 0000 0010 0100 0101 0110 0111 判断条件 MAP映射 必转 有中断请求时转移 JRC、JRNC、JRZ、JRNZ指令测试 JRS、JRNS指令测试 IN指令测试 入出栈指令测试 微下址 00H 映射获得 微下址字段值 微下址字段值/顺序寻址 微下址字段值/顺序寻址 微下址字段值/顺序寻址 微下址字段值/顺序寻址 微下址字段值/顺序寻址 顺序寻址 0011 1110 0000(无效)

表4-3 MEW信号功能 表4-4 SSH和SCI控制信号

表4-5 DC1和DC2控制方式

图4-5 基本指令流程图

图4-6 扩展指令流程

图4-7 微指令表

注:该表中的微指令为56位的,只需要将每条微指令的MRW、I2~0、I8~6、I5~3、SST、SSH、DC2、DC1这8个字段的首位0除去即为48位的微指令。

实验五 TEC-XP汇编程序设计

实验目的

1、 熟悉和理解查询方式的数据传送过程;

2、 学习TEC-XP教学实验系统汇编程序设计方法。

实验内容

1、 编写指定功能的汇编语言程序,并调试通过。

实验要求

使用教学机前,熟悉查询方式的数据传送原理和TEC-XP教学机的指令系统。

实验学时

2学时

实验原理

本次实验是将PC的键盘和显示器作为TEC-XP教学机的外设,采用程序查询方式进行数据的输入输出操作。

TEC-XP教学机串口的状态寄存器

TEC-XP教学机是通过串口(可编程串行接口8251A)与PC连接的,在联机操作中,PC机对教学机的访问是通过对其数据端口和控制状态端口来完成的。TEC-XP教学机的COM1口(左侧)的数据端口地址为80H,控制与状态口地址为81H;COM2(右侧)的数据端口地址为82H,控制与状态口地址为83H。

TEC-XP教学机的状态字格式如下所示。 ?? D7 ?? ?? D2 ——就绪;0——未就绪)。

RXRDY D1 TXRDY D0 其中,TxRDY为发送就绪位(1——就绪;0——未就绪),RxRDY为接收就绪位(1

注意:当教学机与PC要传送数据时,必须先查询相应的收发状态位。

程序查询方式的数据传送

程序查询方式的数据传送的基本过程是:CPU传送数据之前先检查外设的状态,若没有准备好,则继续查询等待,直至外设就绪即进行数据传送。

在TEC-XP教学机上,所要查询的是与PC连接的TEC-XP的串口状态字。由于本实验室中的TEC-XP教学机所用的都是串口1,则其状态端口地址均为81。 (1)TEC-XP教学机接收输入数据时

当TEC-XP教学机需要从键盘上接收输入数据时,需要检测所读状态字的次低位RXRDY状态。由于读入数据的前提是键盘按键被按下,所以执行IN 80指令(从串口1的数据端口中读取数据)时,必须确认输入数据已到达接口中。因此,IN 80指令总是需要查询等待至RXRDY状态位就绪才可执行。 (2)TEC-XP教学机输出显示数据时

当TEC-XP教学机需要向显示器上输出显示数据时,需要检测所读状态字的最低位TXRDY状态。若单个数据输出时,可直接使用OUT 80指令,从串口1的数据端口中输出数据,因此,可不必进行状态检测。但若要连续输出多个数据时,为保证每一个数据输出的都能被显示器接收到,则必须要查询等待TXRDY状态位就绪才可执行OUT 80指令,以免后一个数据将前一个还没来得及输出的数据覆盖,而导致数据丢失。

实验步骤

1、完成TEC-XP教学机与PC机的联机操作

汇编实验中的程序执行控制由组合逻辑控制器实现,因此,功能开关状态设定为00110。

2、输入给定的汇编程序,连续执行,并观察结果

以下程序段完成功能为:采用程序查询方式,从PC机的键盘接收一个字符至TEC-XP教学机,并将接收到的字符输出显示至PC机的屏幕上。

2000: IN 81 ;从串行接口的状态端口读入状态字,保存于R0的低8位 2001: SHR R0

2002: SHR R0 ;将状态字的次低位RXRDY移出至标志位C上

2003: JRNC 2000 ;若接收未就绪,即C=0,则跳转(查询等待) 2004: IN 80 ;若接收就需,即C=1,则读入输入的字符至R0的低8位 2005: OUT 80 ;将读入字符输出至PC机的屏幕显示 2006: RET ↙ 2007: ↙

在监控状态下输入程序的注意事项:

(1)地址使用用户区地址,采用绝对地址形式。 (2)所有数字默认采用16进制,后面不加H。

(3)程序的最后一个语句为RET,若无该指令,则程序无法结束。

3、试将以上程序段中的OUT 80指令删除,连续执行程序,观察与之前结果的区别。

注意:这里删除OUT 80指令,实际上是在2005单元上写入RET指令,用RET指令取代OUT 80指令。

4、试编写完成以下功能的汇编程序,并在TEC-XP上运行成功。

(1)设计一个小程序,用计数值控制在显示器上输出显示‘0’到‘9’十个数字符。 提示:假设用R2存储字符个数,R0放第一个字符“0”,输出一个字符则R2减1,完成输出后R0加1,以准备下一个字符。

(2)从键盘上连续输入多个‘0’~‘9’之间的数字符,并在屏幕上显示,遇到非数字字符结束输入。

思考:本程序中是否需要判别串行口输出完成否?为什么?

(3)计算1到10的累加和。

(4)设计一个循环程序,将内存2080H起始的10个字符依次显示到屏幕上,并将其转化为小写字母再写回原存储区域。要求:使用子程序完成大小写字母的转换。

实验报告要求

本次实验需完成实验报告一份,本次实验报告内容只写编写汇编程序的第(2)小题。

实验六 中断实验

实验目的

1、加深理解计算机系统中断工作的原理及处理过程。 2、学习和掌握中断产生、中断响应、中断处理等技术。

实验内容

编写主程序和三个中断源的中断服务程序,在主程序执行过程中,按下按键产生中断请求,观察中断服务和中断嵌套的现象。

主程序的功能:在屏幕上循环显示数字字符“6”,并可随时接受中断请求;

中断服务程序的功能:进入中断服务程序显示字符串“BIn”,其中n是与中断源优先级相对应的数字字符“1/2/3”,等待按键,直到有任一按键按下,显示字符串“EIn”后退出中断。

实验要求

1、实验前做好预习,理解TEC-XP教学机的中断实现原理;

2、熟悉TEC-XP教学机的指令系统,能够编写完成中断功能的汇编程序。

实验学时

4学时,其中1~7步2学时,第8步2学时,请在实验前提前预习和准备,以保证实验效果。

实验原理

TEC-XP教学机中提供给用的外部中断源有三个,由教学机面板右下角的三个无锁按键作为其硬件中断源,从右到左依次简称为P1、P2、P3中断源。TEC-XP在响应这三个中断源的中断请求时,采用的是向量地址转移法,即中断源的请求可通过硬件电路产生一个向量地址,在该地址中存放一条转移指令,执行该指令即可转入对应的中断服务程序。

P1、P2、P3的中断向量地址由TEC-XP的内部结构确定,分别为2420H、2430H和2440H,用户中断使用时,应在对应地址中写入转移指令,从而转向用户自定义的中断服务程序。

实验步骤

1、相关扩展指令的微程序验证

本实验中使用到开中断、关中断、中断返回等扩展指令,做具体中断实验之前,先进行

这些指令微程序的分析和验证。

该步骤中应将功能开关拨为11010,即设为单步、手动执行指令,使用微程序控制器,联机操作。

表6-1 若干扩展指令的执行周期微程序

指令 微地址 操作功能 EI DI 58H 59H EI DI SP?AR SP+1?SP 68H MEM?STR 23H 0011 CC# INTOLD# 0000 001 000 001 000 0000 0000 010 000 100 000 下址 CI3~0 30H 0011 30H 0011 00H 1110 SCC3~0 MRW I2~0 I8~3 0000 0000 0000 100 100 100 B口 A口 SST SSH\\SCI DC2 DC1 110 000 111 000 011 000 000 001 000 0000 0000 000 000 001 000 0000 0000 000 011 010 000 0100 0100 000 000 000 001 IRET 67H

注意:以上扩展指令若在程序段中使用,在监控状态下必须用E命令写入机器指令代码,而不能使用A命令写入汇编指令。

2、设定工作方式

中断实验中的程序执行控制由微程序控制器实现,因此,功能开关状态设定为00010,即联机方式下,采用微程序控制器连续运行程序。

3、编写显示子程序

本实验中需要通过中断服务程序中的字符显示来查看中断执行情况,字符显示时仍然采用程序查询方式。因此,将各程序段中所需的显示代码作为单独子程序。

该显示子程序保存于2200H单元,代码如下: 2200: PUSH R0 ;保护待显示字符所在的寄存器R0

2201: 2202: 2203: 2204: 2205: 2206:

IN SHR JRNC POP OUT RET

81 R0 2201 R0 80

;查询接口状态,判断字符输出是否完成 ;未完成,则循环等待

;显示完成,则恢复寄存器,R0出栈 ;输出R0的值

4、编写中断服务程序

系统中三个中断源,分别需要编写三段中断服务程序,本实验只需观察各中断的执行效果,因此三段中断服务程序功能为:在屏幕上显示连续的15个数字字符“1”、“2”、“3”,显示完成后中断返回。

由于三段中断服务程序功能一致,只是显示的具体字符不同,这里可以将三段中断服务程序的功能部分使用同一段代码完成,各中断请求时转入对应的入口位置,进行参数——显示字符的设置。

P1中断服务程序段入口为2420H,代码如下: 2420: PUSH R0 ;R0进栈

2421: 2422:

PUSH R3 MVRD R3 , 31

;R3进栈

;将显示字符‘1’的ASCII 码送寄存器R3

2424: JR 2450

P2中断服务程序段入口为2430H,代码如下: 2430: PUSH R0 ;R0 进栈 2431: PUSH R3 ;R3 进栈 2432: MVRD R3 , 32 ;将字符‘2’的ASCII 码送寄存器R3 2434: JR 2450

P3中断服务程序段入口为2440H,代码如下:

2440: 2441: 2442:

PUSH PUSH

R0 R3

;R0 进栈 ;R3 进栈

;将字符‘3’的ASCII 码送寄存器R3

MVRD R3 , 33

2444: JR 2450

以上三段代码在完成入口参数设置后,均转入2450H单元中执行,该地址中保存中断服务程序的功能代码,具体如下:

2450: *EI

2451: 2453: 2455: 2457: 2459: 245A: 245C: 245D: 245E: 245F: 2460: 2461: 2463: 2465: 2467: 2469: 246A: 246C: 246D: 246E:

MVRD R0 , 42 CALA 2200 MVRD R0 , 49 CALA 2200 MVRR R0 , R3 CALA IN SHR SHR JRNC IN

2200 81 R0 R0 245C 80

;开中断(指令编码:6E00)

;将字符“B”赋值给R0,B 即Begin 的缩写。 ;调用子程序,完成显示

;将字符“I”赋值给R0,Interrupt 的缩写。 ;调用子程序,完成显示

;将要显示的字符——R3的内容送R0 ;调用子程序,完成显示 ;判键盘上是否按了一个键 ;即串口是否有输入字符

;若没有,等待

;输入字符到R0,实际读入该字符没有用处 ;将字符“E”赋值给R0,E即End的缩写。 ;调用子程序,完成显示

;将字符“I”赋值给R0,Interrupt 的缩写。 ;调用子程序,完成显示 ;将R3的内容送R0 ;调用子程序,完成显示 ;R3出栈

;R0出栈

;中断返回(指令编码:EF00)

MVRD R0 , 0045 CALA 2200 MVRD R0 , 0049 CALA 2200 MVRR R0 , R3 CALA POP POP *IRET

2200 R3 R0

5、填写中断向量

TEC-XP教学机采用向量地址转移法来实现中断的响应,即响应中断时,由硬件产生一个向量地址,该向量地址中保存一条可以转向对应中断服务程序的转移指令,CPU通过执行该转移指令转入中断服务程序。

根据系统的硬件连接,P1、P2、P3的中断向量地址分别为2404H、2408H和240CH,这三个地址中应写入以下三条指令:

2404: 2408: 240C:

JR JR JR

2420 2430 2440

;跳转到一级中断服务程序 ;跳转到二级中断服务程序 ;跳转到三级中断服务程序

6、编写主程序

主程序应开中断,等待中断请求的到来,并同时循环显示字符“6”。主程序存放于2000H中,代码如下:

2000: 2001: 2003: 2005: 2007: 2008: 2009: 200A:

*EI

MVRD R0 , 0036 CALA 2200 MVRD R0 , 4000 DEC R0 JRNZ JR RET

2007 2001

;将字符‘6’的ASCII 码送寄存器R0 ;输出该字符 ;延时子程序

;跳到2001 循环执行该程序

注意:在以上代码中,转移指令中的地址均为直接地址,若程序的入口地址不同,则各转移指令中的地址都要进行相应的改动。

7、运行主程序,等待、响应中断。

在监控状态命令行,使用G命令执行主程序,具体命令如下: G 2000↙ (1)无中断请求

在没有任何中断请求时,主程序运行结果是:在屏幕上连续显示字符“6”。 (2)单级中断

主程序运行过程中,按下P1按键,则进入P1的中断服务程序,屏幕上会中断字符“6”的显示,显示字符串“BI1”,然后等待按键,屏幕上状态无变化。键入任一按键,屏幕上显示字符串“EI1”,返回中断,继续执行主程序,循环显示字符“6”。

再次提交P2、P3的中断请求,查看结果。 (3)中断嵌套

主程序运行过程中,按下P1按键,则进入P1的中断服务程序,屏幕上会中断字符“6”的显示,显示字符串“BI1”,然后等待按键,屏幕上状态无变化。

此时,按下P2按键,则中断P1的服务程序,执行P2的中断服务程序,屏幕上显示字符串“BI2”,等待按键。再按下P3按键,再次发生中断嵌套,屏幕上显示字符串“BI3”,等待按键。

8、更改主程序和中断服务程序功能

尝试修改主程序和中断服务程序代码,主程序等待中断时循环显示字符“M”,各级中断服务程序只循环显示16个字符“1、2、3”即产生中断返回。 完成以上程序修改后,试观察单级中断和中断嵌套的现象。

思考问题

1、观察三级中断的嵌套现象,当执行P3中断时,连续按下键盘3次,观察到的显示效果如何?

2、更改中断服务程序后,中断嵌套现象和更改前有什么不同?

实验报告要求

本次实验需完成实验报告一份,本次实验报告内容只写实验步骤8中要求更改程序功能的主程序和中断服务程序,并回答思考问题。

本文来源:https://www.bwwdw.com/article/oywo.html

Top