计组_简单模型机器_三字节指令和二字节指令(软件仿真)

从仿真软件中看:

每个框内分为指令码和指令的操作数
二字节指令:指令码+操作数
三字节指令:指令码+操作数+操作数

这里的操作码通过散转(j(1)等)可以计算出该条指令的微程序入口地址(指令的第一条微指令的地址)
操作数其实是操作数的地址.
在这里插入图片描述

在这里插入图片描述

微指令表

在这里插入图片描述
在这里插入图片描述

微指令操作码和微指令的跳转

在这里插入图片描述
首先,指令操作码是保存再内存上值/也可以理解是一种指令的记号(执行该条指令就是执行一系列的微指令,该指令的最后一条微指令的下址位01H)
而指令中的每一条具体的微指令代码(24位二进制(8位16进制数)是可以被解析成7段有具体含义的字段(包括BTO,OTB,FUNC,FS,S3-S0MCi,N,Next;每个字段都被定义了具体的含义,他们的组合体自然也有对应的含义(其中前17位传到微指令寄存器中,后7位传到微地址寄存器作为指令跳转的下址)
我们可以根据7个字段的dataSheet来编辑出我们符合我们的功能要求的自定义的24位微指令代码(比如在指定内存地址处编辑一条减法指令(当然也包括了7位下址)
S3-S0MCi这6位是自定义的重点(编辑新指令时可以参考已有的指令集)
一个要求就是,微指令的入口地址码(7位二进制,2位16进制的地址代码)不能够和已有的微指令集中的某一条发生冲突

为了利用编辑好的微指令,需要结合
微指令的入口地址(微地址)(存在微存储器中)
内存地址(主存储器)
(存储指令码,操作数本身及数据的地址;可见,地址寄存器AR对于任何和内存访问(读取/写入(读取包括指令码和操作数,写入一般只有操作数)相关的位操作都是必要的
程序计数器PC则是用于帮助计算机有序地(或从无序恢复到之前访问的地方继续向下)访问
一般来说,PC是通过+1来推进,所以是连续的;而AR的值可能是由memory中的某个表示操作数地址的值所更新,即,AR所存的地址往往不是连续的,但是因为访存操作必须通过AR来指定内存位置,所以PC就可以帮助我们回到上次顺序访问中途离开的地方)继续访问内存)
内存中的指令码(指令码将会从内存中被取出来放到指令寄存器IR中;由于内存中的值不都是指令码,所以不是所有的值都会被赋值给IR(IR是用来配合散转微指令J(i)的))(两位十六进制,其本身不表示某条微指令的微地址)而是赋值给IR后,配合J(1)散转,切换到需要的微指令的入口(某条微指令的微地址),来调度指令执行的顺序(每一个指令码所引导执行的一系列微指令的最后一条是01H(以回到开始,(程序计数器PC+1),继续使用J(1)散转执行新的指令码所指示的一系列微指令操作,如此反复),实现预期的功能

J(1)散转是J(1)散转微指令下址和指令寄存器的指令码的切片[I5:I2]按照一定规则计算出一个微程序的入口指令地址(微地址)进行指令序列的执行

在这里插入图片描述

检查模型及是否按预期所想执行的方法

在这里插入图片描述

设计减法

在这里插入图片描述
从加法到减法:
在这里插入图片描述
20H处可自定义预装被减数,比如80H(通过input输入减数)
在这里插入图片描述

posted @   xuchaoxin1375  阅读(25)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2023-01-23 LA@初等变换@行阶梯形矩阵@行最简形矩阵@等价标准形矩阵
2022-01-23 windows@控制面板ControlPane@system32和syswow64目录下的程序@命令行启动控制面板的特定页面
点击右上角即可分享
微信分享提示