1、组成与结构课程实验指导书计算机组成与结构课程实验指导书杨晨宜 南 京 工 程 学 院二一八 年 五 月实验一 教学机用法与汇编语言程序设计一实验目的1) 了解TEC-XP+机的基本结构,掌握各开关、指示灯、按键的功能,建立对TEC-XP+机的感性认识。2) 掌握TEC-XP+机与PC机联机通讯的方法。3) 了解TEC-XP+机的指令系统及寻址方式;掌握TEC-XP+机的汇编语言程序设计方法。4) 掌握TEC-XP+机汇编语言程序的调试方法;掌握常用监控命令的格式、功能及用法。二实验内容1) 了解TEC-XP+机的基本结构,熟悉各开关、指示灯、按键的功能。2) 完成TEC-XP+机与PC机的联机
2、通讯。3) 调试几个汇编语言源程序,修改错误直至获得正确运行结果。4) 记录运行结果,并读懂实验程序。三预习内容TEC-XP+机概述本课程采用的实验系统是由清华大学计算机系研制的TEC-XP+计算机组成原理教学机系统。TEC-XP+硬件系统由运算器部件、控制器部件、内存储器系统和串并行接口线路组成;此外还设置了辅助电路和扩展电路两个辅助部分。1)运算器部件运算器部件选用了4片Am2901芯片实现的。运算器接收教学机内部总线IB送来的16位数据,其运算结果可以直接送到地址寄存器AR中,或者经2个8位的开关门电路送到内部总线IB。运算结果的标志位信息送到标志位寄存器FLAG,FLAG的输出可以经过
3、一个8位的开关门送到内部总线IB。2)控制器部件本系统同时实现了微程序和组合逻辑两种控制器,通过一个拨动开关完成两种控制器之间的切换。两种控制器主要线路都集中在一片高集成度MACH器件中实现。除MACH芯片之外,还使用了1片微程序定序器Am2910芯片,2片8位的寄存器用作指令寄存器IR,1片传送IR低位字节内容到内部总线IB的开关门电路。指令寄存器IR接收从内存储器读出并传送到内部总线IB的指令,其全部16位输出送到MACH芯片的输入引脚,其低8位内容还要经一个开关门送到内部总线IB。在设计两种控制器的过程中,为了更好地兼顾两种控制器设计方案,把它们提供给计算机各执行部件的控制信号尽可能地统
4、一起来,微指令字中的32位微命令和组合逻辑控制器的32位控制信号完全相同。系统选用多周期CPU设计方案,指令串行执行,即下一条指令必须在当前指令完全结束后才能开始。3)内存储器系统内存储器系统选用静态存储器芯片实现,包括了只读存储区(ROM,存放监控程序等)和随机读写存储区(RAM)两部分。ROM存储区选用4片58C65(8K8b)的芯片实现,RAM存储区选用2片6116(2K8b)的芯片实现,每2个8位的芯片位扩展组成16位的内存字,6个芯片被分成3组,其地址空间分配关系是:0000H1FFFH用于第1组ROM,固化监控程序;2000H27FFH用于RAM,保存用户的程序和数据,其高端的一些
5、单元作为监控程序的数据区;第2组ROM的地址范围可以由用户选择,主要用于完成扩展内存容量的教学实验。4)I/O接口系统提供了2路串行接口(Intel 8251),以支持接入PC机作为教学计算机的仿真终端以完成输入输出操作。第1个串口的端口地址分配为80H和81H,第2个串口的端口地址可以由用户选择。作为扩展实验内容,也可以通过在一个40芯的器件插座上插上其他标准接口线路(例如:Intel 8255、Intel 8253等)并适当接线,完成常用接口线路的输入输出操作。5)单总线结构数据总线被划分成内部总线IB(面向CPU)和外部总线DB(面向存储器和串行接口)两部分,IB和DB之间通过2片8位的
6、双向三态门电路连接在一起。3组存储器芯片的数据输入输出引脚可以直接连接在一起,接至16位的数据总线DB上,串行接口芯片的8位数据输入输出引脚只与数据总线DB的低8位(DB7DB0)相连接。地址总线的构成比较特殊,仅地址寄存器AR一个来源,AR又只接收ALU一路输入。内存储器和接口电路的地址都来自于地址总线AB(地址寄存器AR的输出),地址总线的最高3位送到1片3:8译码器,地址总线的低位字节中的高4位(规定最高一位必定为1)送到另外1片3:8译码器,分别产生存储器芯片的8个片选信号和接口电路的8个片选信号。控制总线提供内存和串口的读写命令,是把控制器提供的3位控制信号送1片双2:4译码器得到的
7、,以决定有无内存或接口读写,若有,是内存和还是接口工作,执行的是读还是写操作。内存和CPU选用同步方式运行,串行接口和CPU选用状态查询方式工作,8位数据并行传送。6)功能部件的运行环境和相关功能的执行过程运算器部件中的ALU可以对两路输入数据A和B执行3种算术或5种逻辑运算功能,其两路输入可来自芯片内部的寄存器组送出来的数据(是由指令寄存器IR的两个寄存器编号选定的寄存器的内容,还设置有锁存线路),或来自芯片外的内部总线IB的数据,其运算结果可以在芯片内部被直接写入寄存器组,或送到芯片外被直接连接到地址寄存器AR、或经过支持三态逻辑的开关门送到内部总线IB。ALU运算产生的4个标志位的值被保
8、存进芯片外部的Flag寄存器。运算器部件中的寄存器组暂存用于ALU运算的数据和运算的中间结果。控制器部件将依据指令内容和指令执行步骤信息来提供管理计算机各个部件运行所必需的控制信号,指令寄存器IR接收从内存储器读出来的指令内容,其输出被送到MACH芯片的输入引脚,由MACH(也包括Am2910芯片,图中未画)产生指令执行步骤信号,并为各个部件提供每一个执行步骤要用到的全部控制信号。指令寄存器低位字节的内容可以经过带三态逻辑的开关门送到内部总线,用作为运算器部件的外部输入数据D的一个来源。内存储器用于保存运行中的程序和数据,可读可写。读写操作的第一步是为其提供内存单元的地址,即把ALU的输出内容
9、写进地址寄存器AR,第二步是执行读或者写操作。为读操作时,若读出的是指令则经过数据总线DB和内部总线IB写进指令寄存器IR,若读出的是数据应经过数据总线DB和内部总线IB、经过运算器的D输入引脚写到运算器寄存器组中一个寄存器。这个寄存器由指令字中的目的寄存器字段指定。为写操作时,把由指令字的一个字段指定的寄存器组中的一个寄存器的内容经内部总线IB和数据总线DB写进存储器的一个存储单元。串行接口用于执行数据的输入输出操作。输入输出操作的第一步是为接口芯片提供入出端口地址,即把指令寄存器低位字节的内容(IO端口地址)经过内部总线和运算器部件写进地址寄存器AR,第二步是执行输入或者输出操作,若执行输
10、入指令IN,则应从接口芯片读出一个8位的数据并经过数据总线DB和内部总线IB写进寄存器组中的R0寄存器,若执行输出指令OUT,则需要把寄存器组中的R0寄存器的内容经过内部总线IB和数据总线DB写入接口芯片。接口芯片与输入输出设备之间的数据传送是串行方式进行的,其传送过程无需另外管理,由接口芯片自动完成。中断处理功能,在教学计算机系统中,提供并实现了简明、常规的中断处理能力,在支持多级的中断嵌套实验方面。四、TEC-XP+机与PC机的联机通讯1)准备一台串口工作良好的PC机;2)将TEC-XP+放在实验台上,打开实验箱的盖子,确定电源处于断开状态;3)将黑色的电源线一端接220V交流电源,另一端
11、插在TEC-XP+实验箱的电源插座里;4)取出通讯线,将通讯线的9芯插头接在TEC-XP+实验箱上的串口“COM1”或“COM2”上,另一端接到PC机的串口上;5)将TEC-XP+实验系统左下方的6个黑色的控制机器运行状态的开关置于正确的位置,在本实验中开关应置为000100(连续、内存读指令、微程序、联机、16位、MACH),控制开关的功能在开关上、下方有标识;开关拨向上方表示“1”,拨向下方表示“0”,“X”表示任意;6)打开电源(船形开关),5V电源指示灯亮。7)在PC机上运行PCEC16.EXE文件,有如下显示:8)系统默认选择串口1,用户可根据实际情况选择串口1或是串口2(这里的串口
12、指的是和 TEC-XP+教学实验系统相连的PC机的串口),按回车后出现如图界面:9)图中是系统设定的一些传输参数,建议用户不要改动,直接回车。按一下“RESET”按钮放开后再按一下“START”按钮,出现界面如图所示:10)此时表明TEC-XP+机器联机通讯正常。在提示符“”下就可接受系统提供的监控命令。附: 模拟程序使用步骤:1) 运行16位机微程序模拟程序.exe2) 导入ROM文件(ROMS文件夹下8个bin文件全选,打开)3) 导入Scc Gal文件(选ROMSScc_gal文件夹下Scc_16.ABL, 打开)4) 加载监控程序(选监控程序文件夹下TEC2000.COD,打开)5)
13、复位6) 连续执行至此,在中间部分出现我们熟悉的联机界面,在提示符“”下可以接受监控命令。7) 显示ROMS内容,即可看到控存内容和MAPROM中的内容输入微地址查找键入新的微指令按Update,该微地址单元的内容被键入的新的微指令替换输入MAPROM地址(操作码)查找键入新的微程序入口地址(在右边MAPROM下)按Update,该MAPROM单元的内容被键入的新的微程序入口地址替换8)显示输出窗口,回到接受监控命令的窗口五、预习内容监控命令的用法1)单条汇编命令A格式:AADR说明:ADR表示A命令的地址参数,用 将ADR括起来,表示ADR为任选项,当无此参数时,系统将取默认值。该规则亦适用
14、于下述各命令的说明。功能:完成单条指令汇编操作,将产生的机器指令代码放入对应的主存单元中。一段汇编语言源程序可采用A命令键入。命令名后的地址即是存放首条机器指令代码的主存单元地址。每条语句键入后按回车键,系统将完成汇编并相应修改地址值,此后可继续键入下一条汇编语句。 在应该输入汇编语句时,不给出汇编语句而直接回车,则结束 A 命令的运行过程。 若汇编中发现语法错误,系统会给出提示并显示出错地址,用户只需在该地址重新输入正确的指令即可。示例:2)反汇编命令U格式:UADR功能:从指定的(或默认的)地址反汇编15条指令,并将结果显示在屏幕上。反汇编完成之后,已将该命令的默认地址修改好。接下来再键入
15、不带参数的 U命令, 即从上一次反汇编过的最后一条语句之后继续反汇编。请注意:教学机中并不保存用A命令输入的汇编语句的源码,主存中保留的是机器指令代码,在需要检查输入的汇编语言程序时,就需要通过U命令对保存在主存中的机器指令代码程序进行反汇编,重新得到汇编语言程序并显示在屏幕上。 示例:3)执行程序命令G格式:GADR功能:从指定的(或默认的)地址连续运行程序。为了使程序执行后能正确地返回监控程序,要求每个程序的最后一条指令一定为 RET 指令。每次执行后均显示所有通用寄存器和状态寄存器的内容。示例:4)单步执行程序命令T和P格式:PADR 或 TADR功能:从指定地址(或PC中的当前地址)开
16、始单条指令方式执行用户程序。通常情况下,每执行一次T或P命令将只执行一条指令。T和P命令的区别是,T总是执行单条指令,但执行P命令时,则把每一个CALL语句连同被调用的子程序一次执行完成,其目的是在调试一些较大规模的程序时,如果子程序已经正确,重点调试的是主调用程序,则在遇到每个子程序调用语句时,CALL 语句连同被调用的子程序一次运行完成,避免反反复复地以单指令方式运行已经是正确的子程序的每一个语句。由于P和T命令是通过在程序中设置断点来实现的,而在 ROM 区不支持写入断点内容,故不能用它们来执行固化在ROM区中的监控程序,或其他的用户程序。每次执行后均显示所有通用寄存器和状态寄存器的内容
17、,并反汇编出下一条将要执行的指令。 通常情况下,在一项操作过程中,第一次运行的T或 P命令是要给出地址参数,接下来的操作,只需要给出T或P命令名即可,不必给出地址参数。 示例:5)显示/修改寄存器内容命令R格式:RREG说明:REG为一个寄存器名(R0R15),是任选参数。功能:当 R 命令不带寄存器名参数时,显示全部寄存器和状态寄存器的值,并反汇编 当前 PC 所指向的一条指令,其中状态的显示格式为:“F=8 位二进制数”,其各位的值分别 对应于 C、Z、V、S,P1、P0(中断优先级)的值,最后 2 位是00。 当 R 命令带有寄存器名参数时,是要实现修改一个寄存器内容的操作,首先显示出该
18、寄存器的现有值,若要修改这个值则打入新值并回车,不输入新的值就直接回车,该寄存器 内容将保持不变。示例:6)显示存储器内容命令D格式:DADR功能:从指定(或默认)地址开始显示主存120个存储字的内容(15行)。显示的格式:最左一列4位的16进制数字,是本行中第一个字的主存地址;接下来的 8 列是8个连续主存字的内容;最右一列是每个字节所对应的ASCII字符。 当其值不为可显示字符的 ASCII 码值时,用一个“.”字符标记。连续的D 命令,保证所显示内容前后正确的连续关系,即每次执行 D 命令之后,会将默认的地址值加上 120。示例:7)修改主存单元内容命令E格式:EADR功能:从指定(或默
19、认)地址逐字显示每个主存字的内容,并等待用户键入一个新的值存回该单元。若用户未键入新值就按了空格键,则该主存单元内容保持不变。若在键入新值后跟空格键,则新值将被写入原主存单元。空格键用于连续修改一片主存区的内容, 故接下来显示下一个主存单元的内容并等待修改。打回车键,则会结束E命令的执行过程, 若回车前打入一个新值,相应主存单元的内容也将被修改。示例:六、汇编语言程序设计及运行采用监控程序提供的单条汇编A命令进行编程。教学机启动成功后,键入:A(后跟指定主存地址,如2000),回车。然后逐条输入汇编语言源程序,最后一句应输入RET语句。系统会逐语句汇编,产生指令代码。编程可使用的主存范围是:2
20、000H25FFH,只能使用绝对地址,不支持伪指令。注意16进制后面不加后缀H。要求调试以下汇编语言源程序,修改错误直至获得正确运行结果。题1:设计程序,完成在屏幕上输出09十个数字字符。A2000MVRD R2,000A MVRD R0,0030 (2004)OUT 80 DEC R2 JRZ 200E PUSH R0 (2008)IN 81 SHR R0 JRNC 2008 POP R0 INC R0 JR 2004 (200E)RET上述指令前括号中的内容是指本指令存放在主存中的地址(不需键入)。在命令提示符“”下键入命令G2000,屏幕上显示09十个数字字符。程序中80H、81H 两端
21、口分别是教学机上串行接口8251芯片的数据端口和状态端口,对它们进行读/写能达到以下功能 :读80H端口(IN 80H),可使教学机监控程序向 PCEC 读取用户在PC机键盘上按下按键对应的ASCII码,存储到R0寄存器低8位;写80H端口(OUT 80H),可使教学机监控程序将R0的低8位值发送给 PCEC,PCEC将接收到的值作为ASCII码,将相应字符显示在PC机显示器上;读状态端口(IN 81H),可得到串行接口8251的状态字,其D0位用于指示数据是否发送就绪(D0=1发送就绪),D1位用于指示数据是否接收就绪(D1=1 接收就绪)。这里的发送和接收指教学机的发送和接收。该程序中使用
22、了立即寻址、寄存器寻址、直接寻址、相对寻址和堆栈寻址。题2:设计程序,完成从键盘输入数字字符,并在屏幕上显示。遇非数字符则结束运行程序。A 2020MVRD R2,0030 MVRD R3,0039 (2024)IN 81 SHR R0 SHR R0JRNC 2024 IN 80MVRD R1, 00FFAND R0, R1 CMP R0, R2 JRNC 2033 CMP R3, R0 JRNC 2033 OUT 80 JMPA 2024(2033)RET在命令提示符 “”下键入命令G2020,屏幕光标处等待用户键入,当键入数字字符时,屏幕上显示该字符。例如:依次键入1357902468,则
23、依次显示1357902468。当键入回车或其他非数字字符,程序退出。该程序中使用了立即寻址、寄存器寻址、直接寻址和相对寻址。题3:计算1到10的累加和。A 2040MVRD R1,0000 MVRD R2,00OAMVRD R3,0000(2046)INC R3 ;ADD R1, R3CMP R3, R2JRNZ 2046 RET 在命令提示符“”下键入命令G2040后,用R命令看R1中的累加结果。该程序中除使用立即寻址、寄存器寻址,条件转移指令采用了相对寻址。题4:设计一个完成双倍字长整数相加的程序。A2060MVRD R8,1234 MVRD R9,9678MVRD R10,6789MVR
24、D R11,8888ADD R9,R11(2069)ADC R8,R10; R8R8R10C带进位的加法RETADC R8,R10是扩展指令,系统不支持汇编指令,出现出错信息,重新键入ADD R8,R10,暂时替换它。程序输入完毕后,需要直接在主存2069H单元写入机器指令代码,该指令的机器码为:208AH。即在命令提示符下键入命令:E2069屏幕显示:2069H地址单元的原有内容008A:光标闪烁等待输入输入 208A,回车即可。在命令提示符“”下键入命令G2060后,用R命令查看放在R8、R9中的相加结果。这个程序中使用了立即寻址和寄存器寻址。题5:还是双倍字长的整数相加的功能,但两个数与
25、相加结果保存在20A0H开始的主存区中。E20A0 (写入参加相加的两个数的初值)1234 9678 6789 8888用 E命令连续修改主存单元的值时,每修改完一个,按一下空格键,系统会自动给出下一个主存单元的值,等待修改;按回车键则退出 E命令 。A2080MVRD R12,20A0LDRR R8,R12INC R12LDRR R9,R12INC R12LDRR R10,R12INC R12LDRR R11,R12ADD R9,R11ADC R8,R10;(208AH)INC R12STRR R12,R8INC R12STRR R12,R9RET在命令提示符“”下键入命令G2080运行后,
26、用D20A0命令看运行结果为:1234 9678 6789 8888 79BE 1F00。这个程序中除使用立即寻址、寄存器寻址,还多次使用了寄存器间接寻址方式。七、实验分析与思考1)注释实验程序,并指出操作数的寻址方式。(相同的寻址方式只需说明一次)2)实验程序中IN 80和OUT 80指令有何作用?写出串口1状态端口的地址,并指出状态字低2位的定义。3)解释常用监控命令:A、U、D、R、G、T、P、E。实验二 运算器实验一、实验目的1) 加深对Am2901运算器内部组成的了解,掌握四片Am2901芯片间的连接关系,以及它与有关外部逻辑电路的连接关系。2) 准确把握该运算器的控制与使用,即掌握
27、其运算与操作功能,以及正确地为其提供全部控制信号及有关数据的手段与技术。3) 初步了解运算器在计算机整机中的作用。二、实验内容1) 脱机方式下运算器的控制及运行。2) 联机方式下运算器的控制及运行。3) 设计控制信号序列,在脱机方式下实现给定程序段的功能。三、预习内容位片式运算器Am2901Am2901是4位位片式结构的运算器,多片Am2901可组织成多位运算器。1)Am2901的内部结构(1)4位的ALUALU实现8种运算功能,外部引入的I5I3三位编码完成功能选择。R、S表示ALU两个输入端数据,F为运算结果输出端数据。F=F3F2F1F0,F3为本片最高位取值。ALU的输入端R可以接收数
28、据的来源:A端口,逻辑0数据,D输入 ;ALU的输入端R可以接收数据的来源:寄存器, B端口, A端口,逻辑0数据。Am2901选用了它们可能的全部12种组合中的8种。由I2I0编码选择。(2)通用寄存器组16个4位通用寄存器R0R15为双端口读出(A端口、B端口)和单端口写入(B端口)的运行方式。A 地址(A3A2A1A0) 选择Ri (例如:A3A2A1A00011,即选择R3)并将其内容送A数据出;B 地址(B3B2B1B0)选择Ri并将其内容送B数据出;ALU 的输出F经移位寄存器(左移、直通、右移)送到B 地址(B3B2B1B0)选择的Ri中。RAM0、RAM3 为移出、移入信号,即
29、接收与发送移位数值的引线。(3)Q寄存器1个4位的Q寄存器本身具有左、右移位功能,且能接收ALU的运算结果F。Q3、Q0为移出、移入信号(接收与发送移位数值的引线)。(4)D3D0 及Y3Y0D3D0:外部送入的4位数据。Y3Y0:4位输出数据,Y3Y0来自:寄存器A端口上的输出;ALU的运算结果。Y3Y0受输出允许控制信号/OE的控制。(5)I8I6的控制功能选择向外部送出的数据是来自A还是来自ALU;选择通用寄存器组和Q寄存器如何接收数据(直送、左移、右移)。2)Am2901的引脚信号及使用举例Am2901的引脚信号如图所示。除在结构部分已知的引脚信号外,还有ALU的最低位进位输入Cn,A
30、LU的4位状态信息输出Cn+4、F、OVR、F=0000,电源Vcc,地线GND,时钟CP,以及组进位产生信号/G和组进位传递信号/P。从外部加载相应的信号,Am2901就能完成指定的功能。下面给出了几个功能实现对Am2901所需输入的信号电平(0:低电平,1:高电平),三组控制信号的选择见表格。设Vcc、GND及CP已加载。(1)D R0A口地址:不用、B口地址:0000I8I6:011I5I3: 000I2I0:111、Cn:0(2)R3+1 R3A口地址:不用、B口地址:0011I8I6:011I5I3: 000I2I0:011Cn:1(3)R1+R2 R2A口地址:0001、B口地址:
31、0010I8I6:011I5I3: 000I2I0: 001Cn:0(4)(R0+R10)Q右移 R0QA口地址:1010、B口地址:0000I8I6:100、I5I3:000I2I0:001、Cn:03)4片Am2901组间串行进位组成16位的定点运算器(1)4片的I8I6、I5I3、I2I0使用相同的控制信号;(2)4片的D3D0组成D15D0;(3)4片的Y3Y0组成Y15Y0;(4)时钟信号CLK接每片的CP;(5)4片的A、B端口地址由外部送来的两组信号提供;(6)最高片的输出Cn+4、F3、OVR可用于设置进位、结果为负、溢出状态,4片的F=0000接在一起得到结果为0的信号。(C、 S 、V、 Z )(7)运算器最低位的进位Cn可能是0、1、C标志。可
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1