个人理解,不保证完全正确……

给正在被何朝东虐的,以及将来会被何朝东虐的同胞们…………

祈祷软院赶快更新课程让下一代逃脱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

微程序设计与测试步骤:

  1. 依照需求,利用微指令分析器设计好微程序
  2. 进入监控程序,用E命令输入微码,如
    >E900

    输入首地址为900的微码,回车后输入微程序,以空格隔开,回车表示输入完毕。

  3. 输入加载微码的程序,如
    >A800

    可在首地址800开始输入加载微码的程序,如

    :MOV R1,     ; 微码在内存中首地址为900,即上步E900的900
    : MOV R2, ; 一共有7条微指令
    : MOV R3, ; 微码在微控存中的首地址为100(对应操作码D4)
    :LDMC ;加载微码指令,将微码指令加载到控存
    :RET
    :
  4. 运行加载微码的程序,如
    >G800

    其中800 是第3步的 A800 的 800,这样微码便装入了微控存中(在上例中即D4对应的100H首地址)

  5. 用另一个程序测试新指令,先准备测试数据,如输入
    >A820

    然后输入

    :MOV R0,          ; 将0011存入R0
    : MOV [],R0 ; 将R0的内容存入地址为0890的内存单元中
    : MOV [],R0 ; 将R0的内容存入地址为0891的内存单元中
    :NOP
    :NOP
    :NOP
    :RET
  6. 在第5步已输入的指令后(NOP开始的地方)调用新指令,如在上步后输入
    >E826

    即将新指令的调用放在0824: MOV [0891],R0 之后,接着输入

    D400  

    这样就调用了新指令的操作码D4,配合操作数0890,0891。

  7. 运行测试程序,如依照上例,输入

    >G820

    就运行了首地址为820的微程序。

  8. 查看结果,可以用D或者R命令查看程序运行后寄存器或内存状态。

一次运行的截图

TEC-2几条微指令的微码说明 & TEC-2微程序运行测试步骤的更多相关文章

  1. 计算机组成原理——中央处理器(CPU)考研题

    (一)   CPU的功能和基本结构 (二)   指令执行过程 (三)   数据通路的功能和基本结构 (四)   控制器的功能和工作原理 1.     硬布线控制器2.     微程序控制器微程序.微指 ...

  2. 【计算机组成原理】中央处理器CPU

    一.CPU的功能和基本结构 1.功能 当用计算机解决某个问题是,我们首先必须为他编写程序,程序是一个指令序列,这个序列明确告诉计算机应该执行什么操作,在什么地方找到用来操作的数据,一旦把程序装入内存器 ...

  3. MYSQL:随机抽取一条数据库记录

    今天我们要实现从随机抽取一条数据库记录的功能,并且抽取出来的数据记录不能重复: 1.首先我们看文章表中的数据: 2.实现功能代码如下: 1 /** * 获取随机的N篇文篇 * @param int $ ...

  4. Xamarin XAML语言教程隐藏文件使用Progress属性设置进度条

    Xamarin XAML语言教程隐藏文件使用Progress属性设置进度条 Xamarin XAML语言教程隐藏文件中使用Progress属性设置进度条进度,开发者除了可以在XAML中使用Progre ...

  5. Qt SQLite 批量插入优化(SQLite默认将每条语句看成单独的事务)good

    使用SQLite存储数据时发现插入速度太慢,程序跑了将近五分钟才插入了不到三千条.上网查资料才发现,SQLite这种文件数据库与MySql机制不一样,每条事务都有打开和关闭文件的步骤,SQLite默认 ...

  6. HTML布局水平导航条1制作

    该文是用css制作个导航条,用竖线分隔,导航条是点击的多个区块.步骤:ul里设置需要数量的li,li中加上a链接给ul加样式,去掉默认的前面的点给li设置左浮动,让ul里的li横向排列a链接设置成块状 ...

  7. 计算机组成原理实验之CPU组成与指令周期实验

    (实验五  CPU组成与指令周期实验) 课程 计算机组成原理实验 实验日期 2015 年 12 月  8 日 一.实验目的 1.将微程序控制器同执行部件(整个数据通路)联机,组成一台模型计算机. 2. ...

  8. TEC-2机微程序设计

    了解TEC-2机的结构和基本的指令知识很重要,不理解而只知一味地照抄是学不到知识的.建议先阅读课件,再结合例子进行理解.以下例子只供参考,有些地方可以合并,具体的操作仍需见仁见智.理解并学会使用微指令 ...

  9. ARM、Intel、MIPS处理器啥区别?看完全懂了

    安卓支持三类处理器(CPU):ARM.Intel和MIPS.ARM无疑被使用得最为广泛.Intel因为普及于台式机和服务器而被人们所熟知,然而对移动行业影响力相对较小.MIPS在32位和64位嵌入式领 ...

随机推荐

  1. Notes of fwt

    昨天考试由于不会fwt而爆炸,所以今天搞了一下fwt……话说这玩意的普及程度已经很高了.fwt,快速沃尔什变换,可以用于位运算卷积的优化,是一种线性变换,所以就会有许多好的性质(eg:可以直接模,可以 ...

  2. STM32自动生成精美图案

    http://note.youdao.com/noteshare?id=65f237225624d22fe18f4aaaeec8db07

  3. 手脱PECompact v2.xx

    个人认为这个壳对于新手有那么一点点难度,所以用单步和ESP都跑一下,我觉得单步是最最基础的,所以一定要掌握 一.单步 1.PEID查壳 PECompact v2.xx (16 ms) 2.载入OD,除 ...

  4. 原生js写的一个简单slider

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 【BZOJ】2165: 大楼

    [题意]从第0层开始有无穷层,每层有n个房间,给定矩阵A,A[i][j]表示从第x层的房间 i 可以跳到第x+A[i][j]层的房间 j (x任意),A[i][j]=0表示不能跳.初始在第0层第1个房 ...

  6. MOD - Power Modulo Inverted(SPOJ3105) + Clever Y(POJ3243) + Hard Equation (Gym 101853G ) + EXBSGS

    思路: 前两题题面相同,代码也相同,就只贴一题的题面了.这三题的意思都是求A^X==B(mod P),P可以不是素数,EXBSGS板子题. SPOJ3105题目链接:https://www.spoj. ...

  7. Sublime删除项目删不掉?

    最近用sublime进行项目的开发,感觉懵逼的像个小白菜~~ 今天遇到的问题可是一个超级白痴的问题,sublime的空白项目文件夹怎么都删不掉,我的傻逼操作是:选中文件--->Delete--- ...

  8. Sublime快捷键(一)

    最近在工作中,遇到的sublime的快捷键,以后再工作中用到的我会稍后增加的~ 快捷键: 1.切换标签页: Ctrl + Tab    切换标签页: Ctrl + Shift + Tab   返回刚切 ...

  9. three.js为何如此奇妙

    WebGL是在浏览器中实现三维效果的一套规范,而最初使用WebGL原生的API来写3D程序是一件非常痛苦的事情,在辛苦的付出下WebGL开源框架出现了,其中three.js就是非常优秀的一个,它掩盖了 ...

  10. 一文轻松搞懂redis集群原理及搭建与使用

    今天早上由于zookeeper和redis集群不在同一虚拟机导致出了点很小错误(人为),所以这里总结一下redis集群的搭建以便日后所需同时也希望能对你有所帮助. 笔主这里使用的是Centos7.如果 ...