408考研计算机之计算机组成与设计——知识点及其做题经验篇目2:指令系统

news2025/6/29 14:26:08

        今天我们来讲一讲指令系统里面的知识点以及做题技巧

1、定义

考点1:指令定义

       指令是指示计算机执行某种操作的命令,一台计算机的所有指令的集合构成该机的指令系统,也称为指令集。指令系统是指令集体系结构ISA中最核心的部分,ISA完整定义了软件与硬件之间的接口。

         一条指令就是机器语言的一个语句,这是一组有意义的二进制代码。一条指令通常包括操作码字段以及地址码两部分:

操作码字段地址码字段

       

       其中,操作码指出指令中该指令应该执行什么样的性质的操作以及有何种功能。具体的指令操作类型有:

①数据传送:例如从CPU寄存器写数据到内存单元的STORE指令。

②算数和逻辑运算:例如加ADD、减SUB、与AND、或OR等等。

③移位操作:包括算数移位、逻辑移位、循环移位等。

④转移操作:包括无条件转移JMP、条件转移BRANCH、调用CALL等

⑤输入输出操作

        

        而地址码给出被操作的信息(指令或数据)的地址,包括参加运算的一个或者多个操作数所在的地址、运算结果的保存地址、程序的转移地址、被调用的子程序的入口地址等等。

        其实也很容易理解这些,这就好比有一个海王或者说是时间管理大师,操作码字段就好比是他要去干什么比如说逛街呀、看电影呀诸如此类,而地址码则表明是那几位“舔狗”或者“鱼儿”的编号,表明和谁去进行这个活动。有的时候进行的活动很累或者是需要很多的人,比如说爬山或者是捉迷藏,于是要和好几位鱼儿去进行活动,所以会有好几个地址。

        

        需要特别注意:指令长度与机器字长没有固定关系,既可以等于机器字长,也可以等于机器字长,也可以大于或者等于机器字长。具体关系如下表:

指令长度与机器字长的关系指令名称
指令长度=机器字长单字长指令
指令长度=机器字长×0.5半字长指令
指令长度=机器字长×2双字长指令

        在一个指令系统中,若所有指令的长度都是相等的,则称为定长指令字结构;若各种指令的长度随功能而异,则称为变长指令结构。

        特别注意:主存一般是按照字节编址的,所以指令字长多为字节的整数倍。这一点它不会直接考,它会间接的考这一点,后续有一个题目就是这样,特别阴,一不小心就因为这个错了。

我们先来做一道例题感受一下这一章的难度吧:

例题:以下关于指令系统的说法中的,错误的是():

A.指令系统是一台机器硬件能执行的指令全体

B.任何程序运行前都要先转换为机器语言程序

C.指令系统是计算机软件与硬件的界面

D.单字长指令只有一个操作数

【答案】:D

【解析】:单字长指令的“单”,不是指只有一个操作数,而是说它与机器字长的关系,等于一倍的机器字长。而且我们刚刚还把指令比作“海王”,这是指望海王只钓一条鱼吗?虽然确实有海王只钓了一条鱼,但是不能代表大多数。

2、指令格式

考点2:指令的几种格式

        好的,刚刚谈论到海王,那么有合格的海王,也会有不合格的海王。我们根据指令中操作数地址码的数目不同,可将指令分成下面几种格式:

①零地址指令

     

OP

   

        这个是最弱的海王,只有操作码OP,而没有显式地址,有下面两种可能:

        A.真的不需要操作数,比如说空操作指令、停机指令、关中断指令

        B.它是堆栈计算机,它的两个操作数隐含的从栈顶和次栈顶弹出,送到运算器进行运算,运算结果再隐含的压入栈。

②一地址指令

OPA1

        这种海王就是逊啦,它只有一个操作数。不过有两种情况:

        A.只有目的操作数的单操作数指令,按A1地址读取操作数,进行AP操作后,结果存回原地址。例如加一,减一,取反等等。

        用符号语言表示为:OP(A1)\rightarrowA1

        B.隐含约定目的地址的双操作数指令,也就是说,这个海王不是只有一条鱼,而是另一条鱼在别的地方。按指令地址A1课读取源操作数,另一个操作数可由ACC累加器提供,运算结构也将存放在ACC中。

        用符号语言表示为:(ACC)OP(A1)\rightarrowACC

        假设指令字长32位,而操作码占8位,那么一个地址码占24位,寻址范围为16M。

③二地址指令

        这种海王就开始渣了,有两个听话的“舔狗”要受它的摆布。

OPA1A2

        对于常用的算数指令以及逻辑运算指令,往往需要两个操作数,需要分别给出目的操作数和源操作数的地址,其中目的操作数用来保存运算结果。

        用符号语言表示为:(A1)OP(A1)\rightarrowA1

        假设指令字长32位,而操作码占8位,那么一个地址码占12位,寻址范围为4K。

④三地址指令

        是的,你没看错,脚踏三条船,太渣了!

OPA1A2A3

        其中A1、A2代表目的操作数与源操作数,而A3存放运算的结果。

        用符号语言表示为:(A1)OP(A2)\rightarrowA3

        假设指令字长32位,而操作码占8位,那么一个地址码占8位,寻址范围为256。

⑤四地址指令

        我原本以为三地址已经天下无敌了,没想到有人比他还勇猛,四地址指令,厉害,您这已经不属于海王了,您这是海之霸主。

OPA1A2A3A4

        用符号语言表示:(A1)OP(A2)\rightarrowA3,A4=下一条将要执行指令的地址。

        假设指令字长32位,而操作码占8位,那么一个地址码占6位,寻址范围为64。

上题目练练手:

例题:堆栈计算机中,有些堆栈零地址的运算类指令在指令格式中不给出操作数的地址,参加的两个操作数来自_______和__________

【答案】:堆栈的栈顶  次栈顶单元

【解析】:这个写不出来要把课本和文章好好看一下

3、定长操作码与扩展操作码指令格式

        定长操作码指令在指令字的最高位部分分配固定的若干位表示操作码,一般n为操作码字段的指令系统最大能表示2^{n}条指令,定长操作码可以简化计算机硬件设计。

        而对于扩展操作码指令,可以在保持指令字长有限的前提下保持比较丰富的指令种类。具体怎样操作,我们马上来分析。

        比如说对于指令字长为16位的指令,我们用四位表示基本操作码字段OP,剩下的地址字段均为4位,如下图:

OP(4位)A1(4位)A2(4位)A3(4位)

        那么,我们可以用OP的这四位,表示所有三地址指令的数量,最广的范围为0000~1110(不是1111的原因是1111用来提示此时已经是二地址指令了),那么有2^{4}-1=15条三地址指令。

        当我们想表示二地址指令的时候,OP就变为1111,山中无老虎,猴子当霸王,A1它变身了,它要开始发号施令了!它进化为了指令。同理,也可以表示15条指令。同理单地址指令也是如此,也有15条指令。而零地址指令不用留出1111,故有16条。

        这种扩展方式需要满足两个条件:a.不允许短码是长码的前缀,b.各个指令的操作码不能重复

 

        顺着推理特别容易,但是反着推,告诉你零一二三地址有多少条,让你推有多少位,这个就相当麻烦了。我们看一个例题,大家自行感受一下:

例题:某计算机按字节编址,指令字长固定且只有两种指令格式,其中三地址指令有29条,二地址指令有107条,每个地址字段为6位,则指令字长至少应该是()位。

A.21

B.23

C.24

D.32

【答案】:C

【解析】:这一题有一点水平的读者会选B,真正学懂了的会选C。它只有两种指令格式,即三地址以及二地址指令,每个地址字段为6位,所以我们要把OP有多少位算出来,就能解决这一题了对吧?2^{5}> 29> 2^{4},所以很明显,OP有五位,且多出来了3种。那么二地址指令最多有3×2^{6}=192,大于107,满足条件。所以答案是5+6+6+6=23。选B是吧?又错了,按字节编址,说明指令字长至少是八的倍数,选大于23且满足八的倍数的,即24。

        我理解大家可能暂时还看不懂答案,为什么是3×64,来让小编分析一波:首先29比32小3,对吧?然后最后这三个数分别是11101、11110、11111。所以计算机只要发现了OP是这三个数字,就会意识到,这就是一个二地址指令呀,然后在每一个没被三地址指令用到的数字下,A1都能产生64种可能性,所以说二地址指令最多有3×64种。

        想要检测自己是不是真的学懂了,来做一道大题,能做出来很棒,做不出来再接再厉:

假设指令字长为16位,操作数的地址码为6位,指令有零地址、单地址、二地址3种格式。

(1)设操作码固定,若零地址指令有M种,单地址指令有N种,则二地址指令有多少种

(2)采用扩展操作码技术,则二地址指令最多有几种?

(3)采用扩展操作码技术,若二地址指令有P条,零地址指令有Q条,则一地址指令有多少种?

【答案】16-M-N;15;(2^{4}-P)\times2 ^{6}-Q\times 2^{6}

【解析】(1)操作码固定,所以是定长操作码,它有16-6-6=4位,有2^{4}=16种指令,三种指令合起来16种,故二地址指令有16-M-N种

(2)扩展操作码,那么二地址指令最多为2^{4}-1=15种,要留出一种表示此时不是二地址指令了,而是单地址指令或者说零地址指令

(3)OP能表示16种可能性,而二地址指令有P条,所以剩余(16-P)条留给了一地址指令,一地址指最多有(16-P)×2^{6}-1条,设一地址有R条指令,则零地址指令有[(16-P)×2^{6}-R]×2^{6}条。

根据Q=[(16-P)×2^{6}-R]×2^{6},得出R=(2^{4}-P)\times2 ^{6}-Q\times 2^{6}

 

        好的,本期的计算机考研408课就到此为止啦,感兴趣的小伙伴们快来关注一波,您的关注就是对小编最大的支持

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/397224.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

The eXtensible Markup Language (XML)

文章目录前言No.1 - XML 基础概念① 简介No.2 - XML 序列形式与树形式的转换① 一般形式转换② nesting elements 的转换③ 当元素含有属性时的转换总结前言 本系列是 COMPSCI 752 的笔记总结,本文为第一篇,XML No.1 - XML 基础概念 ① 简介 XML 指可…

springboot项目中Quartz

下面内容大家可在自己创建的 springboot项目中 玩1 定时清理垃圾图片定时任务组件Quartz,可以根据我们设定的周期,定时执行目标任务计划1.1 Quartz介绍(了解)Quartz是Job scheduling(作业调度)领域的一个开源项目&…

树莓派3B搭建HomeAssistant,alist,cpolar,plex,transmission

一、手把手教学树莓派搭建homeassistant环境:内存卡16G,树莓派3B,官方工具烧写镜像,我烧的是树莓派系统,设置里面填写用户名密码,WiFi和密码,同时打开SSH服务。安装docker树莓派使用ssh连接了 先…

C++基础了解-05-C++常量

C常量 一、C常量 常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量。 常量可以是任何的基本数据类型,可分为整型数字、浮点数字、字符、字符串和布尔值。 常量就像是常规的变量,只不过常量的值在定义后不能进…

uni-app框架基础知识

uni-app框架基础知识 uniapp就是vue开发,可以使用vue2和vue3的语法,另外编译和运行都最好在HBuilderX中进行生命周期可以使用vue或者小程序的生命周期不同: 最好不要使用vue的路由,直接使用uniapp的路由(它和小程序一…

项目实战典型案例8——让软件的使用者成为软件的设计者

让软件的使用者成为软件的设计者一:背景介绍二:思路&方案公司的产品设计理念如果你设计的软件猪不能使,你就是猪让每一个软件的使用者都成为我们软件的设计者过程四:总结五:升华一:背景介绍 由于同时对…

2020蓝桥杯真题反倍数 C语言/C++

题目描述 给定三个整数 a,b,c,如果一个整数既不是 a 的整数倍也不是 b 的整数倍还不是 c 的整数倍,则这个数称为反倍数。 请问在 1 至 n 中有多少个反倍数。 输入描述 输入的第一行包含一个整数 n。 第二行包含三个整数a,b,c,相邻两个数之…

Stimulsoft Dashboards.WEB 23.1.8 完美Patch

Stimulsoft Dashboards.WEB 在 Web 应用程序中创建仪表板 Stimulsoft Dashboards.WEB 是一种工具,用于在 ASP.NET、.NET Core、ASP.NET MVC 和 Blazor 平台上开发的 Web 应用程序中创建、编辑、导出和查看仪表板。该产品包括各种数据分析和可视化元素,可…

花括号展开II[栈模拟dfs]

栈模拟dfs前言一、花括号展开II二、栈模拟dfs总结参考资料前言 递归调用,代码非常的简洁。但是可以通过显式栈来模拟栈中的内容,锻炼自己的代码能力,清楚知道栈帧中需要的内容。 一、花括号展开II 二、栈模拟dfs 每碰到一个左括号&#xf…

sheng的学习笔记-服务熔断与降级组件Hystrix

在微服务架构中,一个应用往往由多个服务组成,这些服务之间相互依赖,依赖关系错综复杂。例如一个微服务系统中存在 A、B、C、D、E、F 等多个服务,它们的依赖关系如下图。图1:服务依赖关系通常情况下,一个用户…

基于安森美深力科电子一款能实现大功率DC/DC电源转换 NCP13992ACDR2G 全桥LLC方案

基于安森美深力科电子一款能实现大功率DC/DC电源转换 NCP13992ACDR2G 全桥LLC方案 什么是LLC:LLC电路是由2个电感和1个电容构成的谐振电路,故称之为LLC,由于能实现软开关,有效地减小开关损耗和容许高频运行,所以在高频功率变换领…

网关(Gateway)

本文内容网关,网关作用,默认网关,网关和路由器区别网关协议,网关分类NAT网关一、概述网关(Gateway)又称网间连接器、协议转换器。网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议…

计算机网络-- 应用层(day08)

计算机网络两种方式 网络应用程序运行再处于网络边缘的不同端系统上,通过彼此间的通信来共同完成某项任务。 开发一种新的网络应用首先要考虑的问题就是网络应用程序在各种端系统上的组织方式和它们之间的关系。 目前流行的主要有以下两种: 客户/服务器…

libevent 学习笔记

一、参考 libevent Libevent深入浅出 - 《Libevent 深入浅出》 - 书栈网 BookStack libevent 之 event config的相关函数介绍_event_config_new_yldfree的博客-CSDN博客 Libevent之evbuffer详解_有时需要偏执狂的博客-CSDN博客 二、libevent概述 libevent 就是将网络、I…

数组中的逆序对

解题思路1: 看到这个题目,我们的第一反应是顺序扫描整个数组。每扫描到一个数组的时候,逐个比较该数字和它后面的数字的大小。如果后面的数字比它小,则这两个数字就组成了一个逆序对。假设数组中含有n个数字。由于每个数字都要和…

JavaScript的学习

一、引言 1.1 JavaScript简介 JavaScript一种解释性脚本语言,是一种动态类型、弱类型、基于原型继承的语言,内置支持类型。它的解释器被称为JavaScript引擎,作为浏览器的一部分,广泛用于客户端的脚本语言,用来给HTML网…

信息系统基本知识(六)

大纲 信息系统与信息化信息系统开发方法常规信息系统集成技术软件工程新一代信息技术信息系统安全技术信息化发展与应用信息系统服务管理信息系统服务规划企业首席信息管及其责任 1.7 信息化发展与应用 我国在“十三五”规划纲要中,将培育人工智能、移动智能终端…

推荐系统[九]项目技术细节讲解z2:搜索Query理解[Term Weight、Query 改写、同义词扩写]和语义召回技术

搜索Query理解和语义召回技术 随着用户规模和产品的发展, 搜索面临着越来越大的 query 长尾化挑战,query 理解是提升搜索召回质量的关键。本次将介绍搜索在 query term weighting,同义词扩展,query 改写,以及语义召回等方向上的实践方法和落地情况。 1.面临问题:长尾 qu…

h264编码概述八(哥伦布编码ue(v))

一、概述 熵编码是无损编码的一种方法。该编码方法的宗旨是找到一种编码,使得码字的平均码长达到熵极限。具体实施是,对出现概率较大的符号,取较短的码长,对出现概率较小的符号取较大的码长。 H.264中使用的熵编码有:…

【面试1v1实景模拟】面试中常见的Java关键字详解

笑小枫专属目录老面👴:Java中有哪些关键字老面👴:简单介绍一下 final 关键字老面👴:简单介绍一下 this、super 关键字老面👴:简单介绍一下 static 关键字老面👴&#xff…