Upload
amil
View
227
Download
8
Embed Size (px)
DESCRIPTION
TEC-2000 Virtual Machine 使用手册. 南京大学计算机科学与技术系 程序设计:李振华 李秦霖 界面制作:袁瑞峰. 开发背景. 大三上学期,我们做计算机组成原理实验,使用的机器是 TEC-2000 单片机(清华大学设计,清华同方制造)。它使用标准芯片,硬件设施比较完备,适合教学和实验。 在此基础上,我们设计并开发了 TEC-2000 虚拟机软件。一方面,它实现了一台虚拟机,运行虚拟机可以取得和原来单片机实际运行一样的效果;另一方面,虚拟机可以通过串口与真实单片机进行通信,与两台单片机通信过程一致。 - PowerPoint PPT Presentation
Citation preview
TEC-2000 Virtual Machine使用手册
南京大学计算机科学与技术系程序设计:李振华 李秦霖界面制作:袁瑞峰
开发背景 大三上学期,我们做计算机组成原理实验,使用的
机器是 TEC-2000 单片机(清华大学设计,清华同方制造)。它使用标准芯片,硬件设施比较完备,适合教学和实验。
在此基础上,我们设计并开发了 TEC-2000 虚拟机软件。一方面,它实现了一台虚拟机,运行虚拟机可以取得和原来单片机实际运行一样的效果;另一方面,虚拟机可以通过串口与真实单片机进行通信,与两台单片机通信过程一致。
同时,虚拟机增添了许多原来单片机所没有的功能,给实验编码、运行、调试和观察带来很大的方便。
请注意将 TVM ( TEC-2000 Virtual Machine )文件夹放在 C 盘(或 D 盘)根目录下。
运行程序 本软件不需要安装,双击 TVM 文件夹下的 TEC Pro.exe 即可运行。
功能概要 1. 支持 A , G , R , D , E , U , T , P 等命令;
2. 可读入 .ASM 汇编文件或者 .COD 二进制文件执行; 3. 可选择不同的运行方式(全速,单指令,单微指令,
暂停) 4. 支持中断实验(三级中断源),可以设定中断向量; 5. 支持指令集与微指令集的动态扩充; 6. 控件动态显示所有重要信号与数据状态(部分控件
可点击);
使用流程( 1 ) 1. 首先点击“连接”按钮,选择“与 TEC2000 通信”或者
“使用虚拟机模拟”;
2. 若使用虚拟机模拟,则点击“全速运行”按钮,进入正常工作方式;
3. 为详细了解虚拟机工作情况 , 建议点击“暂停” , 然后单指令或单微指令运行;
4. 若要读入文件,点击“打开文件”按钮,文件格式将自动转换,如要执行文件,再点击“传送”按钮,则文件写入内存,可以执行;
使用流程( 2 ) 5. 中断实验,请点击“中断向量设定”按钮以设定中断向量
基址,并且编好中断程序写入内存,按钮“ 1”“2”“3” 代表三级中断源;
6. 虚拟机可以执行所有的基本指令和部分扩展指令,如果要扩充指令集或者微指令集,选择“ TEC Pro 控制”菜单下的“微指令扩充 ...” 菜单,注意:只有在微程序模拟的情况下才可以扩充,同时,扩充微指令前请务必仔细设计,否则虚拟机将不能正常工作。
虚拟机启动
模式 1 :联接 TEC-2000 单片机
模式 2 :使用 TEC-2000 虚拟机(组合逻辑控制方式)
模式 3 :使用 TEC-2000 虚拟机(微程序控制方式)
虚拟机工作结束
按钮栏
菜单栏(按钮栏没有的功能) 文件菜单下的“汇编”菜单。 汇编:用于将汇编 .ASM 文件转成机器码 .COD 和列表文件 .LST (可选),会弹出 DOS窗口,一般敲两次回车即可,用户也可以另外命名。
虚拟机控制菜单下的“微指令扩充”菜单。 微指令扩充:由用户定义新的微指令,在合理的情
况下,新的微指令将加入到虚拟机的指令系统中。
PCEC 工作面板(接受基本命令和基本指令)
ASEC 工作面板 (接受汇编扩展指令)
命令输入及参考帮助
虚拟机工作全图
微程序工作图
微程序定序器(内部图)
组合逻辑工作图
运算器(内部图)
串口 COM1 和 COM2
内存(内部图)
TEC-2000 基本命令集 A [adr] ; 从指定(或默认)地址 adr 开始写一小段汇编
程序 U [adr] ; 从指定(或默认)地址 adr 开始反汇编一小段
程序 D [adr] ; 从指定(或默认)地址 adr 开始显示内存 120个存储字的内容
E [adr] ; 从指定(或默认)地址 adr 开始修改存储器内容
G [adr] ; 从指定(或默认)地址 adr 开始运行程序 R [reg] ; 显示 /修改寄存器 reg 的内容 T [adr] ; 从指定(或默认)地址 adr 开始单条执行程序
指令
TEC-2000 指令集( 1 ) DI ; 关中断,置中断允许位 INTE=0 DW adr ; 写地址为 adr 的内存 EI ; 开中断,置中断允许位 INTE=1 IN i/o port ; 从外设 I/O PORT端口读入数
据到 R0 JR OFFSET ;无条件跳转到 ADR , ADR=
原 PC值 +OFFSET
TEC-2000 指令集( 2 ) OR DR , SR ; 将 DR 和 SR 做或运算的结果写入
DR ADC DR , SR ; 将 DR+SR+C 的值写入 DR ADD DR , SR ; 将 DR+SR 的值写入 DR AND DR , SR ; 将 DR 和 SR 做与运算的结
果写入 DR ASR DR ; DR 算术右移,最高为保持不变,最低位移入 C
CLC ; 清进位标志位 C=0
TEC-2000 指令集( 3 ) CMP DR , SR; 用 DR减去 SR DEC DR ;将 DR-1 的值写入 DR INC DR ; 将 DR+1 的值写入 DR JRC OFFSET ; 当 C=1 时,跳转到 ADR , ADR
= 原 PC值 +OFFSET JRS OFFSET ; 当 S=1 时,跳转到 ADR , ADR=
原 PC值 +OFFSET JRZ OFFSET ; 当 Z=1 时,跳转到 ADR , ADR=
原 PC值 +OFFSET
TEC-2000 指令集( 4 ) NOT DR ; 将 DR求反后的值写入 DR OUT I/O PORT ; 将 R0 中的数据写入外
设 I/O PORT端口 RCL DR ; DR 与 C循环左移, C移入最低位,最高位移入 C
RCR DR ; DR 与 C循环右移, C移入最高位,最低位移入 C
RET ; 子程序返回
TEC-2000 指令集( 5 ) SBB DR , SR ; 将 DR-SR-C 的值写入 D
R SHL DR ; DR 逻辑左移,最低位补 0 ,最高位移入 C
SHR DR ; DR 逻辑右移,最高位补 0 ,最低位移入 C
STC ; 置进位标志位 C=1 SUB DR , SR ; 将 DR-SR 的值写入 DR
TEC-2000 指令集( 6 ) POP DR ; 弹出栈顶数据送 DR XOR DR , SR ; 将 DR 和 SR 做异或运
算的结果写入 DR CALA ADR ; 调用首地址在 ADR 的子程序 CALR SR ; 调用 SR 指向的子程序 IRET ; 中断返回
TEC-2000 指令集( 7 ) JMPA ADR ; 无条件跳转到地址 ADR JMPR SR ; 无条件跳转到 SR 指向的地址 JRNC OFFSET ; 当 C=0 时,跳转到 ADR ,
ADR= 原 PC值 +OFFSET JRNS OFFSET ; 当 S=0 时,跳转到 ADR ,
ADR= 原 PC值 +OFFSET JRNZ OFFSET ; 当 Z=0 时,跳转到 ADR ,
ADR= 原 PC值 +OFFSET
TEC-2000 指令集( 8 ) LDRA DR , [ADR] ;将 ADR 所指向的内存
中的内容写入 DR LDRR DR , [SR] ; 将 SR里地址所指向的
内存中的内容写入 DR LDRX DR , OFFSET[SR] ;将 OFFSET+S
R 所指向的内存中内容写入 DR MVRD DR , DATA ; 将 DATA 写入 DR MVRR DR , SR ; 将 SR 的值写入 DR
TEC-2000 指令集( 9 ) POPF ; 弹出栈顶数据送状态标志寄存器 PSHF ; 状态标志( C 、 Z 、 V 、 S 、 P
1 、 P0 )入栈 PUSH SR ; SR 入栈 STRA [ADR] , SR ;将 SR 的值写入 ADR 所指向
的内存中 STRR [DR] , SR ;将 SR 的值写入 DR里地址所
指向的内存中 STRX DR,OFFSET[SR] ;将 DR 的值写入 OFFSE
T+SR 所指向的内存中 TEST DR , SR ; DR 和 SR 做与运算
运行方式 在联机模式下,只能全速运行; 在虚拟机模式下,可以全速运行,也可以暂
停; 虚拟机选用组合逻辑控制时,可以单指令运
行,方便指令调试; 虚拟机选用微程序控制时,可以单微指令运
行,方便指令和微指令调试;
调试(单指令) 在虚拟机使用组合逻辑控制方式下,可以单
指令运行以进行调试;各总线数据、串口数据、寄存器 R0 、 PC 、
SP 中数据可以从图中直接读出,点击运算器ALU 可以详细查看运算器中每一个信号和寄存器的状态,点击内存将显示整个内存中各内存单元保存的数据;
调试(单微指令) 在虚拟机使用微指令控制方式下,可以单微
指令运行以进行调试;各总线数据、串口数据、寄存器 R0 、 PC 、
SP 中数据可以从图中直接读出,点击运算器ALU 可以详细查看运算器中每一个信号和寄存器的状态,点击内存将显示整个内存中各内存单元保存的数据;
点击微程序定序器 AM2910 可以查看微程序中所有控制信号和状态位;
保存文件 虚拟机所能识别的文件格式有 .ASM (汇
编)、 .COD ( 16位机器码)、 .LST (列表文件)
列表文件只在汇编时才可能生成(可选,用户指定)。
建议文件保存在 TVM 文件夹根目录下。
打开文件 若打开 .ASM 汇编文件,虚拟机自动切换到
ASEC 编辑面板,在这里可以对汇编文件进行编辑;
若打开 .COD 机器码文件,虚拟机同样将自动切换到 ASEC 编辑面板,同时将机器码自动转换为 .ASM 汇编文件显示以方便阅读。
.LST 文件是作为列表文件使用的,所以不能打开。
机器码传送 若当前打开的是 .ASM 汇编文件,请先点击
文件菜单中的“汇编”将它转成 .COD 机器码;然后点击“传送”将机器码写入内存;
若当前打开的是 .COD 文件,虚拟机直接将文件中的机器码写入内存;
注意:只有文件的机器码写入内存才能执行,否则文件仅处于编辑状态。
中断向量设定
三级中断 虚拟机支持中断实验。 中断实验前请先设计好中断程序,建议用汇
编扩展指令写。如程序中所设中断向量与虚拟机实际中断向量不符,请设定中断向量使两者一致;
三级中断优先级逐次升高, 3 级最高,不能被屏蔽; 1 级最低,可以被高级的屏蔽。
版本、制作组、功能和使用说明版本: TEC-2000 Virtual Machine 1.0 制作组:
程序设计:李振华 李秦霖界面制作:袁瑞峰
功能和使用说明见 PPT4 、 5 、 6 ,也可以运行虚拟机后点击按钮栏最后一个按钮。
微指令扩充界面
微指令扩充说明 微指令是控制器的核心部分,所以扩充之前
请务必仔细设计,否则可能破坏虚拟机指令系统;
按照上图所示格式进行微指令编码,各种编码在下拉列表中都显示出了它的功能,请仔细参照这些功能说明进行编码;
可以查看已经编好的微指令,若确定无误,点击右下方“确定”按钮,若发现错误,点击“删除”按钮。
工作例程 1 : A 命令功能:简单的 A 命令程序,顺次输出字符 0 - 9 。>A 2000H 2000: MVRD R0,30 2002: MVRD R1,0A 2004: OUT 80 2005: INC R0 2006: DEC R1 2007: JRNZ 2004 2008: RET
工作例程 1 :运行结果 >G 2000 0123456789 // 运行结果输出 R0=003A R1=0000 R2=0000 R3=0000
SP=2780 PC=2000 R6=0000 R7=0000 R8=0000
R9=0000 R10=0000 R11=0000 R12=0000 R13=0000 R14=2612 R15=0000 F=11000000
工作例程 2 :读入汇编程序功能:汇编程序,与例程 1 功能相同,顺次输出字符
0 - 9 。 ORG 2000H MVRD R0,0030H MVRD R1,000AH L:OUT 80H INC R0 DEC R1 JRNZ L RET END
工作例程 2 :汇编程序码转机器码并送入内存
上述汇编 .ASM 文件的机器码: (16 进制 ) 0100 2009 0088 0000 3088 1000 0A86 8009 0008 1047 FC8F 00 点击“传送”按钮将上述机器码写入内存
( 2000H地址开始)。
工作例程 2 :运行结果 >G 2000 0123456789 R0=003A R1=0000 R2=0000 R3=0000
SP=2780 PC=2000 R6=0000 R7=0000 R8=0000
R9=0000 R10=0000 R11=0000 R12=0000 R13=0000 R14=2612 R15=0000 F=11000000
工作例程 3 :中断实验 主程序不断输出字符 0 ,此时可以点击三级中断按钮,若进
入 1 级中断则不断输出 1 ,进入 2 级中断则不断输出 2 ,进入 3 级中断则不断输出 3 。进入 i 级中断处理时,只有键入对应数字键才能退出该级中断处理。
代码: ORG 2000H MVRD R1,0030H MVRD R2,0031H MVRD R3,0032H MVRD R6,0033H MVRD R7,00FFH
中断实验代码( 2 ) DW 6E00H A:MVRD R0,0030H OUT 80H IN 81H SHR R0 SHR R0 JRNC A IN 80H AND R0,R7 SUB R0,R1 JRNZ A RET
中断实验代码( 3 ) ORG 2040H DW 6F00H PUSH R0 PSHF DW 6E00H B:MVRD R0,0031H OUT 80H IN 81H SHR R0 SHR R0 JRNC B IN 80H AND R0,R7 SUB R0,R2 JRNZ B DW 6F00H POPF POP R0 DW 6E00H DW 0EF00H RET
中断实验代码( 4 ) ORG 2080H DW 6F00H PUSH R0 PSHF DW 6E00H C:MVRD R0,0032H OUT 80H IN 81H SHR R0 SHR R0 JRNC C IN 80H AND R0,R7 SUB R0,R3 JRNZ C DW 6F00H POPF POP R0 DW 6E00H DW 0EF00H RET
中断实验代码( 5 ) ORG 20C0H DW 6F00H PUSH R0 PSHF DW 6E00H D:MVRD R0,0033H OUT 80H IN 81H SHR R0 SHR R0 JRNC D IN 80H AND R0,R7 SUB R0,R6 JRNZ D DW 6F00H POPF POP R0 DW 6E00H DW 0EF00H RET
中断实验代码( 6 ) ORG 2104H JMPA 2040H RET ORG 2108H JMPA 2080H RET ORG 210CH JMPA 20C0H RET
END
工作例程 3 :中断屏蔽 G 2000 //逐次点击 1 , 2 , 3 级中断
按钮 00000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222233333333333333333333333333333333333333333333333333333333
工作例程 3 :中断退出逐次键入 3 、 2 、 1 、 0 。 3333333333333333333333333333333333333333
222222222222222222222222222222222222222221111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000
R0=0000 R1=0030 R2=0031 R3=0032 SP=2780 PC=2000 R6=0033 R7=00FF R8=0000
R9=0000 R10=0000 R11=0000 R12=0000 R13=0000 R14=2612 R15=0000 F=11000000
>
参考资料《 TEC-2000 教学计算机系统 技术说明与实
验指导( 16位机)》 清华同方股份有限公司 清华大学计算机系
END