一、实验目的:
深入了解计算机各种指令的执行过程,以及控制器的组成,指令系统微程序设计的具体知识,进一步理解和掌握动态微程序设计的概念;完成微程序控制的特定功能计算机的指令系统设计和调试。
二、实验说明: 要进行这项课程设计,必须清楚地懂得: TEC-2机的功能部件及其连接关系; TEC-2机每个功能部件的功能与具体组成;
TEC-2机支持的指令格式; TEC-2机的微指令格式,AM2910芯片的用法;
已实现的典型指令的执行实例,即相应的微指令与其执行次序的安排与衔接; 要实现的新指令的格式与功能。 三、实验内容:
选定指令格式、操作码,设计如下指令:1.把用绝对地址表示的内存单元ADDR2中的内容与内存单元ADDR1中的内容相减,结果存于内存单元ADDR1中。
指令格式:D8××,ADDR1,ADDR2, 三字指令(控存入口110H)
功能: [ADDR1]=[ADDR2]-[ADDR1]
2.把用绝对地址表示的内存单元ADDR2中的内容传送至地址为ADDR1的内存单元中保存。 指令格式:E0××,ADDR1,ADDR2,三字指令(控存入口130H) 功能: [ADDR1]←[ADDR2]
3.转移指令。判断两个通用寄存器内容是否相等,若相等则转移到指定目的地址,否则顺序执行。 指令格式:E5 DR SR,DISP双字指令(控存入口140H, DISP为相对转移地址偏移量)
功能: if DR=SR goto IP+DISP
else 顺序执行。
相关的资料很多 但是几乎没有完全一致的 我很好奇明年老师又会怎么改?
//请不要把这句话复制到阁下的实验报告里
56位编码如图:
任务1:
把用绝对地址表示的内存单元ADDR2中的内容与内存单元ADDR1中的内容相减,结果存于内存单元ADDR1中。
指令格式:D8××,ADDR1,ADDR2, 三字指令(控存入口110H) 功能: [ADDR1]=[ADDR2]-[ADDR1]
需要知道的一些基础概念:
指令计数器pc 给出下一个指令的地址
寄存器Q 存放数据
内存MEM 存放数据、地址
如下是一些指令的含义:
PC->AR 把指令地址送往地址寄存器
PC+1->PC 自增1 指向下一个指令地址
MEM->X 把内存中的数据/地址 送到X
PC-1->AR 取上一个地址送往地址寄存器
如果不懂可以看看CPU的工作过程
PC→AR,PC+1→PC: 0000 0E00 A0B5 5402
MEM→AR: 0000 0E00 10F0 0002
MEM→Q: 0000 0E00 00F0 0000
PC→AR: 0000 0E00 90B0 5002
MEM→AR: 0000 0E00 10F0 0002
MEM-Q→Q: 0000 0E01 02E0 0000
PC-1→AR: 0000 0E00 91B0 5402
PC+1→PC: 0000 0E00 B0B0 5400
MEM→AR: 0000 0E00 10F0 0002
Q→MEM,CC#=0: 0029 0300 1020 0010
首先E指令毫无技术含量地敲进去
R1 900是开始的地址
R2 10代表有10条指令
R3 110是控存地址(题目的要求)
G800加载上面写在800的程序
先给r0,r1寄存器赋值 再把A00和A01单元赋值
指令占四个字节 所以写四次nop (其实少写好像也能正常运行
第一个空地址是828所以从828开始
结果FFDE 可以看出是33-55的结果
我们把55和33调换位置 结果是22 符合预期
任务2
2.把用绝对地址表示的内存单元ADDR2中的内容传送至地址为ADDR1的内存单元中保存。 指令格式:E0××,ADDR1,ADDR2,三字指令(控存入口130H)
功能: [ADDR1]←[ADDR2]
基本上跟上一个一样 只是不需要做减法了
PC→AR,PC+1→PC: 0000 0E00 A0B5 5402
PC→AR: 0000 0E00 90B0 5002
MEM→AR: 0000 0E00 10F0 0002
MEM→Q: 0000 0E00 00F0 0000
PC-1→AR: 0000 0E00 91B0 5402
PC+1→PC: 0000 0E00 B0B0 5400
MEM→AR: 0000 0E00 10F0 0002
Q→MEM,CC#=0: 0029 0300 1020 0010
结果符合预期~
任务3
转移指令。判断两个通用寄存器内容是否相等,若相等则转移到指定目的地址,否则顺序执行。 指令格式:E5 DR SR,DISP双字指令(控存入口140H, DISP为相对转移地址偏移量)
功能: if DR=SR goto IP+DISP
else 顺序执行。
需要注意 两个寄存器相减不需要再把结果送到DR
DR-SR 0000 0E01 9190 0088
PC→AR, PC+1→PC,CC#=CND 0029 03E0 A0B5 5402
MEM→AR 0000 0E00 10F0 0002
MEM→Q 0000 0E00 00F0 0000
PC→MEM 0000 0E00 1045 0010
MEM+Q →Q 0000 0E01 00E0 0000
Q→MEM 0000 0E00 1020 0010
MEM->PC,CC#=0 0029 03E0 A0B5 5402
寻常的输入
r1 r2相等时情
不会执行mov r1,1234
r1与r2不相同时
请千万注意 在E5作为开头的若干四位数字中目前只发现E512一定可用 不要在这里浪费时间