580 likes | 880 Views
TEC-2000 Virtual Machine 使用手册. 南京大学计算机科学与技术系 程序设计:李振华 李秦霖 界面制作:袁瑞峰. 开发背景. 大三上学期,我们做计算机组成原理实验,使用的机器是 TEC-2000 单片机(清华大学设计,清华同方制造)。它使用标准芯片,硬件设施比较完备,适合教学和实验。 在此基础上,我们设计并开发了 TEC-2000 虚拟机软件。一方面,它实现了一台虚拟机,运行虚拟机可以取得和原来单片机实际运行一样的效果;另一方面,虚拟机可以通过串口与真实单片机进行通信,与两台单片机通信过程一致。
E N D
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控制”菜单下的“微指令扩充...”菜单,注意:只有在微程序模拟的情况下才可以扩充,同时,扩充微指令前请务必仔细设计,否则虚拟机将不能正常工作。
模式2:使用TEC-2000虚拟机(组合逻辑控制方式)模式2:使用TEC-2000虚拟机(组合逻辑控制方式)
菜单栏(按钮栏没有的功能) • 文件菜单下的“汇编”菜单。 • 汇编:用于将汇编.ASM文件转成机器码.COD和列表文件.LST(可选),会弹出DOS窗口,一般敲两次回车即可,用户也可以另外命名。 • 虚拟机控制菜单下的“微指令扩充”菜单。 • 微指令扩充:由用户定义新的微指令,在合理的情况下,新的微指令将加入到虚拟机的指令系统中。
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的值写入DR • 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+SR所指向的内存中内容写入DR • MVRD DR,DATA; 将DATA写入DR • MVRR DR,SR; 将SR的值写入DR
TEC-2000指令集(9) • POPF; 弹出栈顶数据送状态标志寄存器 • PSHF; 状态标志(C、Z、V、S、P1、P0)入栈 • PUSH SR; SR入栈 • STRA [ADR],SR;将SR的值写入ADR所指向的内存中 • STRR [DR],SR;将SR的值写入DR里地址所指向的内存中 • STRX DR,OFFSET[SR];将DR的值写入OFFSET+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