看了前面两篇的话,算是个入门了,相当于你已经能跑 hello world!了,接下来就是进入设计的阶段了,如果还没看前两篇的话,建议先去看看
首先,每一年的题目会有微小的变化,比如换控存入口,减法变成加法,最后输出位置之类的,但是换汤不换药
第一题
就是第二篇的实例分析
第二题
题目:
把立即数DATA传输至地址为ADDR的内存单元中保存
指令格式:D8××,ADDR,DATA, 三字指令(控存入口110H)
功能: [ADDR]=DATA
设计思路
该指令为三字指令,类似于实验一,需要先取出第二个地址中的内容,并储存回第一个地址位置。由此可见第一个地址直至最后都需要使用到,为了增加效率,可以先将第二个操作数取出储存至Q寄存器,再取用第一个地址
流程图中的缩写含义:
PC: Program Counter (程序计数器)
AR: Address Register (地址寄存器)
MEM: Memory (当出现MEM的时候,就是在对"AR"存的地址取值)
AR相当于"指针",MEM相当于"值"
Q: Q Register (用来计算的)
微指令流程图 |
|
微指令详细设计 | |||
序号 | 微指令功能 | 微指令代码 | 详细功能 |
1 | PC+1→AR | 0000 0E00 90B5 5402 | 为AR读入第二个操作数的地址做准备 |
2 | MEM→Q | 0000 0E00 00F0 0000 | 读第二个操作数并送Q寄存器 |
3 | PC→AR,PC+1→PC | 0000 0E00 A0B5 5402 | 为AR读入第一个操作数的地址做准备 |
4 | MEM→AR | 0000 0E00 10F0 0002 | AR读入第一个操作数的地址 |
5 | Q→MEM,CC#=0 | 0029 0300 1020 0010 | Q寄存器结果送回第一个操作数位置 |
仔细观察你会发现,实验二就是把实验一的第2条和第6条去掉了。具体原因我们来分析一下:
下面这部分建议把02-实例分析也打开到对应的位置,双开对比着看
首先,第一题和第二题的共同点都是要把数据最后存回ADDR中。区别在于,第一题和第二题的第一步指令虽然功能都是PC+1→AR,但是在第一题中,读入的是ADDR1的地址,第二题中读入的是DATA的地址。也就是说,在第一题中对AR取值后取出来的是另一个地址,第二题取出来的直接就是要用的的数字了。即:第一题中是指针的指针,第二题只是一个指针,取一层就出来值了。
所以,在第二题中,指令2直接可以MEM→Q,因为MEM(也就是对AR取值)就是立即数DATA了,而第一题你需要再加一条MEM→AR,这样才把ADDR1的地址取出来,再执行MEM→Q才是把ADDR1里的东西取出来。
实验二去掉实验一的第6条单纯是因为不需要运算了,直接送回就完事了。
具体的单条分析也在02中,这里就不贴了。
第三题
题目:
转移指令,判断两个通用寄存器的内容是否相等,若不相等则转移到指定的目的地址,否则顺序执行
指令格式:E1 DR SR,ADDR 单字指令(控存入口130H)
功能: if DR!=SR go to ADDR else 顺序执行
设计思路
该指令为二字指令,第一步让SR-DR,把结果是否为零的信息记录在标识位,接着根据标志位Z#来条件跳转。等于1,说明两个数不相等,微程序跳转,取出需要跳转的位置位置至PC。反之,顺序执行
流程图中的缩写含义:
SR,DR: 通用寄存器,Tec-2 共有16个寄存器,部分有专属功能,部分为通用寄存器
PC: Program Counter (程序计数器)
AR: Address Register (地址寄存器)
MEM: Memory (当出现MEM的时候,就是在对"AR"存的地址取值)
AR相当于"指针",MEM相当于"值"
(CC)#: 条件码
Z#:条件码
(条件码这个东西有单独说)
微指令流程图 |
|
微指令详细设计 | |||
序号 | 微指令功能 | 微指令代码 | 详细功能 |
1 | SR-DR | 0000 0E01 9190 0088 | 通过SR-DR改变Z状态值 |
2 | PC→AR PC+1→PC (CC)#=Z# | 0029 03E0 A0B5 5402 | 为顺序执行做准备 并通过判断Z状态值判断是否要跳转 |
3 | MEM→PC | 0029 0300 30F0 5000 | 跳转 |
逐条分析
每条指令里面,标黄的部分是关键的指令位,对着analyzer一条一条看一遍,大概能理解了就(看起来最难的题结果只有三条指令)
Instruction#1 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]()
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Instruction#2 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]()
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Instruction#3 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
下一篇是一些需要注意的点和心得