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

总体思路:

设计微程序→将微码存放于内存中→将微码加载到微控制存储器中→输入程序,运行新指令,以检验微程序的正确性

补充知识:

指令格式: 操作码    条件码    目的寄存器(DR)    源寄存器(SR)

       ||

   唯一指定一条指令

例:第一题:     D4                     2                          0

PC:存放内存单元的地址。(随着指令运行时递增)

反汇编得到指令的具体格式。

14号命令:与/CC条件无关,顺序执行,即执行紧跟在本条微指令后面的那条微指令,由μPC提供微地址。

3号命令:条件转移。/CC=1时,顺序执行,否则按当前微指令下地址字段中地址D转移。

D数据来源可分为:

①16个钮子开关,用于手拨方式输入的数据或地址②运算器的16位输出;③外部数据总线传送来的数据;④中断向量寄存器的输出;⑤状态寄存器(C-进/借位、Z-运算结果、V-溢出、S-符号 4个标志位及中断优先级);⑥指令寄存器的低位字节。

第一题:

  将内存单元数据DATA减去用绝对地址ADDR表示的内存单元的内容,结果保存到由DR内容指定的内存单元中

1.指令格式

指令格式:

D4

DR

X

ADDR

DATA

2.指令功能

功能:  DATA- [ADDR] → [DR]

3.设计分析

根据指令的功能和指令格式,先读取地址ADDR单元内容暂时放置于Q寄存器中, 然后PC+1→PC,并将PC的值赋给AR。MEM中存放的数据是DATA。此时只需要实现MEM-Q→Q,并将DR送给AR。只要将Q寄存器内容写入存储器MEM就可以完成指令功能。最后,微程序中必须实现PC+1→PC操作,才能确保PC的正确走向。

4. 微程序 

100:PC→AR,PC+1→PC:  0000   0E00   A0B5   5402

101:MEM→AR:              0000   0E00   10F0   0002

102:MEM→Q:                0000   0E00   00F0   0000

103:PC→AR,PC+1→PC:   0000   0E00   A0B5   5402

104:MEM-Q→Q:              0000   0E01   02E0   0000

105:DR→AR:               0000   0E00   90B0   000A

106:Q→MEM,CC#=0:       0029   0300   1020   0010

5. 加载到微控存程序段

说明:微码存放在900H(或某内存单元)开始的内存单元中

>A0800↙

0800:MOV R1,900        ;微码在内存中的首地址

0802:MOV R2,7          ;微指令条数

0804:MOV R3,100        ;微码在微控制存储器中的首地址

0806:LDMC               ;加载微码指令,将微码指令加载到微控制存储器中

0807:RET

0808:

>A0800↙

6.运行程序段

>A0820↙

0820:MOV R0,0011

0822:MOV [0890],R0

0824:MOV R2,0891

0826:NOP

0827:NOP

0828:NOP

0829:RET

>E0826↙

然后输入以下内容:

D420 0890 1111

7.运行结果

>G0820↙

>D0891↙

0891:1100

第二题:

将绝对地址ADDR单元的内容与[SR]内容相加,结果保存到DR寄存。

1. 指令格式

指令格式:

D4

DR

SR

ADDR

2. 指令功能

功能:  [ADDR] + [SR] → DR

3.设计分析

根据指令的功能和指令格式,读取地址ADDR单元内容暂时放置于Q寄存器中,将SR单元内容赋给AR,MEM中存放着SR的数据。此时只需要实现Q+MEM,并将结果赋给DR就可以完成指令功能。最后,微程序中必须实现PC+1→PC操作,才能确保PC的正确走向。

4.微程序

100:PC→AR,PC+1→PC:  0000   0E00   A0B5   5402

101:MEM→AR:              0000   0E00   10F0   0002

102:MEM→Q:               0000   0E00   00F0   0000

103:SR→AR:               0000   0E00   90C0   0082

104:MEM+Q→Q:            0000   0E01   00E0   0000

105: Q→DR,CC#=0:        0029   0300   B020   0008

(104和105可以合并成MEM+Q→DR,CC#=0)

5.加载到微控存程序段

说明:微码存放在900H(或某内存单元)开始的内存单元中

>A0800↙

0800:MOV R1,900        ;微码在内存中的首地址

0802:MOV R2,6          ;微指令条数

0804:MOV R3,100        ;微码在微控制存储器中的首地址

0806:LDMC               ;加载微码指令,将微码指令加载到微控制存储器中

0807:RET

0808:

>A0800↙

6.  运行程序段

>A0820↙

0820:MOV R0,0011

0822:MOV [0890],R0

0824:MOV R0,0100

0826:MOV [0891], R0

0828:MOV R3, 0891

082A:NOP

082B:NOP

082C:RET

>E082A↙

然后输入以下内容:

D413 0890

7.运行结果

>G0820↙

>RR1↙

0111:-

TEC-2机微程序设计的更多相关文章

  1. VS 本机调试

    VS~通过IIS网站启用"域名"调试 在我们开发网站时,对某些信息进行序列化时,通常使用session,cookies,nosql等技术,而为了安全,我们在服务器上很多情况都做了防 ...

  2. Ajax使用WCF实现小票pos机打印源码

    通过ajax跨域方式调用WCF服务,实现小票pos机的打印,源码提供web方式,客户端方式测试,服务驻留右侧底部任务栏,可控制服务开启暂停,用户可自定义小票打印模板,配合零售录入. qq  22945 ...

  3. keepalived从机接管后主机恢复不抢占VIP

    在lvs+keepalived环境中,为了减小keepalived主从切换带来的意外风险,,设置主机恢复后不抢占VIP.待进行vrrp协议通告备机不可用时切换.主要修改两个地方.(红色部分) 只需修改 ...

  4. xcode低版本调试高版本真机系统

    低版本xcode调试本真机高版本系统 //打开此路径把最新的文件拷贝到这里就可以了 /Applications/Xcode.app/Contents/Developer/Platforms/iPhon ...

  5. APP测试点总结(功能,交互,死机崩溃状态分析,容易出错的检查点)

    APP测试点总结(功能,交互,死机崩溃状态分析,容易出错的检查点) 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近涉足APP端测试,常见检查点总结如下:   一.业务方面: 1.  注册( ...

  6. 【Win 10 应用开发】获取本机的IP地址

    按照老规矩,也是朋友的建议,老周今天在吹牛之前,先讲一个小故事. 有朋友问我,老周,你现在还发短信吗,你每个月用多少电话费?唉,实话说,现在真的发短信不多了,套餐送的130条短信,每月都发不了一条.至 ...

  7. 【Data Cluster】真机环境下MySQL数据库集群搭建

    真机环境下MySQL-Cluster搭建文档  摘要:本年伊始阶段,由于实验室对不同数据库性能测试需求,才出现MySQL集群搭建.购置主机,交换机,双绞线等一系列准备工作就绪,也就开始集群搭建.起初笔 ...

  8. Oracle数据库异机升级

    环境: A机:RHEL5.5 + Oracle 10.2.0.4 B机:RHEL5.5 需求: A机10.2.0.4数据库,在B机升级到11.2.0.4,应用最新PSU补丁程序. 目录: 一. 确认是 ...

  9. Vertica集群单节点宕机恢复方法

    Vertica集群单节点宕机恢复方法 第一种方法: 直接通过admintools -> 5 Restart Vertica on Host 第二种方法: 若第一种方法无法恢复,则清空宕机节点的c ...

随机推荐

  1. JavaScript-日常代码-时间

    取得今天0点: var start = new Date(new Date(new Date().toLocaleDateString()).getTime()); console.log(start ...

  2. 简要概述java内存模型,以及volatile关键字

    如果我们要想深入了解Java并发编程,就要先理解好Java内存模型.Java内存模型定义了多线程之间共享变量的可见性以及如何在需要的时候对共享变量进行同步.原始的Java内存模型效率并不是很理想,因此 ...

  3. eslint 对下一行不要校验报错

    eslint 对下一行不要校验报错: <--eslint-disable-next-line--> <div>todo</div> 扩展知识: stylelint ...

  4. oracle查询数据库连接数相关

    select username,count(username) from v$session where username is not null group by username;--查询各个用户 ...

  5. react的登录逻辑

    https://blog.csdn.net/qq_36822018/article/details/83028661(先看看这个 https://blog.csdn.net/weixin_342681 ...

  6. QShareMemory

    Qt提供了一种安全的共享内存的实现QSharedMemory,以便在多线程和多进程编程中安全的使用.比如说QQ的聊天的客户端,这里有个个性头象,当点击QQ音乐播放器的时候,启动QQ音乐播放器(启动一Q ...

  7. 重载new和delete运算符

    内存管理运算符 new.new[].delete 和 delete[] 也可以进行重载,其重载形式既可以是类的成员函数,也可以是全局函数.一般情况下,内建的内存管理运算符就够用了,只有在需要自己管理内 ...

  8. 四川大学第二届SCUACM新生赛(同步赛)题解

    周末没事干,就不要脸地去一边吃饭一边看学弟沈阳拿银一边水了个比赛,水都水了,简单写个题解. 比赛链接 A,丁姐姐喜欢Fibonacci.签到1,斐波那契%3 1 1 0 1 1 0 1 1 0..., ...

  9. TensorFlow(十八):从零开始训练图片分类模型

    (一):进入GitHub下载模型-->下载地址 因为我们需要slim模块,所以将包中的slim文件夹复制出来使用. (1):在slim中新建images文件夹存放图片集 (2):新建model文 ...

  10. fluent中如何对一个非整个volume的特定的区域进行数据分析?【转载】

    作者:王蒙 链接:https://www.zhihu.com/question/37432813 来源:知乎 很抱歉,我不知道 fluent 中是否有这一功能,我这个学期才开始学.但 CFD-Post ...