TEC-2几条微指令的微码说明 & TEC-2微程序运行测试步骤
个人理解,不保证完全正确……
给正在被何朝东虐的,以及将来会被何朝东虐的同胞们…………
祈祷软院赶快更新课程让下一代逃脱TEC-2魔爪,monitor里那1994的年份真是看得人一口老血……
微码说明
PC→AR,PC+1→PC: 0000 0E00 A0B5 5402
0E00:顺序执行
A0B5: 读写那里设置不操作,101,WE=1是为了把PC送到内部总线好让AR接收;Cin=1,R+S,A、B口地址为0101(R5=PC所在);F->B,A(即PC+1->PC),R=0,S=B
A来自不操作与F->B,A;B来自WE为1与R\S是0\B,5来自A口地址
5402:5来自B口地址,4来自设进位为1,2来自DC2设为AR (这样PC->AR)
CI3-0 |
/MIO REQ /WE |
MI8-0 |
Sci |
DC2 |
||
顺序执行 |
101,不操作+额外设WE=1 |
F->B, A |
R+S |
R=0 S=B |
Cin=1 |
AR |
/WE =1为了把PC 写到内部数据总线 |
Y=A=PC F=PC+Cin->PC |
B也是PC |
PC+1 |
其他:A、B口地址为0101,因为PC默认是R5
MEM→AR:0000 0E00 10F0 0002
10F0:1是无,F;F是R=D,S=0(D输入端是内部总线送过来的数据)加上WE=1(MEM读到内部数据总线),这样Y=D+0=MEM+0会出现在内部总线
0002:2是选择DC2为AR,这样内部总线的数据会送到AR
CI3-0 |
/MIO REQ /WE |
MI8-0 |
DC2 |
||
顺序执行 |
001,存储器读 |
无,F |
R+S |
R=D S=0 |
AR |
MEM内容到达D端口 |
Y=F=D+0 |
D来自MEM |
MEM→Q:0000 0E00 00F0 0000:
同理,只不过要把F(D+0,也是MEM的内容)再送到Q,选择F->Q,F,R=D, S=0,所以是00F0
CI3-0 |
/MIO REQ /WE |
MI8-0 |
||
顺序执行 |
001,存储器读 |
F->Q,F |
R+S |
R=D S=0 |
MEM内容到达D端口 |
F=D+0->Q |
D来自MEM |
PC→AR,PC-1→PC:0000 0E00 A1B5 5402
和第一个差不多,改成R-S
MEM+Q→Q:0000 0E00 00E0 0000
00E0:WE那边001,存储器读(MEM会到D那里)
然后设置F->Q,F,R+S,R=D(MEM),S=Q,这样实现了MEM+Q->Q
CI3-0 |
/MIO REQ /WE |
MI8-0 |
||
顺序执行 |
001,存储器读 |
F->Q,F |
R+S |
R=D S=Q |
MEM内容到达D端口 |
F=D+Q->Q |
D来自MEM |
PC+1→PC:0000 0E00 B030 5400
B:不操作,F->B,F
3:R=0,S=B,
5:B为R5=PC
4:Cin=1
CI3-0 |
/MIO REQ /WE |
MI8-0 |
Sci |
||
顺序执行 |
100,不操作 |
F->B,F |
R+S |
R=0 S=B |
Cin=1 |
F=PC+1->PC |
B来自PC |
PC+1 |
Q→MEM,CC#=0, 3#, A4H:0029 0300 1020 0010
0029:最后要条件转移到A4H(A4H微指令的功能是依据有无中断请求,决定是进入中断处理过程,还是顺序执行下一条指令,这是每条机器指令完成后应该执行的一项操作。),A4转换为二进制是10100100,前面补0,后面两个备用的也是0,得到0029
0300:条件转移,3#,CC#=/CC
1020:1是无,F;2是R=0,S=Q,这样0+Q出现在Y,WE那边存储器写,000
0010:送往内部总线的数据DC1=运算器输出即F=0+Q,这样就可以写进存储器,Q->MEM
CI3-0 |
/MIO REQ /WE |
MI8-0 |
DC1 |
||
条件转移 |
000,存储器写 |
无, F |
R+S |
R=0 S=Q |
运算器输出 |
数据总线的东西写进MEM |
输出F=0+Q |
这样F会送到数据总线 |
其他:下地址设为0010100100,备用填00
SR → AR 0000 0E00 90C0 0082
90C0:WE那边是101,不操作,WE=1输出写到内部数据总线;无,F,R+S,R=0,S=A,这样A口的数据就会出现在数据总线上
0082:8是SA=1(这样A是SR),2是DC2=AR,
于是SR的数据穿过A口,到达内部数据总线,写入AR
CI3-0 |
/MIO REQ /WE |
MI8-0 |
DC2 |
||
顺序执行 |
101,不操作 |
无,F |
R+S |
R=0 S=A |
AR |
WE=1,Y输出到内部总线 |
Y=F=0+SR |
A来自SR |
其他:SA=1
MEM+Q→DR,CC#=0, 3#, A4H 0029 0300 30E0 0008
0029:最后要条件转移到A4H
0300:条件转移,3#,CC#=/CC
30E0:3是F->B,F;E是R+S,R=D,S=Q;存储器读001,这样MEM内容到了D,D+Q->B
0008:SB=1,这样B口就是DR,实现D+Q->DR
CI3-0 |
/MIO REQ /WE |
MI8-0 |
||
条件转移 |
001,存储器读 |
F->B,F |
R+S |
R=D S=Q |
MEM读到D端口 |
输出F=D+Q->DR B是DR |
D来自MEM |
微程序运行
测试使用老师给的文件包里的monitor.ext
微程序设计与测试步骤:
- 依照需求,利用微指令分析器设计好微程序
- 进入监控程序,用E命令输入微码,如
>E900
输入首地址为900的微码,回车后输入微程序,以空格隔开,回车表示输入完毕。
- 输入加载微码的程序,如
>A800
可在首地址800开始输入加载微码的程序,如
:MOV R1, ; 微码在内存中首地址为900,即上步E900的900
: MOV R2, ; 一共有7条微指令
: MOV R3, ; 微码在微控存中的首地址为100(对应操作码D4)
:LDMC ;加载微码指令,将微码指令加载到控存
:RET
: - 运行加载微码的程序,如
>G800
其中800 是第3步的 A800 的 800,这样微码便装入了微控存中(在上例中即D4对应的100H首地址)
- 用另一个程序测试新指令,先准备测试数据,如输入
>A820
然后输入
:MOV R0, ; 将0011存入R0
: MOV [],R0 ; 将R0的内容存入地址为0890的内存单元中
: MOV [],R0 ; 将R0的内容存入地址为0891的内存单元中
:NOP
:NOP
:NOP
:RET - 在第5步已输入的指令后(NOP开始的地方)调用新指令,如在上步后输入
>E826
即将新指令的调用放在0824: MOV [0891],R0 之后,接着输入
D400
这样就调用了新指令的操作码D4,配合操作数0890,0891。
运行测试程序,如依照上例,输入
>G820
就运行了首地址为820的微程序。
- 查看结果,可以用D或者R命令查看程序运行后寄存器或内存状态。
一次运行的截图
TEC-2几条微指令的微码说明 & TEC-2微程序运行测试步骤的更多相关文章
- 计算机组成原理——中央处理器(CPU)考研题
(一) CPU的功能和基本结构 (二) 指令执行过程 (三) 数据通路的功能和基本结构 (四) 控制器的功能和工作原理 1. 硬布线控制器2. 微程序控制器微程序.微指 ...
- 【计算机组成原理】中央处理器CPU
一.CPU的功能和基本结构 1.功能 当用计算机解决某个问题是,我们首先必须为他编写程序,程序是一个指令序列,这个序列明确告诉计算机应该执行什么操作,在什么地方找到用来操作的数据,一旦把程序装入内存器 ...
- MYSQL:随机抽取一条数据库记录
今天我们要实现从随机抽取一条数据库记录的功能,并且抽取出来的数据记录不能重复: 1.首先我们看文章表中的数据: 2.实现功能代码如下: 1 /** * 获取随机的N篇文篇 * @param int $ ...
- Xamarin XAML语言教程隐藏文件使用Progress属性设置进度条
Xamarin XAML语言教程隐藏文件使用Progress属性设置进度条 Xamarin XAML语言教程隐藏文件中使用Progress属性设置进度条进度,开发者除了可以在XAML中使用Progre ...
- Qt SQLite 批量插入优化(SQLite默认将每条语句看成单独的事务)good
使用SQLite存储数据时发现插入速度太慢,程序跑了将近五分钟才插入了不到三千条.上网查资料才发现,SQLite这种文件数据库与MySql机制不一样,每条事务都有打开和关闭文件的步骤,SQLite默认 ...
- HTML布局水平导航条1制作
该文是用css制作个导航条,用竖线分隔,导航条是点击的多个区块.步骤:ul里设置需要数量的li,li中加上a链接给ul加样式,去掉默认的前面的点给li设置左浮动,让ul里的li横向排列a链接设置成块状 ...
- 计算机组成原理实验之CPU组成与指令周期实验
(实验五 CPU组成与指令周期实验) 课程 计算机组成原理实验 实验日期 2015 年 12 月 8 日 一.实验目的 1.将微程序控制器同执行部件(整个数据通路)联机,组成一台模型计算机. 2. ...
- TEC-2机微程序设计
了解TEC-2机的结构和基本的指令知识很重要,不理解而只知一味地照抄是学不到知识的.建议先阅读课件,再结合例子进行理解.以下例子只供参考,有些地方可以合并,具体的操作仍需见仁见智.理解并学会使用微指令 ...
- ARM、Intel、MIPS处理器啥区别?看完全懂了
安卓支持三类处理器(CPU):ARM.Intel和MIPS.ARM无疑被使用得最为广泛.Intel因为普及于台式机和服务器而被人们所熟知,然而对移动行业影响力相对较小.MIPS在32位和64位嵌入式领 ...
随机推荐
- 编写优质嵌入式C程序(转)
前言:这是一年前我为公司内部写的一个文档,旨在向年轻的嵌入式软件工程师们介绍如何在裸机环境下编写优质嵌入式C程序.感觉是有一定的参考价值,所以拿出来分享,抛砖引玉. 转载请注明出处:http://bl ...
- Python高级语法总结
1.Python面向对象 创建类 使用class语句来创建一个新类,class之后为类的名称并以冒号结尾,如下实例: class ClassName: '类的帮助信息' #类文档字符串 class_s ...
- clinical significance临床显著性
sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&a ...
- CDN问题积累
我见到的CDN服务器只支持GET方法,只能以URL为索引来缓存内容. 有的时候我用相同的URL,相同的GET方法,但是不同Header参数时,后台对应的应该是不同的方法,返回不同的结果. 而这时候使用 ...
- OpenCV---开闭操作
一:开操作(先腐蚀后膨胀) 特点:消除噪点,去除小的干扰块,而不影响原来的图像 import cv2 as cv import numpy as np def camp(val1,val2): pv ...
- ZooKeeper在线迁移
在至少有一个Leader存在的前提下,进行Zookeeper的在线增量.在线减量.在线迁移 在全过程中ZooKeeper不停止服务 注意事项 首先,当我们要从3台扩充到5台时,应保证集群不停止服务. ...
- 如何在WIndows电脑上安装 SVN Server 实现代码版本控制
One 下载-安装 SVN SVNServer 先去官网下载服务器版本的svn server,下载地址 :https://www.visualsvn.com/server/download/ 选 ...
- VC6完整项目代码升级到VS2010
VC6完整项目代码升级到VS2010,有需要请联系我,专业C++开发,邮箱153786575@qq.com
- 算法专题-STL篇
这篇文章着重记录c++中STL的用法.主要粗略的介绍其用法,以知识点的形式呈现其功能,不会深入源码分析其工作原理. 排序和检索. sort(a,a+n),对a[0]往后的n个元素(包括a[0])进行排 ...
- Linux高级编程--03.make和makfile
Makefile语法基础 在Linux下,自动化编译工具是通过make命令来完成的(一些工具厂商也提供了它们自己的make命令,如gmake等),make命令的基本格式如下: make [-f mak ...