喜欢的话请给个关注或者点个赞再走吧,你们的支持是我创作的动力!
谢谢你们 祝大家早日上岸 点个收藏吧!后续会有考研真题更新哦!
基本概念: 指令 和 指令系统 是计算机最基本的概念,指令 是 计算机执行某些操作的 代码。一台计算机 所有指令的集合 构成该机的指令系统,也称 指令集。
指令本质上都是机器语言,也就是字节
单字长指令 为一个字节,双字长指令 为为两个字节。
一条指令就是机器的一条语句,它是一组有意义的二进制代码,指令的基本格式。指令的选择和确定不仅涉及 操作码字段 、地址码字段 还涉及 指令长度 。 如下
操作码: 指明了指令 操作性质 和 功能 。
地址码: 给出了 操作数 的 地址。
指令长度: 指令长度是指一段二进制指令代码的 位数 。它的长度取决于 操作码字段 的长度、操作数地址的个数、长度。
半字长指令长度: 指令长度 = 半个机器字长的指令
PS: 机器字长是指计算机进行一次整数运算所能处理的二进制数据的位数。
单指令长度: 指令长度 = 一个机器字长的指令
单字长指令 为一个字节
双指令长度: 指令长度 = 两个机器字长的指令
双字长指令: 为两个字节
在一个指令系统中,所有指令的长度都是 相等 的。
在一个指令系统中,所有的指令系统长度因功能 而异 。
例如:对于一般的 双操作数运算类 指令而言,除了操作码外,指令还应包含地址码。
即 指令 = 操作码 + 地址码。 地址最多分为四条:
在指令中明显地给出的地址称为 显地址
在指令中用隐含的方式给出的地址称为 隐地址
又因为 指令 所含地址个数的不同分为 五 类 地址指令。
四地址指令 即有四个显地址 的指令。
指令格式 如下
指令的含义 如下
Ai表示地址,(Ai)表示取出地址中的操作数
至少访问 5次 主存,第一次取指令,第二次取第一操作数,第三次取第二操作数,第四次取保存操作结果,第五次取下一指令执行地址。
缺点:指令长度太长
三地址指令 即有三个隐地址 的指令。
地址不明显给出,而是使用 程序计算器PC 来存放指令地址。
PC (Program calculate )
通常每执行一条命令,PC就自动加1,并从计算器PC中取出下一条地址。 这样就可以直接得到下一条的指令地址。而不用每次都从主存中取出指令。
至少访问 四次 主存,第一次取指令,第二次去第一操作数,第三次取第二操作数,第三次保存运算结果。
缺点:虽去除一个地址,但地址仍然很长,只在大型机器上使用,小型的很少使用了。
二指令地址 即 有两个显地址 的指令
指令格式 如下
在三地址指令的基础上,第一操作数同时兼作存放结构的地址
同样也至少访问4次地址。
一地址指令 即只有一个显地址 的指令。
只需要访问两次主存,第一次取指令本身,第二次取第二操作数。
隐含的操作数 在专门的寄存器中 取出(累加寄存器ACC)
第一操作数在 acc中
A1属于第二操作数
即只有 操作码字段而没有地址码字段的指令
计算机系统每一条指令都有一个唯一确定的 操作码 ,指令不同,其 操作码的编码 也不同。一般都希望用最短的操作码去表达全部的指令。根据 指令操作码的编码 不同可以将操作码分成 规整型 和 非规整型 两类。
这是一种最简单的编码方式,操作码的 位数 和 位置 是固定的。
假定指令系统 共有 m 条指令,指令中 操作码字段的位数是 n位
则有规定 如下
变长编码的 操作数字段 的位数是不固定的,且分散在指令字的 不同位置上 、这种方式能够有效地压缩 操作码字段 的 平均长度。
**要解决的问题:**显然 操作数字段 的 位数 和 位置 不固定将增加指令 译码 和 分析 的难度。为了解决这一个问题最常用的方式是使用 扩展操作码法 去进行 变长编码。
在一条指令上,操作码字段 和 地址码字段 的长度 在某种意义上是相互制约的。为了解决这一矛盾,通常 让 操作数地址 个数多的指令(如三地址指令)的 操作码字段 尽量短些,操作数地址 个数少的指令的 操作码字段 尽量长些。
即操作数地址多的指令操作码短,操作数地址多的指令操作码长些。
这样一来就能充分地利用的指令的各个字段,又能在不增加指令长度的情况上 扩展操作码 的位数,使它能表达更多的指令。
所谓寻址就是寻址 操作数的地址 或 下一条要执行的指令 地址
寻址技术 包括 编址方式 和 寻址方式
在计算机之中,编址方式 是对各种 存储设备 进行编码的方式。