计算机微指令对应的机器码.docx

上传人:b****6 文档编号:6041986 上传时间:2023-01-03 格式:DOCX 页数:26 大小:29.78KB
下载 相关 举报
计算机微指令对应的机器码.docx_第1页
第1页 / 共26页
计算机微指令对应的机器码.docx_第2页
第2页 / 共26页
计算机微指令对应的机器码.docx_第3页
第3页 / 共26页
计算机微指令对应的机器码.docx_第4页
第4页 / 共26页
计算机微指令对应的机器码.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

计算机微指令对应的机器码.docx

《计算机微指令对应的机器码.docx》由会员分享,可在线阅读,更多相关《计算机微指令对应的机器码.docx(26页珍藏版)》请在冰豆网上搜索。

计算机微指令对应的机器码.docx

计算机微指令对应的机器码

PC+1→AR00000E0090305402

PC+1→PC00000E00B0305400

PC+1→PC,AR00000E00B0305402

MEM→Q00000E0000F00000

MEM+Q→Q00000E0000E00000

Q→MEM00000E0010200010(DC1选择运算器输出)

MEM+Q→DR00000E0030E00008

MEM*2→DR00000E0070F00008

SR+MEM→Q00000E0000D00080

SR+MEM→DR00000E0030D00088

PC+1→AR00000E0090B05402

PC-1→AR00000E0091B05402

IP+1→AR00000E0090306402

IP+OFFSET→PC00000E0030D65000

ADDR→PC00000E0030F05000

PC→AR,PC+1→PC00000E00A0B55402

DR→AR00000E0090B0000A

SR→AR00000E0090C00082

MEM→AR00000E0010F00002

DR-SR00000E0191100088

SR-MEM00000E0111D00080

Q-MEM00000E0111E00000

(11)比较SR和DR的大小,大于时ADDR1->PC,小于等于[ADDR2]+SR->[ADDR2]:

===========================

     00000e00a0355402

     00000e1192100088

     0042437090000000

     0041435090000000

     0029031030f05000

     00000e00a0355402

     00000e1010f00002

     00000e1000d00080

     0029031010200010

     00000e10b1100088

     00290300b0355400

 >a800

 movr1,900

 movr2,b

 movr3,100

 ldmc

 ret

 >g800↙

 >a820↙

 movr0,2

 movr1,4

 movr2,3

 mov[0890],r2

 nop

 nop

 nop

 ret

 >e828↙

 d41008800890

 >a880↙

 movr3,100

 ret

 >g820↙

 

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

将SR与内存单元DATA的值进行比较,如果SRDR,否则ADDR->PC

===========================

指令格式:

 D4  DR  SR 

  DATA 

  ADDR 

100:

PC->AR,PC+1->PC(data)     00000E00A0B55402                                    

101:

MEM->Q(data=88)            00000E0000F00002                                    

102:

SR-Q,标志            00000E0192800088                                    

103:

S=1时跳到107,否则顺序104          0041D3B080000000                                    

104:

PC->AR(addr)                      00000E00A0B55002                                    

105:

MEM->PC(addr=082A)      00000E1030F55000                                    

106:

CC#=0退出             0029030090100000                                    

107:

SR+Q->DR,标志            00000E10B0800088                              

108:

PC+1->PC,CC#=0退出        00290300B0B55400

 >A800↙

 0800:

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

 0802:

MOVR2,9         ;共9条微指令

 0804:

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

 0806:

LDMC             ;加载微码指令

 0807:

RET

 0808:

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

 >A820↙

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

 NOP

 NOP

 NOP

 RET

 >A82A↙

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

 RET

    >E822↙

       输入以下内容:

D4218882A

运行结果

 >G820↙                       ;运行程序

 结果:

 1.SR

 SR=99

 DATA=100

 DR=199

 2.SR≥DATA时

      SR=99

 DATA=99

 R8=000D

(13)设计一条指令,比较SR内容与[ADDR].如果SR<[ADDR],则SR+[ADDR]->[ADDR];否则SR-[ADDR]->[ADDR].

===========================

100H:

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

   00000E00A0B55402

101H:

MEM->AR:

                 00000E0010F00002

102H:

SR-MEM->Q:

             00000E0101D00080

103H:

条件转移:

                  004143B090800000

104H:

Q->MEM,CC#=0:

       0029030010200010(SR>=MEM)

105H:

SR+MEM->Q:

            00000E0000D00080(SR

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↙

 可以节省一条语句,在执行到105H的时候,让他无条件跳转到104H,就可以了!

则:

105H:

SR+MEM->Q,条件转移:

00410E0000D00080(SR

舍弃106H

 

 (14)设计一条指令,比较SR内容与[ADDR].如果SR<[ADDR],则IP+OFFSET->PC;否则SR+[ADDR]->DR.错误

===========================

100H:

PC->AR:

                        00000E0090B05002

101H:

MEM->AR:

                     00000E0010F00002

102H:

SR-MEM:

                       00000E0111D00080

103H:

条件转移:

                       004183B090800000

104H:

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

   00294E1030D00088

105H:

PC+1->AR:

                    00000E0090B05402

106H:

IP+MEM->PC:

                0029030020D65000

 

 (15)DR>[ADDR]则DR-[ADDR]->DR;DR<=[ADDR]则DR+[ADDR]->DR

===========================

     00000e10a0355402

     00000e1080300008

     00000e1010f0000a

     00000e1111e00000

     0041c37090800000

     0041c35090800000

     0029031031e00008

     0029031030e00008

 >a800

 movr1,900

 movr2,8

 movr3,100

 ldmc

 ret

 >g800↙

 >a820↙

 movr0,5

 nop

 nop

 ret

 >e822↙

 d4000890

 >e890↙

 0003

 >g820↙

设计一条减法指令

把内存单元数据DATA与用绝地址表示的内存单元ADDR的内容相减,结果存到DR寄存器中。

1.指令格式

指令格式:

D4

DR

X

ADDR

DATA

2.指令功能

功能:

DATA-[ADDR]→DR

3.设计分析

根据指令的功能和指令格式,先读取地址ADDR单元内容暂时放置于Q寄存器中,然后再读取内存单元数据DATA内容,同时与Q寄存器内容相减,结果也暂存放在Q寄存器中,最后把Q寄存器的运算结果传到DR中。

4.微程序

100:

PC→AR,PC+1→PC:

00000E00A0B55402

101:

MEM→AR:

00000E0010F00002

102:

MEM→Q:

00000E0000F00000

103:

PC→AR,PC+1→PC:

00000E00A0B55402

104:

MEM-Q→DR,CC#=0:

0029030132E00008

5.加载微码到微控存程序段

说明:

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

>A0800↙

0800:

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

0802:

MOVR2,5;微指令条数

0804:

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

0806:

LDMC;加载微码指令,将微码指令加载到控存

0807:

RET

0808:

>G0800↙

6.运行程序段

>A0820↙

0820:

MOVR0,0004

0822:

MOV[0890],R0

0824:

NOP

0825:

NOP

0826:

NOP

0827:

RET

>E0824↙

然后输入以下内容:

D41008900013

7.运行结果

>G0820↙

>RR1↙

R1=0009

设计一条同值补码数符号扩展指令

设计一条指令,完成对存放在低位的8位有符号补码数进行符号扩展,即将其变为16位的同值得补码数,结果仍保存在原寄存器中。

8.指令格式

指令格式:

D4

DR

X

9.指令功能

功能:

对存放在低位的8位有符号补码数进行符号扩展,即将其变为16位的同值得补码数,结果仍保存在原寄存器中。

10.设计分析

正数的补码中符号位为0,各数位为其本身,负数的补码符号位为1,各数位为其的反,末尾再加一。

那么对于正数的扩展,直接在高8位添0即可。

对于负数的扩展,先假设把它还原成原码,符号位移动到最高位,然后变为反码,则高8位全为1,低8位与未扩展之前相同。

综上,可以把待扩展的补码数通过左移9位得到其符号位,保存在C中。

然后采用8次带符号位的右移操作,得到结果。

11.微程序

100:

8→RC:

0002040080800000

101:

2DR→DR:

00000806F0B00008

102:

8→RC:

0002040080800000

103:

DR/2→DR:

00000800D0B00108

104:

CC#=0:

0029030080000000

12.加载微码到微控存程序段

说明:

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

>A0800↙

0800:

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

0802:

MOVR2,5;微指令条数

0804:

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

0806:

LDMC;加载微码指令,将微码指令加载到控存

0807:

RET

0808:

>G0800↙

13.运行程序段

>A0820↙

0820:

MOVR0,0029

0822:

MOVR1,00A9

0824:

NOP

0825:

NOP

0826:

RET

>E0824↙

然后输入以下内容:

D400

>E0825↙

然后输入以下内容:

D410

14.运行结果

>G0820↙

>RR0↙

R0=0029

>RR1↙

R1=FFA9

设计一条条件控制转移指令

设计一条指令,实现地功能是:

(说明:

其中有一种情况请用SCC=7,IR10~IR8=0~7的条件实现)

当DR=SR时,则IP+OFFSET→PC;

当DR

否则执行下条汇编指令。

(注:

OFFSET为位移量;ADDR为某内存单元地址)

1.指令格式

指令格式:

D9

DR

SR

OFFSET

ADDR

2.指令功能

功能:

当DR=SR时,则IP+OFFSET→PC;

当DR

否则执行下条汇编指令。

3.设计分析

指令通过比较DR和SR的大小实现语句的条件转移。

先对DR和SR作差得到运算结果标志Z和符号标志S。

首先根据Z进行转移,如果Z=1,那么说明DR=SR,跳转到CC#=0;否则顺序执行根据S进行转移,如果S=1,那么说明DRSR。

根据Z转移利用的是SCC=7,IR10~IR8=001的条件实现的,故操作码使用D9;而根据S转移是利用SCC=5的条件实现的。

4.微程序

110:

DR-SR,得到Z和S:

00000E0191100088

111:

PC→AR,PC→Q:

00000E0080305002

112:

IP+MEM→PC,Z=1跳转116:

004583F030D65000

113:

Q+1→Q,Q→AR:

00000E00B0200402

114:

MEM→PC,S=1跳转116:

004583B030F05000

115:

Q+1→PC:

00000E10B0205400

116:

CC#=0:

0029030080000000

或:

110:

DR-SR,得到Z和S:

00000E0191100088

111:

PC→AR,PC+1→PC,Z=1跳转114:

004503E0A0B55402

112:

PC→AR,PC+1→PC,S=1跳转115:

004543B0A0B55402

113:

CC#=0:

0029030080000000

114:

MEM+IP→PC,CC#=0:

0029030030D65000

115:

MEM→PC,CC#=0:

0029031030F05000

5.加载微码到微控存程序段

说明:

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

>A0800↙

0800:

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

0802:

MOVR2,7;微指令条数

0804:

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

0806:

LDMC;加载微码指令,将微码指令加载到控存

0807:

RET

0808:

>G0800↙

6.运行程序段

>A0820↙

0820:

MOVR8,0001;运行三次,R8分别为0,1,2

0822:

MOVR9,0001

0824:

NOP

0825:

NOP

0826:

NOP

0827:

MOVR1,99;若DR>SR,输出99

0829:

RET

082A:

MOVR1,77;若DR=SR,输出77

082C:

RET

082D:

MOVR1,88;若DR

082F:

RET

>E0824↙

然后输入以下内容:

D9890006082D

7.运行结果

>G0820↙

>RR1↙

R1=77(当R8=0时,R1=88,当R8=2时,R1=99)

设计一条半字交换指令

设计一条指令,其功能是把一个通用寄存器中的内容进行半字交换,即将其高低位字节的内容对换。

15.指令格式

指令格式:

D8

DR

X

16.指令功能

功能:

RAMH,RAML→RAML,RAMH

17.设计分析

将DR的内容送去Q。

利用DR和Q组成联合移位,联合右移8位后Q将为所求数,最后将Q送到DR,

18.微程序

100:

DR→Q,7→RC;0001C40080300008

101:

DRQ联合右移→DRQ;00000807C0300208

102:

Q→DR,CC#=0:

00290300B0200018

19.加载到微控存程序段

说明:

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

>A800↙

0800:

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

0802:

MOVR2,3;微指令条数

0804:

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

0806:

LDMC;加载微码指令

0807:

RET

0808:

>G800↙

20.运行程序段

>A820↙

0820:

MOVR9,1289

0822:

NOP

0824:

RET

>E822↙

然后输入以下内容:

D890

21.运行结果

>G820↙

>RR9↙

R9=8912

设计一条条件控制处理与转移指令

设计一条指令,将SR的内容与内存单元数据DATA相比较,如果SR

1.指令格式

指令格式:

D8

DR

SR

DATA

ADDR

2.指令功能

功能:

当SR

当SR>=DATA时,则ADDR→PC

3.设计分析

本次实验要求完成的是一条条件控制指令。

首先,将DATA的地址放到AR,读出DATA放到寄存器Q,利用SR-Q得出标志位SF,再根据标志位SF判断跳转与否,如果SF=1,则跳到115,否则顺序执行114,之后再根据两个不同条件需要完成的操作实现。

4.微程序

110:

PC→AR,PC+1→PC;00000E00A0B55402

111:

MEM→Q;00000E0000F00000

112:

SR-Q;00000E0192000080

113:

SF=1跳转PC→AR,PC+1→PC0045004143B0A0355402

114:

MEM→PCCC#=0;0029030030F05000

115:

SR+Q→DRCC#=0;002903010300B0000088

5.加载微码到微控存程序段

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

>A800↙

0800:

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

0802:

MOVR2,6;微指令条数

0804:

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

0806:

LDMC;加载微码指令,将微码写入控存

0807:

RET

0808:

>G800↙;加载微指令到控存

6.运行程序段

>A820↙

0820:

MOVR7,4444

0822:

MOVR8,4444

0824:

NOP

0825:

NOP

0826:

NOP

0827:

MOVR0,4444

0829:

RET

082A:

MOVR0,5555

082C:

RET

>E826↙

输入以下内容:

D8784445082A

7.运行结果

>G820↙

DATA>SR,DATA=4445,SR=4444,DR=8889

DATA=SR,DATA=4444,SR=4444,R0=5555

DATA

设计一条加法指令

把用绝对地址表示的内存单元ADDR1的内容与内存单元ADDR2的内容相加,结果存到ADDR1单元中。

1.指令格式

指令格式:

D4XX

ADDR1

ADDR2

2.指令功能

功能:

[ADDR1]+[ADDR2]→[ADDR1]

1.设计分析

思路为先把PC指向ADDR2,然后先读取ADDR2,再PC减1,返回去读ADDR1的值,随后进行加法和赋值操作,最后把PC加3,使得PC返回,为执行下一条指令做好准备。

于是有以下操作步骤:

根据指令的功能和指令格式,先执行PC+1→PC,使得指向ADDR2。

读取地址ADDR2单元内容暂时放置于Q寄存器中,然后PC-1→PC,再读取地址ADDR1单元内容,同时与Q寄存器内容相加,结果也暂存放在Q寄存器中,此时,由于地址寄存器AR中存放的正好是地址ADDR1,因此只要将Q寄存器内容写入存储器就可以完成指令功能。

此后,微程序中必须再执行3次PC+1→PC操作,才能确保PC的正确走向。

2.微程序

100:

PC+1→PC:

00000E00A0B55400

101:

P

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

当前位置:首页 > 自然科学

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

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