微指令设计t文档格式.docx
《微指令设计t文档格式.docx》由会员分享,可在线阅读,更多相关《微指令设计t文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
Q->
MEM,CC#=0:
0029030010200010
105H:
SR+MEM->
Q:
00000E0000D00080
106H:
A800
MOVR1,900
MOVR2,7
MOVR3,100
LDMC
RET
G800
A820
MOVR7,0001
MOVR1,0002
MOV[082A],R1
NOP
E826
D407082A
G820
U820
运行结果如下:
0820:
2C700001MOVR7,0001
0822:
2C100002MOVR1,0002
0824:
3401082AMOV[082A],R1
0826:
D407DWD407
0827:
082AADCR2,R10
0828:
AC00RET
0829:
0000NOP
082A:
0003NOP
……结果分析:
由于运行前SR=R7=0001<
[ADDR]=[082A]=0002,故运行后[ADDR]=0003=SR+[ADDR],结果正确.
更换数据测试:
>
E821
08210001:
0002
2C700002MOVR7,0002
0000NOP
由于运行前SR=R7=0002=[ADDR]=[082A]=0002,故运行后[ADDR]=0000=SR-[ADDR],结果正确.
(2)设计一条指令,比较SR内容与[ADDR].
[ADDR],则IP+OFFSET->
PC;
否则SR+[ADDR]->
DR.
D4DRSR
OFFSET
把PC的值(即ADDR的地址)送到AR中
AR将ADDR的值从内存中取出并送到AR中
利用MEM->
Q将[ADDR]的值从内存中取出然后送到Q寄存器中
SR-Q,并让个标志位接收运算结果,以便根据标志位进行条件转移
降OFFSET的地址送到AR中并且PC+1,若S=1(即SR<
[ADDR]),条件转移到106,否则顺序执行105
SR>
=[ADDR]时,SR+Q->
DR,结束
[ADDR]时转移到此处,计算IP+OFFSET并送到PC中
MEM->
00000e0000f00000
SR-Q:
改变标志位:
00000e0192000088
S=1(即SR<
[ADDR])时,
条件转移到106,PC->
004183B0A0355402
SR+Q->
DR,CC#=0:
00290311B0000088
IP+MEM->
C,CC#=0:
0029031030D65000
装载微码:
movr1,0002
mov[0890],r1
nop
ret
movr0,1111
Ret
E824
D48708900004
1)RR7:
0001
SR(0001)<
ADDR(0002)时
R0=1111
2)RR7:
0004
SR(0004)>
ADDR(0002)
R8=0006
3)RR7:
SR(0002)=ADDR(0002)R8=0004
(3)设计一条指令。
将SR与绝对地址ADDR单元内容比较,如果SR<
[ADDR],则[ADDR]-SR->
[ADDR],否则,[ADDR]+SR->
[ADDR]。
先取出[ADDR]中的值,然后用SR-[ADDR]->
Q来计算二者的差值,并利用运算所得的标志位判断比较二者的大小以进行条件转移:
当S=1时,说明SR<
[ADDR],程序跳转执行[ADDR]-SR->
Q,然后将Q的值写回[ADDR];
否则,顺序执行[ADDR]+SR->
Q,并将Q的值写回[ADDR]中。
微程序:
AR,00000E0090B05002
S=1(即SR<
[ADDR])时,条件转移到106:
SR+MEM->
Q,转移到105:
0041831000D00080
MEM-SR->
00000E0002D00080
加载微程序:
E900输入以上微码
(2)加载到微控存程序段
微码存放在900H(或某内存单元)开始的内存单元中
0800:
MOVR1,900;
微码在内存中的首地址
0802:
MOVR2,7;
共9条微指令
0804:
MOVR3,100;
微码在微控存中的首地址
0806:
LDMC;
加载微码指令
0807:
0808:
>
G800;
加载微指令到控制存储器
(3)运行程序段
MOVR1,01;
R1是指令中的SR,用它和DATA比较
MOVR2,02
MOV[082A],R2
NOP
输入以下内容:
D401082A
(4)运行结果
G820;
运行程序
结果:
1.(SR=01)<
([ADDR]=02)时
[ADDR]=0001
2.>
0002
(SR=02)=([ADDR]=02)时
[ADDR]=0004
(4)设计一条条件转移指令。
将SR与内存单元DATA的值进行比较,
1)如果SR<
DATA,则DATA+SR->
DR,
2)如果SR≥DATA,则ADDR->
PC
DATA
设计分析:
一开始要将PC即DATA的地址送到AR,并PC+1->
PC,因为两种情况下PC都至少要指向第三行ADDR处。
从存储器中取出DATA的值,把SR和DATA的值相减,让各个标志位接收运算结果,并根据标志位S的值判断条件转移,同时要再将PC即ADDR的地址送到AR中并PC+1->
1)当S=1时,SR<
DATA,转移到105去执行SR+DATA->
DR
2)否则,SR≥DATA,顺序执行ADDR->
微程序
mem->
条件转移到105,PC->
004143B0A0355402
MEM->
PC,CC#=0:
0029030030F05000a8
SR+Q->
00290311B0000088
MOVR2,6;
共6条微指令
A82A
MOVR8,10F0;
大于等于时,将会跳到82A执行这条赋值指令
E822
D4210088082A
1.SR(0001)<
DATA(0088)时
DR(R2)=0089
2.
0001:
0088
SR(0088)=DATA(0088)时
R8=10F0
0088:
0099
Sr(0099)>
(5)把用绝对地址表示的内存单元ADDR1的内容与内存单元ADDR2的内容相加,结果存到ADDR1单元中。
一.实验器材
TEC-2实验计算机、电脑各一台
二.实验分析与设计
1.指令格式
D4XX
ADDR1
ADDR2
2.指令功能
功能:
[ADDR1]+[ADDR2]→[ADDR1]
3.设计分析
1)PC加1后不送入PC,而是直接存入AR中,这样即可以通过AR逐步取出ADDR2中的内容到Q中暂时存放,而PC的值并不发生改变;
2)将PC送到AR,这次PC指向的是ADDR1的地址,即向AR中送入ADDR1的地址,然后PC自加1送入PC中,然后逐步取出ADDR1指向的内存中的数据;
3)再将PC加1,并且不将PC送到AR中,以免覆盖之前AR中ADDR1的地址,此操作用于跳出该指令;
4)将2)中取出数据Q中的相加后送到Q;
5)将Q中的数据送到AR指向的内存中,即ADDR1;
4.微程序
PC+1→AR:
00000E0090B55402
MEM→AR:
00000E0010F00002
MEM→Q:
00000E0000F00000
PC→AR,PC+1→PC:
PC+1→PC:
00000E00A0B55400
MEM+Q→Q:
00000E0100E00000
107:
Q→MEM,CC#=0:
0029030010200010
5.加载到微控存程序段
说明:
A800↙
MOVR1,900;
MOVR2,8;
微指令条数
MOVR3,100;
LDMC;
6.运行程序段
A820↙
0820:
MOVR0,0011
0822:
MOV[0890],R0
0824:
MOV[0891],R0
0826:
NOP
0827:
0828:
0829:
E826↙
然后输入以下内容:
D40008900891
7.运行结果
G820↙
用D命令查看运算结果
D890↙
则屏幕显示
0890:
00220011•••
(6)设计一条半字交换指令
D8DR0
DR(I15-I8)与DR(I7-I0)的内容互换
1)将DR的内容送到Q寄存器中,并启用4号命令,因为预备循环8次,所以下
地址字段要写7;
2)用8号命令重复循环,让Q和DR中的数据联合左移8次,Q中的高8位作为
填充移入到DR的第八位,就相当于完成了DR中数据高低位的交换;
3)循环结束后,顺序执行.
110:
DR→Q,4#:
0001C40080300008
111:
R0Q→R0Q(联合左移),8#:
00000806E0300208
112:
CC#:
0029030090300008
MOVR2,3;
MOVR3,110;
MOVR0,80F0
N0P
0825:
0828:
E822↙
D800
R↙
R0=F080
(7)设计一条指令,实现的功能是:
当DR=SR时,原PC(IP)+OFFSET→PC;
当DR<
SR时,ADDR→PC,否则,顺序执行下条汇编指令。
2.设计分析
1)100:
另DR-SR并让各个标志位接受ALU的状态标志;
2)101:
PC→AR,将OFFSET的地址送到AR中,然后根据标志位判断,如果零标志位等于1,说明DR=SR,利用下地址字段给出跳转的地址104;
3)102:
若零标志位不为1,则由顺寻执行到此处。
根据负标志位判断,若为1,则说明DR<
SR,用,PC→AR,PC+1→PC,将ADDR的地址送到AR中,然后由下地址字段给出跳转地址105;
4)103:
若102和103中的条件判断都不成立,即DR>
SR,则用PC+1→PC顺序执行下一条汇编指令;
5)104:
由101跳转至此后,用IP+OFFSET(MEM)→PC将ADDR送到PC中完成转移;
6)105:
由102跳转至此后,用ADDR(MEM)→PC完成转移。
3.微程序
100:
DR-SR;
接受标志:
00000E0191100088
101:
PC->
AR,DR=SR时跳到104:
0041037090305002
102:
AR,PC+1->
PC,DR<
SR时跳到105:
004143B0B0305402
103:
PC+1->
PC,DR>
SR时执行下条指令:
00290300B0305400
104:
IP+OFFSET(MEM)->
PC:
0029030030D65000
105:
ADDR(MEM)->
0029030030F05000
4.加载到微控存程序段
MOVR2,6;
5.运行程序段
MOVR7,7
MOVR8,8
MOVR0,0
082A:
MOVR0,4444
082C:
RET
082D:
MOVR0,5555
082F:
0830:
MOVRO,7777
0832:
RET
D47800070830
6.运行结果
1)R7=7,R8=8
用R命令查看运算结果
R0=7777(成功跳转至0830处)
2)>
输入0008(即R7=8,R8=8)
R0=5555(成功跳转至IP+OFFSET即082D处)
3)>
输入0009(即R7=9,R8=8)
用R命令查看运算结果
R0=4444(成功执行下一条指令,即082A处)
(8)设计一条指令,以实现将SR内容与内存单元ADDR的内容相加,结果存到ADDR单元中。
1.指令功能
功能:
[ADDR]+SR→[ADDR]
2.指令格式
ADDR
3.设计分析
根据实验册Page45后的<
<
微指令分析及功能描述表根据指令的功能和指令格式,在读取地址ADDR单元内容后暂时放置于Q寄存器中,然后将SR(R8)与Q寄存器内容相加,其结果也暂存放在Q寄存器中,此时,由于地址寄存器AR中存放的恰好是地址ADDR,因此只要将Q寄存器内容写入存储器就可以完成所需的指令功能。
4.微程序
00000E00A0B55402
00000E0010F00002
00000E0000F00000
Q+SR→Q:
00000E0180800080
0029030010200010
5.加载到微控存程序段
(一)用”A”命令输入加载微码的程序
在命令行提示符状态下输入:
MOVR2,5;
(二)用”G”命令运行加载微码的程序
微码便装入起始地址为100H的微控存中.
6.输入程序并运行新命令
(一)用”A”命令输入程序
在命令行提示符状态下输入:
MOVR8,0001
(二)用”E”命令输入新指令
D40008900891
7.用”G”命令运行程序
在命令行提示符状态下输入
然后用”D”命令察看运行结果
D890
屏幕将显示:
08900012
0891单元为0012,即为正确的运算结果.
(9)设计一条符号扩展指令
功能:
DR符号扩展→DR
2.指令格式
根据指令的功能和指令格式:
(1)对寄存器保存的低位字节的8位有符号补码数进行逻辑左移操作,左移9位,空出的低位补0;
(2)对其进行算术右移操作,右移9位,空出的高位用最高位(符号位)填补,这样即可将其扩展为16位的同值补码数;
(3)结果仍保存在原寄存器中,完成指令功能;
R/C=8:
0002040080300000
DR→DR逻辑左移9次:
00000806F0300208
DR→DR算术右移9次,CC#=0:
00290F20D0300108
MOVR2,4;
MOVR9,00FF
0823:
然后输入以下内容:
7.察看运行结果
R
R9=FFFF
免费提供