当前位置:文档之家› 微指令设计

微指令设计

(1) 设计一条指令,比较SR内容与[ADDR].若SR<[ADDR],则SR+[ADDR]->[ADDR]; 否则SR-[ADDR]->[ADDR].指令格式:D4 0 SRADDR设计分析:100:把PC的值(即ADDR的地址)送到AR中,然后PC+1101:用MEM->AR将ADDR从内存中取出并送到AR中102:利用SR-MEM->Q计算SR与[ADDR]的差,并让各标志位接受ALU的运算结果,103:若S=1(即SR<[ADDR]),条件转移到105,否则顺序执行104104:将Q的值(即SR-[ADDR])送到[ADDR]中105:AR<[ADDR]时转移到此处,计算SR+[ADDR]并送到Q寄存器中106:将Q寄存器的值送到[ADDR]中微程序:100H: PC->AR,PC+1->PC: 0000 0E00 A0B5 5402101H: MEM->AR: 0000 0E00 10F0 0002102H: SR-MEM->Q,接受标志: 0000 0E01 01D0 0080103H: S=1(即AR<[ADDR])时,条件转移到105: 0041 43B0 9080 0000104H: Q->MEM,CC#=0: 0029 0300 1020 0010105H: SR+MEM->Q: 0000 0E00 00D0 0080106H: Q->MEM,CC#=0: 0029 0300 1020 0010A800MOV R1,900MOV R2,7MOV R3,100LDMCRETG800A820MOV R7,0001MOV R1,0002MOV [082A],R1NOPNOPRETE826D407 082AG820U820运行结果如下:0820:2C70 0001 MOV R7, 00010822:2C10 0002 MOV R1, 00020824:3401 082A MOV [082A],R10826:D407 DW D4070827:082A ADC R2, R100828:AC00 RET0829:0000 NOP082A:0003 NOP……结果分析:由于运行前SR=R7=0001<[ADDR]=[082A]=0002,故运行后[ADDR]=0003=SR+[ADDR],结果正确.更换数据测试:>E8210821 0001:0002>G820>U820运行结果如下:0820:2C70 0002 MOV R7, 00020822:2C10 0002 MOV R1, 00020824:3401 082A MOV [082A],R10826:D407 DW D4070827:082A ADC R2, R100828:AC00 RET0829:0000 NOP082A:0000 NOP……结果分析:由于运行前SR=R7=0002=[ADDR]=[082A]=0002,故运行后[ADDR]=0000=SR-[ADDR],结果正确.(2) 设计一条指令,比较SR内容与[ADDR].若SR<[ADDR],则IP+OFFSET->PC;否则SR+[ADDR]->DR.指令格式:D4 DR SRADDROFFSET设计分析:100:把PC的值(即ADDR的地址)送到AR中101:用MEM->AR将ADDR的值从内存中取出并送到AR中102:利用MEM->Q将[ADDR]的值从内存中取出然后送到Q寄存器中103:SR-Q,并让个标志位接收运算结果,以便根据标志位进行条件转移104:降OFFSET的地址送到AR中并且PC+1,若S=1(即SR<[ADDR]),条件转移到106,否则顺序执行105105:SR>=[ADDR]时,SR+Q->DR,结束106:AR<[ADDR]时转移到此处,计算IP+OFFSET并送到PC中微程序:100H: PC->AR,PC+1->PC: 0000 0E00 A0B5 5402101H: MEM->AR: 0000 0E00 10F0 0002102H: MEM->Q: 0000 0e00 00f0 0000103H: SR-Q:改变标志位:0000 0e01 9200 0088104H:S=1(即SR<[ADDR])时,条件转移到106,PC->AR,PC+1->PC: 0041 83B0 A035 5402105H: SR+Q->DR,CC#=0: 0029 0311 B000 0088106H: IP+MEM->C,CC#=0: 0029 0310 30D6 5000装载微码:A800MOV R1,900MOV R2,7MOV R3,100LDMCRETG800A820mov r1,0002mov [0890],r1nopnopnopretmov r0,1111RetE824D487 0890 00041)RR7 :0001SR(0001)<ADDR(0002)时R0=11112) RR7:0004SR(0004)>ADDR(0002)R8=00063) RR7:0002SR(0002)=ADDR(0002) R8=0004(3) 设计一条指令。

将SR与绝对地址ADDR单元内容比较,如果SR<[ADDR],则[ADDR]-SR->[ADDR],否则,[ADDR]+SR->[ADDR]。

指令格式:D4 0 SRADDR设计分析:先取出[ADDR]中的值,然后用SR-[ADDR]->Q来计算二者的差值,并利用运算所得的标志位判断比较二者的大小以进行条件转移:当S=1时,说明SR<[ADDR],程序跳转执行[ADDR]-SR->Q,然后将Q的值写回[ADDR];否则,顺序执行[ADDR]+SR->Q,并将Q的值写回[ADDR]中。

微程序:100H: PC->AR, 0000 0E00 90B0 5002 101H: MEM->AR: 0000 0E00 10F0 0002 102H: SR-MEM->Q,接受标志: 0000 0E01 01D0 0080 103H: S=1(即SR<[ADDR])时,条件转移到106: 0041 43B0 9080 0000 104H:SR+MEM->Q,转移到105: 0041 8310 00D0 0080 105H: MEM-SR->Q: 0000 0E00 02D0 0080 106H: Q->MEM,CC#=0: 0029 0300 1020 0010 加载微程序:E900 输入以上微码(2) 加载到微控存程序段微码存放在900H(或某内存单元)开始的内存单元中>A8000800:MOV R1,900 ;微码在内存中的首地址0802:MOV R2,7 ;共9条微指令0804:MOV R3,100 ;微码在微控存中的首地址0806:LDMC ;加载微码指令0807:RET0808:>G800 ;加载微指令到控制存储器(3) 运行程序段>A820MOV R1,01 ;R1是指令中的SR,用它和DATA比较MOV R2,02MOV [082A],R2NOPNOPNOPNOPRET>E826输入以下内容:D401 082A(4) 运行结果>G820 ;运行程序结果:1.(SR=01)<([ADDR]=02)时[ADDR]=00012. >E8210002(SR=02)=([ADDR]=02)时[ADDR]=0004(4)设计一条条件转移指令。

将SR与内存单元DA TA的值进行比较,1)如果SR<DATA,则DATA+SR->DR,2)如果SR≥DA TA,则ADDR->PC指令格式:D4 DR SRDATAADDR设计分析:一开始要将PC即DA TA的地址送到AR,并PC+1->PC,因为两种情况下PC都至少要指向第三行ADDR处。

从存储器中取出DA TA的值,把SR和DA TA的值相减,让各个标志位接收运算结果,并根据标志位S的值判断条件转移,同时要再将PC 即ADDR的地址送到AR中并PC+1->PC1)当S=1时,SR<DA TA,转移到105去执行SR+DA TA->DR2)否则,SR≥DA TA,顺序执行ADDR->PC微程序100H: PC->AR,PC+1->PC: 0000 0E00 A0B5 5402101H: mem->Q: 0000 0e00 00f0 0000103H: SR-Q:改变标志位:0000 0e01 9200 0088104H:S=1(即SR<[ADDR])时,条件转移到105,PC->AR,PC+1->PC: 0041 43B0 A035 5402104H:MEM->PC,CC#=0: 0029 0300 30F0 5000a8105H:SR+Q->DR,CC#=0: 0029 0311 B000 0088(2) 加载到微控存程序段微码存放在900H(或某内存单元)开始的内存单元中>A8000800:MOV R1,900 ;微码在内存中的首地址0802:MOV R2,6 ;共6条微指令0804:MOV R3,100 ;微码在微控存中的首地址0806:LDMC ;加载微码指令0807:RET0808:>G800 ;加载微指令到控制存储器(3) 运行程序段>A820MOV R1,01 ;R1是指令中的SR,用它和DATA比较NOPNOPNOPRET>A82AMOV R8,10F0 ;大于等于时,将会跳到82A执行这条赋值指令RET>E822输入以下内容:D421 0088 082A(4) 运行结果>G820 ;运行程序结果:1.SR(0001)<DA TA(0088)时DR(R2)=00892.>E8210001:0088SR(0088)=DA TA(0088)时R8=10F0>E8210088:0099Sr(0099)>DA TA(0088)时R8=10F0(5)把用绝对地址表示的内存单元ADDR1的内容与内存单元ADDR2的内容相加,结果存到ADDR1单元中。

一. 实验器材TEC-2实验计算机、电脑各一台二. 实验分析与设计1. 指令格式指令格式:D4XXADDR1ADDR22. 指令功能功能:[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. 微程序100:PC+1→AR:0000 0E00 90B5 5402101: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→AR:0000 0E00 10F0 0002 105:PC+1→PC: 0000 0E00 A0B5 5400 106:MEM+Q→Q:0000 0E01 00E0 0000 107:Q→MEM,CC#=0:0029 0300 1020 00105. 加载到微控存程序段说明:微码存放在900H(或某内存单元)开始的内存单元中>A800↙0800:MOV R1,900 ;微码在内存中的首地址0802:MOV R2,8 ;微指令条数0804:MOV R3,100 ;微码在微控存中的首地址0806:LDMC ;加载微码指令0807:RET0808:6. 运行程序段>A820↙0820:MOV R0,00110822:MOV [0890],R00824:MOV [0891],R00826:NOP0827:NOP0828:NOP0829:RET>E826↙然后输入以下内容:D400 0890 08917. 运行结果>G820↙用D命令查看运算结果>D890↙则屏幕显示0890:0022 0011•(6) 设计一条半字交换指令指令格式:D8 DR 02. 指令功能DR(I15-I8)与DR(I7-I0)的内容互换3. 设计分析1)将DR的内容送到Q寄存器中,并启用4号命令,因为预备循环8次,所以下地址字段要写7;2)用8号命令重复循环,让Q和DR中的数据联合左移8次,Q中的高8位作为填充移入到DR的第八位,就相当于完成了DR中数据高低位的交换;3)循环结束后,顺序执行.4. 微程序110:DR→Q,4#:0001 C400 8030 0008111:R0Q→R0Q(联合左移),8#:0000 0806 E030 0208112:CC#: 0029 0300 9030 00085. 加载到微控存程序段说明:微码存放在900H(或某内存单元)开始的内存单元中>A800↙0800:MOV R1,900 ;微码在内存中的首地址0802:MOV R2,3 ;微指令条数0804:MOV R3,110 ;微码在微控存中的首地址0806:LDMC ;加载微码指令0807:RET0808:6. 运行程序段>A820↙0820:MOV R0,80F00822:NOP0824:N0P0825:NOP0827:NOP0828:RET>E822↙然后输入以下内容:D8007. 运行结果>G820↙用D命令查看运算结果>R↙则屏幕显示(7)设计一条指令,实现的功能是:当DR=SR时,原PC(IP)+OFFSET→PC;当DR<SR时,ADDR→PC,否则,顺序执行下条汇编指令。

相关主题