TEC2+指令设计题集.docx

上传人:b****5 文档编号:24701894 上传时间:2023-05-31 格式:DOCX 页数:21 大小:20.49KB
下载 相关 举报
TEC2+指令设计题集.docx_第1页
第1页 / 共21页
TEC2+指令设计题集.docx_第2页
第2页 / 共21页
TEC2+指令设计题集.docx_第3页
第3页 / 共21页
TEC2+指令设计题集.docx_第4页
第4页 / 共21页
TEC2+指令设计题集.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

TEC2+指令设计题集.docx

《TEC2+指令设计题集.docx》由会员分享,可在线阅读,更多相关《TEC2+指令设计题集.docx(21页珍藏版)》请在冰豆网上搜索。

TEC2+指令设计题集.docx

TEC2+指令设计题集

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

若SR<[ADDR],则SR+[ADDR]->[ADDR];否则SR-[ADDR]->[ADDR].

指令格式:

D40SR

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:

00000E00A0B55402

101H:

MEM->AR:

00000E0010F00002

102H:

SR-MEM->Q,接受标志:

00000E0101D00080

103H:

S=1(即AR<[ADDR])时,条件转移到105:

004143B090800000

104H:

Q->MEM,CC#=0:

0029030010200010

105H:

SR+MEM->Q:

00000E0000D00080

106H:

Q->MEM,CC#=0:

0029030010200010

A800

MOVR1,900

MOVR2,7

MOVR3,100

LDMC

RET

G800

A820

MOVR7,0001

MOVR1,0002

MOV[082A],R1

NOP

NOP

RET

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

>G820

>U820

运行结果如下:

0820:

2C700002MOVR7,0002

0822:

2C100002MOVR1,0002

0824:

3401082AMOV[082A],R1

0826:

D407DWD407

0827:

082AADCR2,R10

0828:

AC00RET

0829:

0000NOP

082A:

0000NOP

……结果分析:

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

 

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

若SR<[ADDR],则IP+OFFSET->PC;否则SR+[ADDR]->DR.

指令格式:

D4DRSR

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<[ADDR]),条件转移到106,否则顺序执行105

105:

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

106:

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

微程序:

100H:

PC->AR,PC+1->PC:

00000E00A0B55402

101H:

MEM->AR:

00000E0010F00002

102H:

MEM->Q:

00000e0000f00000

103H:

SR-Q:

改变标志位:

00000e0192000088

104H:

S=1(即SR<[ADDR])时,

条件转移到106,PC->AR,PC+1->PC:

004183B0A0355402

105H:

SR+Q->DR,CC#=0:

00290311B0000088

106H:

IP+MEM->C,CC#=0:

0029031030D65000

装载微码:

A800

MOVR1,900

MOVR2,7

MOVR3,100

LDMC

RET

G800

A820

movr1,0002

mov[0890],r1

nop

nop

nop

ret

movr0,1111

Ret

E824

D48708900004

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],否则,[ADDR]+SR->[ADDR]。

指令格式:

D40SR

ADDR

设计分析:

先取出[ADDR]中的值,然后用SR-[ADDR]->Q来计算二者的差值,并利用运算所得的标志位判断比较二者的大小以进行条件转移:

当S=1时,说明SR<[ADDR],程序跳转执行[ADDR]-SR->Q,然后将Q的值写回[ADDR];否则,顺序执行[ADDR]+SR->Q,并将Q的值写回[ADDR]中。

微程序:

100H:

PC->AR,00000E0090B05002

101H:

MEM->AR:

00000E0010F00002

102H:

SR-MEM->Q,接受标志:

00000E0101D00080

103H:

S=1(即SR<[ADDR])时,条件转移到106:

004143B090800000

104H:

SR+MEM->Q,转移到105:

0041831000D00080

105H:

MEM-SR->Q:

00000E0002D00080

106H:

Q->MEM,CC#=0:

0029030010200010

加载微程序:

E900输入以上微码

(2)加载到微控存程序段

微码存放在900H(或某内存单元)开始的内存单元中

>A800

0800:

MOVR1,900;微码在内存中的首地址

0802:

MOVR2,7;共9条微指令

0804:

MOVR3,100;微码在微控存中的首地址

0806:

LDMC;加载微码指令

0807:

RET

0808:

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

(3)运行程序段

>A820

MOVR1,01;R1是指令中的SR,用它和DATA比较

MOVR2,02

MOV[082A],R2

NOP

NOP

NOP

NOP

RET

>E826

输入以下内容:

D401082A

(4)运行结果

>G820;运行程序

结果:

1.(SR=01)<([ADDR]=02)时

[ADDR]=0001

2.>E821

0002

(SR=02)=([ADDR]=02)时

[ADDR]=0004

(4)设计一条条件转移指令。

将SR与内存单元DATA的值进行比较,

1)如果SRDR,

2)如果SR≥DATA,则ADDR->PC

指令格式:

D4DRSR

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:

00000E00A0B55402

101H:

mem->Q:

00000e0000f00000

103H:

SR-Q:

改变标志位:

00000e0192000088

104H:

S=1(即SR<[ADDR])时,

条件转移到105,PC->AR,PC+1->PC:

004143B0A0355402

104H:

MEM->PC,CC#=0:

0029030030F05000a8

105H:

SR+Q->DR,CC#=0:

00290311B0000088

(2)加载到微控存程序段

微码存放在900H(或某内存单元)开始的内存单元中

>A800

0800:

MOVR1,900;微码在内存中的首地址

0802:

MOVR2,6;共6条微指令

0804:

MOVR3,100;微码在微控存中的首地址

0806:

LDMC;加载微码指令

0807:

RET

0808:

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

(3)运行程序段

>A820

MOVR1,01;R1是指令中的SR,用它和DATA比较

NOP

NOP

NOP

RET

>A82A

MOVR8,10F0;大于等于时,将会跳到82A执行这条赋值指令

RET

>E822

输入以下内容:

D4210088082A

(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.指令功能

功能:

[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:

00000E0090B55402

101:

MEM→AR:

00000E0010F00002

102:

MEM→Q:

00000E0000F00000

103:

PC→AR,PC+1→PC:

00000E00A0B55402

104:

MEM→AR:

00000E0010F00002

105:

PC+1→PC:

00000E00A0B55400

106:

MEM+Q→Q:

00000E0100E00000

107:

Q→MEM,CC#=0:

0029030010200010

5.加载到微控存程序段

说明:

微码存放在900H(或某内存单元)开始的内存单元中

>A800↙

0800:

MOVR1,900;微码在内存中的首地址

0802:

MOVR2,8;微指令条数

0804:

MOVR3,100;微码在微控存中的首地址

0806:

LDMC;加载微码指令

0807:

RET

0808:

6.运行程序段

>A820↙

0820:

MOVR0,0011

0822:

MOV[0890],R0

0824:

MOV[0891],R0

0826:

NOP

0827:

NOP

0828:

NOP

0829:

RET

>E826↙

然后输入以下内容:

D40008900891

7.运行结果

>G820↙

用D命令查看运算结果

>D890↙

则屏幕显示

0890:

00220011•••

(6)设计一条半字交换指令

1.指令格式

指令格式:

D8DR0

2.指令功能

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#:

0001C40080300008

111:

R0Q→R0Q(联合左移),8#:

00000806E0300208

112:

CC#:

0029030090300008

5.加载到微控存程序段

说明:

微码存放在900H(或某内存单元)开始的内存单元中

>A800↙

0800:

MOVR1,900;微码在内存中的首地址

0802:

MOVR2,3;微指令条数

0804:

MOVR3,110;微码在微控存中的首地址

0806:

LDMC;加载微码指令

0807:

RET

0808:

6.运行程序段

>A820↙

0820:

MOVR0,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.指令格式

指令格式:

D4DRSR

OFFSET

ADDR

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;接受标志:

00000E0191100088

101:

PC->AR,DR=SR时跳到104:

0041037090305002

102:

PC->AR,PC+1->PC,DR

004143B0B0305402

103:

PC+1->PC,DR>SR时执行下条指令:

00290300B0305400

104:

IP+OFFSET(MEM)->PC:

0029030030D65000

105:

ADDR(MEM)->PC:

0029030030F05000

 

(2)加载到微控存程序段

4.加载到微控存程序段

说明:

微码存放在900H(或某内存单元)开始的内存单元中

>A800↙

0800:

MOVR1,900;微码在内存中的首地址

0802:

MOVR2,6;微指令条数

0804:

MOVR3,100;微码在微控存中的首地址

0806:

LDMC;加载微码指令

0807:

RET

0808:

5.运行程序段

>A820↙

0820:

MOVR7,7

0822:

MOVR8,8

0824:

MOVR0,0

0826:

NOP

0827:

NOP

0828:

NOP

0829:

NOP

082A:

MOVR0,4444

082C:

RET

082D:

MOVR0,5555

082F:

RET

0830:

MOVRO,7777

0832:

RET

>E826↙

然后输入以下内容:

D47800070830

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.指令格式

指令格式:

D40SR

ADDR

3.设计分析

根据实验册Page45后的<<微指令分析及功能描述表根据指令的功能和指令格式,在读取地址ADDR单元内容后暂时放置于Q寄存器中,然后将SR(R8)与Q寄存器内容相加,其结果也暂存放在Q寄存器中,此时,由于地址寄存器AR中存放的恰好是地址ADDR,因此只要将Q寄存器内容写入存储器就可以完成所需的指令功能。

4.微程序

100:

PC→AR,PC+1→PC:

00000E00A0B55402

101:

MEM→AR:

00000E0010F00002

102:

MEM→Q:

00000E0000F00000

103:

Q+SR→Q:

00000E0180800080

104:

Q→MEM,CC#=0:

0029030010200010

5.加载到微控存程序段

(一)用”A”命令输入加载微码的程序

在命令行提示符状态下输入:

>A800↙

0800:

MOVR1,900;微码在内存中的首地址

0802:

MOVR2,5;微指令条数

0804:

MOVR3,100;微码在微控存中的首地址

0806:

LDMC;加载微码指令

0807:

RET

0808:

(二)用”G”命令运行加载微码的程序

在命令行提示符状态下输入:

>G800

微码便装入起始地址为100H的微控存中.

6.输入程序并运行新命令

(一)用”A”命令输入程序

在命令行提示符状态下输入:

>A820

0820:

MOVR0,0011

0822:

MOVR8,0001

0824:

MOV[0890],R0

0826:

NOP

0827:

NOP

0828:

RET

(二)用”E”命令输入新指令

在命令行提示符状态下输入:

>E826

0826:

D40008900891

7.用”G”命令运行程序

在命令行提示符状态下输入

>G820

然后用”D”命令察看运行结果

在命令行提示符状态下输入:

>D890

屏幕将显示:

08900012

0891单元为0012,即为正确的运算结果.

(9)设计一条符号扩展指令

1.指令功能

功能:

DR符号扩展→DR

2.指令格式

指令格式:

D8DR0

3.设计分析

根据指令的功能和指令格式:

(1)对寄存器保存的低位字节的8位有符号补码数进行逻辑左移操作,左移9位,空出的低位补0;

(2)对其进行算术右移操作,右移9位,空出的高位用最高位(符号位)填补,这样即可将其扩展为16位的同值补码数;

(3)结果仍保存在原寄存器中,完成指令功能;

4.微程序

100:

R/C=8:

0002040080300000

101:

DR→DR逻辑左移9次:

00000806F0300208

102:

R/C=8:

0002040080300000

103:

DR→DR算术右移9次,CC#=0:

00290F20D0300108

5.加载到微控存程序段

(一)用”A”命令输入加载微码的程序

在命令行提示符状态下输入:

>A800

0800:

MOVR1,900;微码在内存中的首地址

0802:

MOVR2,4;微指令条数

0804:

MOVR3,100;微码在微控存中的首地址

0806:

LDMC;加载微码指令

0807:

RET

0808:

(二)用”G”命令运行加载微码的程序

在命令行提示符状态下输入:

>G800

微码便装入起始地址为100H的微控存中.

6.输入程序并运行新命令

(一)用”A”命令输入程序

在命令行提示符状态下输入:

>A820

0820:

MOVR9,00FF

0822:

NOP

0823:

RET

(二)用”E”命令输入新指令

在命令行提示符状态下输入:

>E822

然后输入以下内容:

D890

7.察看运行结果

>G820

>R

R9=FFFF

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 制度规范

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1