(1) 设计一条指令,比较SR内容与[ADDR].
若SR[ADDR]; 否则SR-[ADDR]->[ADDR].
指令格式: D4 0 SR
ADDR
设计分析:
100:把PC的值(即ADDR的地址)送到AR中,然后PC+1 101:用MEM->AR将ADDR从内存中取出并送到AR中
102:利用SR-MEM->Q计算SR与[ADDR]的差,并让各标志位接受ALU的运算结果,
103:若S=1(即SR
105:AR
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(即ARMEM,CC#=0: 0029 0300 1020 0010
105H: SR+MEM->Q: 0000 0E00 00D0 0080
106H: Q->MEM,CC#=0:
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 0029 0300 1020
E826
D407 082A
G820
U820
运行结果如下:
0820:2C70 0001 MOV R7, 0001
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
更换数据测试:
>E821
0821 0001:0002
>G820
运行结果如下:
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].
若SRPC;否则SR+[ADDR]->DR. 指令格式: D4 DR SR
ADDR OFFSET
设计分析:
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
105:SR>=[ADDR]时,SR+Q->DR,结束
106:AR
100H: PC->AR,PC+1->PC: 0000 0E00 A0B5 5402
101H: MEM->AR: 0000 0E00 10F0 0002
102H:
00f0 0000
103H: SR-Q:改变标志位: 0000 0e01 9200 0088
104H:S=1(即SR
条件转移到106,PC->AR,PC+1->PC: 0041 83B0 A035 5402
105H: SR+Q->DR,CC#=0: 0029 0311 B000 MEM->Q: 0000 0e00
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
D487 0890 0004
1) RR7 :0001
SR(0001)
R0=1111
2) RR7:0004
SR(0004)>ADDR(0002)
R8=0006
3) RR7:0002
SR(0002)=ADDR(0002) R8=0004
(3) 设计一条指令。将SR与绝对地址ADDR单元内容比较,如果SR[ADDR],否则,[ADDR]+SR->[ADDR]。 指令格式: D4 0 SR
ADDR
设计分析:
先取出[ADDR]中的值,然后用SR-[ADDR]->Q来计算二者的差值,并利用运算所得的标志位判断比较二者的大小以进行条件转移:当S=1时,说明SRQ,然后将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(即SRQ,转移到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
比较
MOV R2,02
MOV [082A],R2
NOP
NOP
NOP
NOP
RET
>E826
输入以下内容:
(4) 运行结果
>G820 ;R1是指令中的SR,用它和DATAD401 082A ;运行程序
结果:
1.(SR=01)
[ADDR]=0001
2. >E821
0002
(SR=02)=([ADDR]=02)时
[ADDR]=0004
(4)设计一条条件转移指令。将SR与内存单元DATA的值进行比较,
1)如果SRDR,
2)如果SR≥DATA,则ADDR->PC
指令格式: D4 DR SR
DATA ADDR
设计分析:
一开始要将PC即DATA的地址送到AR,并PC+1->PC,因为两种情况下PC都至少要指向第三行ADDR处。
从存储器中取出DATA的值,把SR和DATA的值相减,让各个标志位接收运算结果,并根据标志位S的值判断条件转移,同时要再将PC 即ADDR的地址送到AR中并PC+1->PC
1)当S=1时,SRDR
2)否则,SR≥DATA,顺序执行ADDR->PC
微程序
100H: PC->AR,PC+1->PC: 0000 0E00 A0B5 5402
101H: mem->Q: 0000 0e00 00f0 0000
103H: SR-Q:改变标志位: 0000 0e01 9200 0088
104H:S=1(即SR
条件转移到105,PC->AR,PC+1->PC: 0041 43B0 A035 5402
104H:MEM->PC,CC#=0: 0029 0300 30F0 5000a8
105H:SR+Q->DR,CC#=0: 0029 0311 B000 0088
(2) 加载到微控存程序段
微码存放在900H(或某内存单元)开始的内存单元中
>A800
0800:MOV R1,900 ;微码在内存中的首地址
0802:MOV R2,6 ;共 6条微指令
0804:MOV R3,100 ;微码在微控存中的首地址
0806:LDMC ;加载微码指令
0807:RET
0808:
>G800 ;加载微指令到控制存储器
(3) 运行程序段
>A820
MOV R1,01 ;R1是指令中的SR,用它和DATA比较
NOP
NOP
NOP
RET
>A82A
MOV R8,10F0 ;大于等于时,将会跳到82A执行这条赋值指令 RET
>E822
输入以下内容:D421 0088 082A
(4) 运行结果
>G820 ;运行程序
结果:
1.SR(0001)
DR(R2)=0089
2.
>E821
0001:0088
SR(0088)=DATA(0088)时
R8=10F0
>E821
0088:0099
Sr(0099)>DATA(0088)时
R8=10F0
(5)把用绝对地址表示的内存单元ADDR1的内容与内存单元ADDR2的内容相加,结果存到ADDR1单元中。
一. 实验器材
TEC-2实验计算机、电脑各一台
二. 实验分析与设计
1. 指令格式
指令格式: D4XX
ADDR1
ADDR2
2. 指令功能
功能:
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 5402 [ADDR1] + [ADDR2] → [ADDR1]
101:MEM→AR:
102:MEM→Q: 0000 0E00 10F0 0002 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
0029 0300 1020 0010 107:Q→MEM,CC#=0:
5. 加载到微控存程序段
说明:微码存放在900H(或某内存单元)开始的内存单元中 >A800
0800:MOV R1,900
0802:MOV R2,8
0804:MOV R3,100
0806:LDMC
0807:RET
0808:
6. 运行程序段
>A820
0820:MOV R0,0011
0822:MOV [0890],R0 ;微码在内存中的首地址 ;微指令条数 ;微码在微控存中的首地址 ;加载微码指令
0824:MOV [0891],R0
0826:NOP
0827:NOP
0828:NOP
0829:RET
>E826
然后输入以下内容:
D400 0890 0891
7. 运行结果
>G820
用D命令查看运算结果
>D890
则屏幕显示
0890:0022 0011•
(6) 设计一条半字交换指令
1. 指令格式
指令格式: D8
2. 指令功能
DR(I15-I8)与DR(I7-I0)的内容互换
DR 0
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 0008
111:R0Q→R0Q(联合左移),8#:0000 0806 E030 0208
112:CC#:
5. 加载到微控存程序段
说明:微码存放在900H(或某内存单元)开始的内存单元中 >A800
0800:MOV R1,900
0802:MOV R2,3
0804:MOV R3,110
0806:LDMC ;微码在内存中的首地址 0029 0300 9030 0008 ;微指令条数 ;微码在微控存中的首地址 ;加载微码指令
0807:RET
0808:
6. 运行程序段
>A820
0820:MOV R0,80F0
0822:NOP
0824:N0P
0825:NOP
0827:NOP
0828:RET
>E822
然后输入以下内容:
D800
7. 运行结果
>G820
用D命令查看运算结果
>R
则屏幕显示
R0= F080
(7)设计一条指令,实现的功能是:
当DR=SR时,原PC(IP)+OFFSET→PC;
当DR
1. 指令格式
指令格式: D4
2. 设计分析
1) 100:另DR-SR并让各个标志位接受ALU的状态标志; 2)101:PC→AR,将OFFSET的地址送到AR中,然后根据标志位判断,如果零标志位等于1,说明DR=SR,利用下地址字段给出跳转的地址104;
3)102:若零标志位不为1,则由顺寻执行到此处。根据负标志位判断,若为1,则说明DR
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;接受标志: 0000 0E01 9110 OFFSET ADDR DR SR
0088
101:PC->AR,DR=SR时跳到104: 0041
5002
102:PC->AR, PC+1->PC,DR
103:PC+1->PC,DR>SR时执行下条指令: 0029 0300 B030 5400
104:IP+OFFSET(MEM)->PC:
5000
105:ADDR(MEM)->PC:
5000
(2) 加载到微控存程序段
4. 加载到微控存程序段
说明:微码存放在900H(或某内存单元)开始的内存单元中 >A800
0800:MOV R1,900
0802:MOV R2,6
0804:MOV R3,100
0806:LDMC
0807:RET ;微码在内存中的首地址 0029 0300 30F0 0029 0300 30D6 0370 9030 ;微指令条数 ;微码在微控存中的首地址 ;加载微码指令
0808:
5. 运行程序段
>A820
0820:MOV R7,7
0822:MOV R8,8
0824:MOV R0,0
0826:NOP
0827: NOP
0828:NOP
0829: NOP
082A:MOV R0,4444
082C: RET
082D: MOV R0,5555
082F: RET
0830: MOV RO,7777
0832: RET
>E826
然后输入以下内容:
D478 0007 0830
6. 运行结果
1)R7=7,R8=8
>G820
用R命令查看运算结果
R0=7777 (成功跳转至0830处)
2)>E821
输入 0008 (即R7=8,R8=8)
>G820
用R命令查看运算结果
R0=5555 (成功跳转至IP+OFFSET即082D处)
3)>E821
输入 0009 (即R7=9,R8=8)
>G820
用R命令查看运算结果
R0=4444 (成功执行下一条指令,即082A处)
(8)设计一条指令,以实现将SR内容与内存单元ADDR的内容相加,结果存到ADDR单元中。
1.指令功能
功能:[ADDR]+SR→[ADDR]
2.指令格式
指令格式: D4 0 SR
ADDR
3.设计分析
根据实验册Page45后的
4.微程序
100:PC→AR,PC+1→PC: 0000 0E 00 A0 B5 54 02
101:MEM→AR:
102:MEM→Q:
103:Q+SR→Q: 0000 0E 00 10 F0 00 02 0000 0E 00 00 F0 00 00 0000 0E 01 80 80 00 80
0029 03 00 10 20 00 10 104:Q→MEM,CC#=0:
5.加载到微控存程序段
(一)用”A”命令输入加载微码的程序
在命令行提示符状态下输入:
>A800
0800:MOV R1,900
0802:MOV R2,5
0804:MOV R3,100
0806:LDMC
0807:RET ;微码在内存中的首地址 ;微指令条数 ;微码在微控存中的首地址 ;加载微码指令
0808:
(二)用”G”命令运行加载微码的程序
在命令行提示符状态下输入:
>G800
微码便装入起始地址为100H的微控存中.
6.输入程序并运行新命令
(一)用”A”命令输入程序
在命令行提示符状态下输入:
>A820
0820:MOV R0,0011
0822:MOV R8,0001
0824:MOV [0890],R0
0826:NOP
0827:NOP
0828:RET
(二)用”E”命令输入新指令
在命令行提示符状态下输入:
>E826
0826: D400 0890 0891
7.用”G”命令运行程序
在命令行提示符状态下输入
>G820
然后用”D”命令察看运行结果
在命令行提示符状态下输入:
>D890
屏幕将显示:
0890 0012
0891单元为0012,即为正确的运算结果.
(9)设计一条符号扩展指令
1.指令功能
功能:
2.指令格式
指令格式: D8 DR 0
3.设计分析
根据指令的功能和指令格式:
(1)对寄存器保存的低位字节的8位有符号补码数进行逻辑左移操作,左移9位,空出的低位补0;
(2)对其进行算术右移操作,右移9位,空出的高位用最高位(符号位)填补,这样即可将其扩展为16位的同值补码数;
(3)结果仍保存在原寄存器中,完成指令功能;
4.微程序
100:R/C=8: 0002 0400 8030DR 符号扩展→ DR
0000
101:DR→DR逻辑左移9次: 0000 0806 F030 0208 102:R/C=8:
0000 0002 0400 8030
103:DR→DR算术右移9次,CC#=0: 0029 0F20 D030 0108
5.加载到微控存程序段
(一)用”A”命令输入加载微码的程序
在命令行提示符状态下输入:
>A800
0800:MOV R1,900 ;微码在内存中的首地址
0802:MOV R2,4 ;微指令条数
0804:MOV R3,100 ;微码在微控存中的首地址 0806:LDMC ;加载微码指令
0807:RET
0808:
(二)用”G”命令运行加载微码的程序
在命令行提示符状态下输入:
>G800
微码便装入起始地址为100H的微控存中.
6.输入程序并运行新命令
(一)用”A”命令输入程序
在命令行提示符状态下输入: >A820
0820:MOV R9,00FF 0822:NOP
0823:RET
(二)用”E”命令输入新指令 在命令行提示符状态下输入: >E822
然后输入以下内容: D890
7.察看运行结果 >G820
>R
R9=FFFF
免费提供
(1) 设计一条指令,比较SR内容与[ADDR].
若SR[ADDR]; 否则SR-[ADDR]->[ADDR].
指令格式: D4 0 SR
ADDR
设计分析:
100:把PC的值(即ADDR的地址)送到AR中,然后PC+1 101:用MEM->AR将ADDR从内存中取出并送到AR中
102:利用SR-MEM->Q计算SR与[ADDR]的差,并让各标志位接受ALU的运算结果,
103:若S=1(即SR
105:AR
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(即ARMEM,CC#=0: 0029 0300 1020 0010
105H: SR+MEM->Q: 0000 0E00 00D0 0080
106H: Q->MEM,CC#=0:
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 0029 0300 1020
E826
D407 082A
G820
U820
运行结果如下:
0820:2C70 0001 MOV R7, 0001
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
更换数据测试:
>E821
0821 0001:0002
>G820
运行结果如下:
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].
若SRPC;否则SR+[ADDR]->DR. 指令格式: D4 DR SR
ADDR OFFSET
设计分析:
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
105:SR>=[ADDR]时,SR+Q->DR,结束
106:AR
100H: PC->AR,PC+1->PC: 0000 0E00 A0B5 5402
101H: MEM->AR: 0000 0E00 10F0 0002
102H:
00f0 0000
103H: SR-Q:改变标志位: 0000 0e01 9200 0088
104H:S=1(即SR
条件转移到106,PC->AR,PC+1->PC: 0041 83B0 A035 5402
105H: SR+Q->DR,CC#=0: 0029 0311 B000 MEM->Q: 0000 0e00
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
D487 0890 0004
1) RR7 :0001
SR(0001)
R0=1111
2) RR7:0004
SR(0004)>ADDR(0002)
R8=0006
3) RR7:0002
SR(0002)=ADDR(0002) R8=0004
(3) 设计一条指令。将SR与绝对地址ADDR单元内容比较,如果SR[ADDR],否则,[ADDR]+SR->[ADDR]。 指令格式: D4 0 SR
ADDR
设计分析:
先取出[ADDR]中的值,然后用SR-[ADDR]->Q来计算二者的差值,并利用运算所得的标志位判断比较二者的大小以进行条件转移:当S=1时,说明SRQ,然后将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(即SRQ,转移到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
比较
MOV R2,02
MOV [082A],R2
NOP
NOP
NOP
NOP
RET
>E826
输入以下内容:
(4) 运行结果
>G820 ;R1是指令中的SR,用它和DATAD401 082A ;运行程序
结果:
1.(SR=01)
[ADDR]=0001
2. >E821
0002
(SR=02)=([ADDR]=02)时
[ADDR]=0004
(4)设计一条条件转移指令。将SR与内存单元DATA的值进行比较,
1)如果SRDR,
2)如果SR≥DATA,则ADDR->PC
指令格式: D4 DR SR
DATA ADDR
设计分析:
一开始要将PC即DATA的地址送到AR,并PC+1->PC,因为两种情况下PC都至少要指向第三行ADDR处。
从存储器中取出DATA的值,把SR和DATA的值相减,让各个标志位接收运算结果,并根据标志位S的值判断条件转移,同时要再将PC 即ADDR的地址送到AR中并PC+1->PC
1)当S=1时,SRDR
2)否则,SR≥DATA,顺序执行ADDR->PC
微程序
100H: PC->AR,PC+1->PC: 0000 0E00 A0B5 5402
101H: mem->Q: 0000 0e00 00f0 0000
103H: SR-Q:改变标志位: 0000 0e01 9200 0088
104H:S=1(即SR
条件转移到105,PC->AR,PC+1->PC: 0041 43B0 A035 5402
104H:MEM->PC,CC#=0: 0029 0300 30F0 5000a8
105H:SR+Q->DR,CC#=0: 0029 0311 B000 0088
(2) 加载到微控存程序段
微码存放在900H(或某内存单元)开始的内存单元中
>A800
0800:MOV R1,900 ;微码在内存中的首地址
0802:MOV R2,6 ;共 6条微指令
0804:MOV R3,100 ;微码在微控存中的首地址
0806:LDMC ;加载微码指令
0807:RET
0808:
>G800 ;加载微指令到控制存储器
(3) 运行程序段
>A820
MOV R1,01 ;R1是指令中的SR,用它和DATA比较
NOP
NOP
NOP
RET
>A82A
MOV R8,10F0 ;大于等于时,将会跳到82A执行这条赋值指令 RET
>E822
输入以下内容:D421 0088 082A
(4) 运行结果
>G820 ;运行程序
结果:
1.SR(0001)
DR(R2)=0089
2.
>E821
0001:0088
SR(0088)=DATA(0088)时
R8=10F0
>E821
0088:0099
Sr(0099)>DATA(0088)时
R8=10F0
(5)把用绝对地址表示的内存单元ADDR1的内容与内存单元ADDR2的内容相加,结果存到ADDR1单元中。
一. 实验器材
TEC-2实验计算机、电脑各一台
二. 实验分析与设计
1. 指令格式
指令格式: D4XX
ADDR1
ADDR2
2. 指令功能
功能:
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 5402 [ADDR1] + [ADDR2] → [ADDR1]
101:MEM→AR:
102:MEM→Q: 0000 0E00 10F0 0002 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
0029 0300 1020 0010 107:Q→MEM,CC#=0:
5. 加载到微控存程序段
说明:微码存放在900H(或某内存单元)开始的内存单元中 >A800
0800:MOV R1,900
0802:MOV R2,8
0804:MOV R3,100
0806:LDMC
0807:RET
0808:
6. 运行程序段
>A820
0820:MOV R0,0011
0822:MOV [0890],R0 ;微码在内存中的首地址 ;微指令条数 ;微码在微控存中的首地址 ;加载微码指令
0824:MOV [0891],R0
0826:NOP
0827:NOP
0828:NOP
0829:RET
>E826
然后输入以下内容:
D400 0890 0891
7. 运行结果
>G820
用D命令查看运算结果
>D890
则屏幕显示
0890:0022 0011•
(6) 设计一条半字交换指令
1. 指令格式
指令格式: D8
2. 指令功能
DR(I15-I8)与DR(I7-I0)的内容互换
DR 0
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 0008
111:R0Q→R0Q(联合左移),8#:0000 0806 E030 0208
112:CC#:
5. 加载到微控存程序段
说明:微码存放在900H(或某内存单元)开始的内存单元中 >A800
0800:MOV R1,900
0802:MOV R2,3
0804:MOV R3,110
0806:LDMC ;微码在内存中的首地址 0029 0300 9030 0008 ;微指令条数 ;微码在微控存中的首地址 ;加载微码指令
0807:RET
0808:
6. 运行程序段
>A820
0820:MOV R0,80F0
0822:NOP
0824:N0P
0825:NOP
0827:NOP
0828:RET
>E822
然后输入以下内容:
D800
7. 运行结果
>G820
用D命令查看运算结果
>R
则屏幕显示
R0= F080
(7)设计一条指令,实现的功能是:
当DR=SR时,原PC(IP)+OFFSET→PC;
当DR
1. 指令格式
指令格式: D4
2. 设计分析
1) 100:另DR-SR并让各个标志位接受ALU的状态标志; 2)101:PC→AR,将OFFSET的地址送到AR中,然后根据标志位判断,如果零标志位等于1,说明DR=SR,利用下地址字段给出跳转的地址104;
3)102:若零标志位不为1,则由顺寻执行到此处。根据负标志位判断,若为1,则说明DR
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;接受标志: 0000 0E01 9110 OFFSET ADDR DR SR
0088
101:PC->AR,DR=SR时跳到104: 0041
5002
102:PC->AR, PC+1->PC,DR
103:PC+1->PC,DR>SR时执行下条指令: 0029 0300 B030 5400
104:IP+OFFSET(MEM)->PC:
5000
105:ADDR(MEM)->PC:
5000
(2) 加载到微控存程序段
4. 加载到微控存程序段
说明:微码存放在900H(或某内存单元)开始的内存单元中 >A800
0800:MOV R1,900
0802:MOV R2,6
0804:MOV R3,100
0806:LDMC
0807:RET ;微码在内存中的首地址 0029 0300 30F0 0029 0300 30D6 0370 9030 ;微指令条数 ;微码在微控存中的首地址 ;加载微码指令
0808:
5. 运行程序段
>A820
0820:MOV R7,7
0822:MOV R8,8
0824:MOV R0,0
0826:NOP
0827: NOP
0828:NOP
0829: NOP
082A:MOV R0,4444
082C: RET
082D: MOV R0,5555
082F: RET
0830: MOV RO,7777
0832: RET
>E826
然后输入以下内容:
D478 0007 0830
6. 运行结果
1)R7=7,R8=8
>G820
用R命令查看运算结果
R0=7777 (成功跳转至0830处)
2)>E821
输入 0008 (即R7=8,R8=8)
>G820
用R命令查看运算结果
R0=5555 (成功跳转至IP+OFFSET即082D处)
3)>E821
输入 0009 (即R7=9,R8=8)
>G820
用R命令查看运算结果
R0=4444 (成功执行下一条指令,即082A处)
(8)设计一条指令,以实现将SR内容与内存单元ADDR的内容相加,结果存到ADDR单元中。
1.指令功能
功能:[ADDR]+SR→[ADDR]
2.指令格式
指令格式: D4 0 SR
ADDR
3.设计分析
根据实验册Page45后的
4.微程序
100:PC→AR,PC+1→PC: 0000 0E 00 A0 B5 54 02
101:MEM→AR:
102:MEM→Q:
103:Q+SR→Q: 0000 0E 00 10 F0 00 02 0000 0E 00 00 F0 00 00 0000 0E 01 80 80 00 80
0029 03 00 10 20 00 10 104:Q→MEM,CC#=0:
5.加载到微控存程序段
(一)用”A”命令输入加载微码的程序
在命令行提示符状态下输入:
>A800
0800:MOV R1,900
0802:MOV R2,5
0804:MOV R3,100
0806:LDMC
0807:RET ;微码在内存中的首地址 ;微指令条数 ;微码在微控存中的首地址 ;加载微码指令
0808:
(二)用”G”命令运行加载微码的程序
在命令行提示符状态下输入:
>G800
微码便装入起始地址为100H的微控存中.
6.输入程序并运行新命令
(一)用”A”命令输入程序
在命令行提示符状态下输入:
>A820
0820:MOV R0,0011
0822:MOV R8,0001
0824:MOV [0890],R0
0826:NOP
0827:NOP
0828:RET
(二)用”E”命令输入新指令
在命令行提示符状态下输入:
>E826
0826: D400 0890 0891
7.用”G”命令运行程序
在命令行提示符状态下输入
>G820
然后用”D”命令察看运行结果
在命令行提示符状态下输入:
>D890
屏幕将显示:
0890 0012
0891单元为0012,即为正确的运算结果.
(9)设计一条符号扩展指令
1.指令功能
功能:
2.指令格式
指令格式: D8 DR 0
3.设计分析
根据指令的功能和指令格式:
(1)对寄存器保存的低位字节的8位有符号补码数进行逻辑左移操作,左移9位,空出的低位补0;
(2)对其进行算术右移操作,右移9位,空出的高位用最高位(符号位)填补,这样即可将其扩展为16位的同值补码数;
(3)结果仍保存在原寄存器中,完成指令功能;
4.微程序
100:R/C=8: 0002 0400 8030DR 符号扩展→ DR
0000
101:DR→DR逻辑左移9次: 0000 0806 F030 0208 102:R/C=8:
0000 0002 0400 8030
103:DR→DR算术右移9次,CC#=0: 0029 0F20 D030 0108
5.加载到微控存程序段
(一)用”A”命令输入加载微码的程序
在命令行提示符状态下输入:
>A800
0800:MOV R1,900 ;微码在内存中的首地址
0802:MOV R2,4 ;微指令条数
0804:MOV R3,100 ;微码在微控存中的首地址 0806:LDMC ;加载微码指令
0807:RET
0808:
(二)用”G”命令运行加载微码的程序
在命令行提示符状态下输入:
>G800
微码便装入起始地址为100H的微控存中.
6.输入程序并运行新命令
(一)用”A”命令输入程序
在命令行提示符状态下输入: >A820
0820:MOV R9,00FF 0822:NOP
0823:RET
(二)用”E”命令输入新指令 在命令行提示符状态下输入: >E822
然后输入以下内容: D890
7.察看运行结果 >G820
>R
R9=FFFF
免费提供