微指令设计 联系客服

发布时间 : 星期日 文章微指令设计更新完毕开始阅读05b9fb41db38376baf1ffc4ffe4733687f21fc37

(1) 设计一条指令,比较SR内容与[ADDR].

若SR<[ADDR],则SR+[ADDR]->[ADDR]; 否则SR-[ADDR]->[ADDR]. 指令格式:

ADDR 设计分析:

100:把PC的值(即ADDR的地址)送到AR中,然后PC+1 101:用MEM->AR将ADDR从内存中取出并送到AR中

102:利用SR-MEM->Q计算SR与[ADDR]的差,并让各标志位接受ALU的运算结果, 103:若S=1(即SR<[ADDR]),条件转移到105,否则顺序执行104 104:将Q的值(即SR-[ADDR])送到[ADDR]中

105:AR<[ADDR]时转移到此处,计算SR+[ADDR]并送到Q寄存器中 106:将Q寄存器的值送到[ADDR]中 微程序:

100H: PC->AR,PC+1->PC: 0000 0E00 A0B5 5402 101H: MEM->AR: 0000 0E00 10F0 0002 102H: SR-MEM->Q,接受标志: 0000 0E01 01D0 0080 103H: S=1(即AR<[ADDR])时,条件转移到105: 0041 43B0 9080 0000 104H: Q->MEM,CC#=0: 0029 0300 1020 0010 105H: SR+MEM->Q: 0000 0E00 00D0 0080 106H: Q->MEM,CC#=0: 0029 0300 1020 0010 A800 MOV R1,900 MOV R2,7 MOV R3,100 LDMC RET G800 A820 MOV R7,0001 MOV R1,0002 MOV [082A],R1 NOP NOP RET E826 D407 082A G820 U820

运行结果如下:

0820:2C70 0001 MOV R7, 0001

D4 0

SR

0822:2C10 0002 MOV R1, 0002 0824:3401 082A MOV [082A],R1 0826:D407 DW D407 0827:082A ADC R2, R10 0828:AC00 RET 0829:0000 NOP 082A:0003 NOP

……结果分析:由于运行前SR=R7=0001<[ADDR]=[082A]=0002,故运行后[ADDR]=0003=SR+[ADDR],结果正确.

更换数据测试: >E821

0821 0001:0002 >G820 >U820

运行结果如下:

0820:2C70 0002 MOV R7, 0002 0822:2C10 0002 MOV R1, 0002 0824:3401 082A MOV [082A],R1 0826:D407 DW D407 0827:082A ADC R2, R10 0828:AC00 RET 0829:0000 NOP 082A:0000 NOP

……结果分析:由于运行前SR=R7=0002=[ADDR]=[082A]=0002,故运行后[ADDR]=0000=SR-[ADDR],结果正确.

(2) 设计一条指令,比较SR内容与[ADDR].

若SR<[ADDR],则IP+OFFSET->PC;否则SR+[ADDR]->DR. 指令格式:

ADDR OFFSET

D4 DR SR

设计分析:

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,否则顺序执行105

105:SR>=[ADDR]时,SR+Q->DR,结束

106:AR<[ADDR]时转移到此处,计算IP+OFFSET并送到PC中 微程序:

100H: PC->AR,PC+1->PC: 0000 0E00 A0B5 5402

101H: MEM->AR: 0000 0E00 10F0 0002 102H:

MEM->Q: 0000 0e00 00f0 0000

103H: SR-Q:改变标志位: 0000 0e01 9200 0088 104H:S=1(即SR<[ADDR])时,

条件转移到106,PC->AR,PC+1->PC: 0041 83B0 A035 5402 105H: SR+Q->DR,CC#=0: 0029 0311 B000 0088 106H: IP+MEM->C,CC#=0: 0029 0310 30D6 5000 装载微码: A800 MOV R1,900 MOV R2,7 MOV R3,100 LDMC RET G800 A820 mov r1,0002 mov [0890],r1 nop nop nop ret mov r0,1111 Ret E824

D487 0890 0004 1) RR7 :0001

SR(0001)

SR(0004)>ADDR(0002) R8=0006 3) RR7:0002

SR(0002)=ADDR(0002) R8=0004

(3) 设计一条指令。将SR与绝对地址ADDR单元内容比较,如果SR<[ADDR],则[ADDR]-SR->[ADDR],否则,[ADDR]+SR->[ADDR]。 指令格式:

ADDR

D4 0

SR

设计分析:

先取出[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(或某内存单元)开始的内存单元中 >A800

0800:MOV R1,900 ;微码在内存中的首地址 0802:MOV R2,7 ;共 9条微指令

0804:MOV R3,100 ;微码在微控存中的首地址 0806:LDMC ;加载微码指令 0807:RET 0808:

>G800 ;加载微指令到控制存储器

(3) 运行程序段 >A820

MOV R1,01 ;R1是指令中的SR,用它和DATA比较 MOV R2,02 MOV [082A],R2 NOP NOP NOP NOP RET >E826

输入以下内容:D401 082A

(4) 运行结果

>G820 ;运行程序 结果:

1.(SR=01)<([ADDR]=02)时 [ADDR]=0001 2. >E821 0002