1 / 39

第九章 教学计算机简介

第九章 教学计算机简介. 本章主要针对清华大学开发的 TEC - 2000 教学机进行讲解,并配有各部件实验。. 第一讲 运算器. TEC-2000 教学机系统的组成. 电 源 +5V. 计算机 终端. 微程序 控制器. 运算器. 接口实验 中断实验 内存扩展实验. 串行接口. 硬布线 控制器. 主存储器. PC 机. 按键 开关 指示灯. 实验设备. 按键: 用于启动计算机,执行 RESET 操作, 控制打入开关拨入的数据或地址, 作为中断源以产生中断请求信号。

delta
Download Presentation

第九章 教学计算机简介

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第九章 教学计算机简介 • 本章主要针对清华大学开发的TEC-2000教学机进行讲解,并配有各部件实验。

  2. 第一讲 运算器

  3. TEC-2000 教学机系统的组成 电 源 +5V 计算机 终端 微程序 控制器 运算器 接口实验 中断实验 内存扩展实验 串行接口 硬布线 控制器 主存储器 PC机 按键 开关 指示灯

  4. 实验设备

  5. 按键: 用于启动计算机,执行RESET操作, 控制打入开关拨入的数据或地址, 作为中断源以产生中断请求信号。 开关: 用于选择TEC-2000 机的运行方式, 可向机内拨入数据 和 地址等信息, 微型开关用于给出实验控制信号。 指示灯:有一百多个,同时显示实验机内的 各种数据、地址和控制信号的状态。

  6. 运算器 微程序控制器 主振 脉冲 C Z V S 微程序定序器 ALU 程序计数器 控制 存储器 PC R0 操作数 地址 R1 映射 乘商寄存器 寄存器组 指令寄存器 地址寄存器 微指令寄存器 Rn 操作码 IR AR . 下地址字段内容 用于运算器 数据总线 控制总线 地址总线 0 单元 接口 1单元 主存储器 输入设备 输出设备 n单元

  7. TEC-2000 机运算器的组成 TEC-2000 机上的运算器,16 位字长,4 片 4 位的位片结构的器件组成。 可脱离 TEC-2000 主机,单独地进行运算器部件实验,也可在主机控制下完成运算器部件实验。 位片结构是说,每个器件本身就是一个完整的运算器,只是位数较少,要组成更多位数的实用运算器要用多片共同实现 这里选用的是美国AMD公司的 Am2901芯片。

  8. 输出Y 二选一 /OE F F3 F=0000 OVR Cn+4 A L U S R 组成 算逻运算部件 16 个 累加器 乘商寄存器 Q 功能 8种运算功能 8种数据组合 8种结果处理 Cn 三选一 二选一 输入D B锁存器 A锁存器 乘商寄存器Q A口地址 Q3 Q0 B 16个 A 通用寄存器 三选一 B口地址 三选一 RAM3 RAM0

  9. Am2901芯片是一个 4位的位片结构的运算器器件,其内部组成讲解如下: F 符号位 结果为零 结果溢出 进位输出 F3 F=0000 OVR Cn+4 A L U S R Cn 第一个组成部分是算逻运算部件ALU,完成 3 种算术运算 和 5 种逻辑运算, 共计 8 种功能。 3位功能选择码 8种运算功能 000 001 010 011 100 101 110 111 R+S SR RS R∨S RS RS RS RS 其输出为 F,两路输入为 S、R, 最低位进位Cn,四个状态输出信号如图所示。

  10. 第二个组成部分 是通用寄存器组, 由16个寄存器构 成,并通过B口 与A口地址选择 被读的寄存器, B口地址还用于 指定写入寄存器。 F F3 F=0000 OVR Cn+4 A L U S R Cn B锁存器 A锁存器 通过B口地址、 A口地址读出的 数据将送到B、 A锁存器,要写 入寄存器的数据 由一个多路选择 器送来。 A口地址 B 16个 A 通用寄存器 B口地址 (写入)

  11. 第三个组成部分 是乘商寄存器Q, 它能对自己的内 容完成左右移位 功能,其输出可 以送往ALU,并 可接收ALU的输 出结果。 F F3 F=0000 OVR Cn+4 A L U S R Cn B锁存器 A锁存器 Q寄存器 A口地址 B 16个 A 通用寄存器 B口地址

  12. 一组三选一门和 另一组二选一门 用来选择送向 ALU的 R、S输 入端的数据来源 ,包括Q寄存器、 A口、 B口、外 部输入D数据的 8 种不同组合。 F F3 F=0000 OVR Cn+4 A L U S R Cn 三选一 二选一 输入D B锁存器 A锁存器 Q寄存器 A口地址 该芯片的第四个 组成部分是 5 组 多路选通门,包括 B 16个 A 通用寄存器 8种数据组合(R,S) AQ AB 0Q 0B 0A DA DQ D0 B口地址 3位数据选择码 000 001 010 011 100 101 110 111

  13. 一组三选一门 完成把ALU的 输出、或左移 一位、或右移 一位的值送往 通用寄存器组 ,最高、最低 位移位信号有 双向入/出问题 F F3 F=0000 OVR Cn+4 A L U S R Cn 三选一 二选一 输入D 一组三选一门 完成Q寄存器 的左移一位、 或右移一位、 或接收ALU输 出值的功能, 最高、最低位 移位信号有双 向入/出问题。 B锁存器 A锁存器 Q寄存器 A口地址 Q3 Q0 B 16个 A 通用寄存器 三选一 B口地址 三选一 RAM3 RAM0

  14. 输出Y 一组二选一门, 选择把A口数据 或ALU结果送出芯片,以给出输出Y的数据,Y输出的有无还受输出使能 /OE信号的控制,仅当 /OE为低是才有Y输出 ,/OE为高,Y输出为高阻态。 二选一 /OE F F3 F=0000 OVR Cn+4 A L U S R Cn 三选一 二选一 输入D B锁存器 A锁存器 Q寄存器 A口地址 Q3 Q0 B 16个 A 通用寄存器 三选一 B口地址 三选一 RAM3 RAM0

  15. 8 种结果处理 • 3位控制码 通用寄存器 Q寄存器 Y输出 • 000 QF F • 001 F • 010 BF A • 011 BF F • 100 BF/2 QQ/2 F • 101 BF/2 F • 110 B2F Q2Q F • 111 B2F F

  16. I5~I3: 运算功能 I8~I6: 运算结果处理 I2~I0:数据来源 编码 000 001 010 011 100 101 110 111

  17. 返回 入出信号及引脚 Y3~Y0 CP OE Cy F=0 Over F3 Cin Am2901 RAM3 RAM0 Q3 Q0 A3~A0 B3~B0 I8~I6 I2~I0 I5~I3 D3~D0

  18. 返回 Am2901的操作使用 控制信号 B口 A口 I8 I7 I6 I5 I4 I3 I2 I1 I0 Cn 操作功能 R0R0+R1 0000 0001 011 000 001 0 R2R2R0 0010 0000 010 001 001 1 右移 R0R0+R1 0000 0001 101 000 001 0 / 0000 QR0 Y F 0000 000 000 100 0 R0R0R1 Y A口 0000 0001 010 100 001 0 R0R0R1 Y F 0000 0001 011 100 001 0

  19. F=0 F15 Y15~12 OVER Cy 高位 Am2901 Am2901 Am2901 Am2901 RAM15 Q15 CP A口 B口 I8~6 I5~3 I2~0 D15~12 返回 Vcc R 4 片Am2901之间的连接 Y11~8 Y3~0 Y7~4 Cin RAM0 Q0 D3~0 D11~8 D7~4

  20. 返回 入出信号及引脚 Y15~Y0(指示灯显示) 一片GAL 一片GAL SST CP OE(已接地) Cy F=0 Over F15 SCi Cin 运 算 器 部 件 4片2901 RAM15 RAM0 Q15 Q0 SSH A3~A0 B3~B0 I8~I6 I5~I3 I2~I0 2个12位的微型开关 D15~D0(开关拨数)

  21. 返回 运算器用的GAL20V8的控制信号 • GAL1:状态寄存器 GAL3:进位入、移位入 • SST C Z V S SCi 运算 Cn 运算 Cn • 000 C Z V S 00 加 0 减 1 • 001 Cy ZROV F15 01 加 1 减 0 • 010 内部总线的一位 10 加 C 减 /C • 011 1 Z V S 11 方波 方波 • 100 0 Z V S SSH 左移位 右移位 • 101 RAM0 Z V S 00 0 X 0 X • 110 RAM15 Z V S 01 C X C X • 111 Q0 Z V S 10 Q15 /F15 CyRAM0 • RAM0 Q0 RAM15 Q15

  22. 返回 16位运算器脱机实验 Y15~Y0 (用16个指示灯显示结果) 用四个指示灯显示状态 SST SCi C Z V S Cy F=0 Over F15 Cin 运 算 器 部 件 RAM15 RAM0 Q15 Q0 A3~0 I5~3 D15~D0 B3~0 SSH I8~6 I2~0 (用16个开关提供输入数据) 通过24位微型开关 提供控制信号 A口 B口 SCi SSH I8~6 I5~3 I2~0 SST

  23. 返回 16 位运算器的操作使用 SCi 控制信号 B口 A口 SST I8~6 I5~3 I2~0 Cn SSH 操作功能 R0R0+R1 0000 0001 001 011 000 001 00 / R2R2R0 0010 0000 001 010 001 001 / 01 右移 R0R0+R1 逻辑右移 00 01 0000 0001 001 101 000 001 00 与C循环右移 / 0000 QR0 Y F 0000 001 000 000 100 00 / 联合左移 R0QR0R3Q 0000 0011 001 110 001 001 01 10 / R0R0R1 Y A口 0000 0001 001 010 100 001 00

  24. 8位 4位 4位 目的寄存器 源寄存器 操 作 码 I/O 端 口 地 址 条件转移指令的偏移量 直接数 / 内存地址 / 指令中变址偏移量 第二讲 教学机指令系统 一、教学机的指令格式 单字指令仅用一个指令字。 双字指令要用两个指令字, 此时第二个指令字的内容可能是立即数、一个绝对地址或一个变址位移量。

  25. 二、指令分类 根据不同的分类标准,可以把TEC-2000 16位教学计算机的指令划分为如下几类: (1)从指令长度区分,有单字指令和双字指令。 (2) 从操作数的个数区分,有双操作数指令、单操作数指令和无操作数指令。 (3)从使用的寻址方式区分,有寄存器寻址、寄存器间址、立即数寻址、直接寻址、相对寻址等多种基本寻址方式。 (4)从指令功能区分,有算术和逻辑运算类指令、读写内存类指令、输人输出类指令、转移类指令、子程序调用和返回类指令,还有传送、移位、置进位标志和清进位标志指令。

  26. (5)按照指令的执行步骤,可以把该机的指令划分为如下4组: A组(通用寄存器之间的数据运算或传送): 基本指令:ADD、SUB、AND、OR、XOR、CMP、TEST、MVRR、DEC、INC、SHL、SHR、JR、JRC、JRNC、JRZ、JRNZ 扩展指令:ADC、SBB、RCL、RCR、ASR、N0T、CLC、STC、EI、CI、JRS、JRNS、JMPR B组(一次内存或I/0读、写操作 ): 基本指令:JMPA、LDRR、STRR、PUSH、P0P、PSHF、P0PF、MVRD、IN、0UT、RET

  27. C组(取指之后可3步完成): 扩展指令CALR、LDRA、STRA、LDRX、STRX D组(两次读、写内存操作,取指之后可4步完成): 基本指令CALA 扩展指令IRET 教学机实现了上面4组中的29条基本指令,用于支持教学机的监控程序和简单的汇编语言程序设计。 保留了其余19条扩展指令,供学生在教学实验中完成对这些指令的设计与调试。

  28. 16位教学机的指令格式,支持单字和双字指令,第1个指令字的高8位是指令操作码字段,低8位和双字指令的第2个指令字是操作数、地址字段。16位教学机的指令格式,支持单字和双字指令,第1个指令字的高8位是指令操作码字段,低8位和双字指令的第2个指令字是操作数、地址字段。 8位指令操作码(记作“IRH7←IRH0”),含义如下: (1)IRH7、IRH6用于区分指令组:0X表示A组,10表示B组,11表示C、D组;C、D组的区分还要用IRH3,IRH3=0为C组,IRH3=1为D组。 (2)IRH5用于区分基本指令和扩展指令:基本指令该位为0,扩展指令该位为1。 (3)IRH4用于简化控制器实现,暂定其值恒为0。 (4)IRH3---IRH0用于区分同一指令组中的不同指令。

  29. 三、TEC-2000 16位机基本指令系统 指令格式 汇编语句 操作数个数 CZVS 指令分组 功能说明 00000000 DRSR ADD DR,SR 2 ***** A DR←DR+SR 00000001 DRSR SUB DR,SR 2 ***** A DR←DR-SR 00000010 DRSR AND DR,SR 2 ***** A DR←DR and SR 00000011 DRSR CMP DR,SR 2 ***** A DR-SR 00000100 DRSR XOR DR,SR 2 ***** A DR←DR xor SR 00000101 DRSR TEST DR,SR 2 ***** A DR and SR 00000110 DRSR OR DR,SR 2 ***** A DR←DR or SR 00000111 DRSR MVRR DR, SR 2 • • • • A DR←SR 00001000 DR0000 DEC DR 1 ***** A DR←DR-1 00001001 DR0000 INC DR 1 ***** A DR←DR+1 00001010 DR0000 SHL DR 1 * • • • A DR,C←DR*2 00001011 DR0000 SHR DR 1 * • • • A DR,C←DR /2 01000001 OFFSET JR ADR 1 • • • • A 无条件跳转 01000100 OFFSET JRC ADR 1 • • • • A C=1 时跳转 01000101 OFFSET JRNC ADR 1 • • • • A C=0 时跳转 01000110 OFFSET JRZ ADR 1 • • • • A Z=1 时跳转 01000111 OFFSET JRNZ ADR 1 • • • • A Z=0 时跳转

  30. TEC-2000 16位机基本指令系统 指令格式 汇编语句 操作数个数 CZVS 指令分组 功能说明 10000000 0000000 JMPA ADR 1 • • • • B 无条件跳到ADR ADR(16位) 10000001 DRSR LDRR DR,[SR] 2 • • • • B DR←[SR] 10000010 I/O PORT IN I/O PORT 1 • • • • B R0←[I/O PORT] 10000011 DRSR STRR [DR],SR 2 • • • • B [DR]←SR 10000100 00000000 PSHF 0 • • • • B FLAG 入栈 10000101 0000SR PUSH SR 1 • • • • B SR 入栈 10000110 I/O PORT OUT I/O PORT 1 • • • • B [I/O PORT]←R0 10000111 DR POP DR 1 • • • • B 出栈到 DR 00001000 DR0000 MVRD DR, DATA 2 • • • • B DR←DATA DATA(16位) 10001100 00000000 POPF 1 • • • • B FLAG←出栈 10001111 00000000 RET 1 • • • • B 子程序返回 11001110 00000000 CALA ADR 1 • • • • D 调用子程序 ADR(16位)

  31. 16位机根据指令字长、操作数不同可划分为如下5种指令格式:16位机根据指令字长、操作数不同可划分为如下5种指令格式: 1.单字、无操作数指令 基本指令 PSHF; 状态标志(C、Z、V、S、Pl、P0)入栈 P0PF; 弹出栈顶数据送状态标志寄存器 RET; 子程序返回 扩展指令 CLC; 清进位标志位C=0 STC; 置进位标志位C=l EI; 开中断,置中断允许位INTE=1 DI; 关中断,置中断允许位INTE=0 IRKTl 中断返回

  32. 2.单字、单操作数指令 • 基本指令 DEC DR; DR←DR―1 INC DR; DR←DR十1 SHL DR; DR逻辑左移,最低位补0,最高位移入C SHR DR; DR逻辑右移,最高位补0,最低位移入C JR ADR; 无条件跳转到ADR,ADR=原PC值十OFFSET JRC ADR; 当C=1时,跳转到ADR,ADR=原PC值+OFFSET JRNC ADR;当C=0时,跳转到ADR,ADR=原PC值+OFFSET JRZ ADR; 当Z=1时,跳转到ADR,ADR=原PC值+OFFSET JRNZ ADR; 当Z=0时,跳转到ADR,ADR=原PC值十OFFSET IN I/O PORT; R0←[I/O PORT],从外设I/O PORT端口读人数据到R0 OUT I/O PORT;[I/O PORTl←R0,将R0中的数据写入外设I/O PORT端口 PUSH SR; SR人栈 POP DR; 弹出栈顶数据送DR

  33. 扩展指令 RCL DR; DR与C循环左移,C移人最低位,最高位移入C RCR DR; DR与C循环右移,C移人最高位,最低位移人C ASR DR; DR算术右移,最高位保持不变,最低位移人C N0T DR; DR求反,即DR←/DR JMPR SR; 无条件跳转到SR指向的地址 CALR SR; 调用SR指向的子程序 JRS ADR; 当S=l时,跳转到ADR,ADR=原PC值十0FFSET JRNS ADR;当S=0时,跳转到ADR,ADR=原PC值十0FFSET

  34. 3.单字、双操作数指令 基本指令 ADD DR,SR; DR←DR十SR SUB DR,SR; DR←DR―SR AND DR,SR; DR←DR and SR CMP DR,SR; DR―SR X0R DR,SR; DR←DR xor SR TEST DR,SR; DR and SR OR DR,SR; DR4←DR or SR MVRR DR,SR; DR←SR LDRR DR,[SR]; DR←[SR] STRR [DR],SR; [DR]←SR 扩展指令 ADC DR,SR; DR←DR十SR十C SBB DR,SR; DR←DR←SR←C

  35. 4.双字、单操作数指令 基本指令 JMPA ADR; 无条件跳转到地址ADR CALA ADR; 调用首地址为ADR的于程序 5.双字、双操作数指令 基本指令 MVRD DR,DATA; DR←DATA 扩展指令 LDRA DR,[ADR]; DR←[ADR] STRA [ADR],SR; [ADR]←SR LDRX DR,0FFSET[SR]; DR←[0FFSET十SR] STRX DR,0FFSET[SR]; [0FFSET十SR]←[DR]

  36. 四、16位教学计算机的简单汇编程序设计举例 例1 在显示器屏幕上循环显示95个可打印ASCII字符。 2000: MVRD R1,7E ;向寄存器传送直接数 2002: MVRD R0,20 2004: OUT 80 ;通过串行接口输出R0低位字节内容 2005: PUSH R0 ;保存R0寄存器的内容到堆栈中 2006: IN 81 ;读串行接口的状态寄存器的内容 2007: SHR R0 ;R0寄存器的内容右移←位 2008: JRNC 2006 ;当标志位C不是l时就转移到2006地址 2009: POP R0 ;从堆栈中恢复R0寄存器的原内容 200A: CMP R0,R1 ;相同则标志位z=1 200B: JRZ 2000 ;当标志位z为1时就转移到2000地址 200C: INC R0 ;把R0寄存器的内容增加l 200B: JR 2004 ;无条件转移指令,转移到2004地址 200F: RET ;子程序返回指令

  37. 例2 把字符“A” ―“F”写到内存的2040―2045几个单元, 之后再读出来并显示到屏幕上。 2020: MVRD R3,06 ;给出写内存操作的次数 2022: MVRD R2,203F 2024: MVRD R1,40 2026: INC R2 ;给出写内存操作的内存地址 2027: INC R1 ;给出写内存操作的数据内容 2028: STRR[R2],R1 2029: LDRR R0,[R2] ;读出内存单元的数据到R0寄存器 202A:OUT 80 202B:IN 8l 202C:SHR R0 202D:JRNC 202B 202E:DEC R3 ;检查6次写内存操作是否完成 202F:JRNZ 2026 ;末完则开始下←次写内存操作 2030:RET ;程序结束

  38. 例3 从键盘输入字符并送到显示器屏幕显示。 利用子程序将大写英文字母变为小写并将其显示出来。 2040: IN 81 ;检查有无敲击过键盘上的一个键 2041: SHR R0 2042: SHR R0 2043: JRNC 2040 2044: IN 80 2045: OUT 80 ;输出R0低位字节内容到显示器屏幕 2046: PUSH R0 2047: IN 8l 2048: SHR R0 2049: IRNC 2047 204A: POP R0 204B: CALA 2050 ;调用子程序 204D: JMPA 2040 ;转移指令,转移地址为2040 204A: RET

  39. ;以下是一个子程序 2050: MVRD R1,20 2051: ADD R0,R1 ;修改输入的字符的编码 2052: 0UT 80 ;把修改过的字符输出到显示器屏幕 2053: RET ;子程序返回指令

More Related