【学习计算机组成原理】指令格式(术语少,俗话多)

指令的基本格式

包括操作码和地址码
在这里插入图片描述
操作码:表示指令是干什么的
地址码:表示操作数的地址

比喻:
在军队中,长官命令士兵:“开枪击杀张三罪犯”,相应的,操作码就是开枪击杀,地址码就是张三。张三是用来标识一个人的名字,和地址的功能相同。知道了名字张三,就知道目标是哪个具体的人。同样,知道了操作数地址,就知道了操作的是哪个具体的数。
(理解时,和现实生活结合是个不错的方法)

指令长度
一条指令中所包含的二进制的位数,等于操作码字段与地址码字段的二进制位数和。
有些电脑的指令长度固定,有些电脑的指令长度不固定。

比喻:
对应就是长官发出的命令的字数,对于上面的比喻,8个字,指令长度就是8。


下面开始学习操作码和地址码😀

操作码

说白了就是一串数字,每个数字代表一个具体的功能。比如,我规定1代表加,2代表减,3代表乘,4代表除
根据长度是否固定分为规整型和非规整型
规整型
一听它的名字就知道这串数字很规整,所以它是定长编码

由于数字是2进制,假如我用长度是3的操作码,那么它最多可表示23个功能,也就是8个功能。当有9个功能需要表示时,我只能增加操作码的长度,规定长度是4,此时它最多可表示16个功能,尽管我只有9个功能,我用掉其中的9个数字,剩下7个数字就浪费掉了,叫它们非法操作码。
非规整型
与上面相反,是变长编码
由于大多数电脑的指令长度是定长的,所以操作码字段的长度和地址码字段的长度相互制约。

总长一定,其中一个长了,另一个就短

所以呢,操作数地址个数少的指令,它的操作码就长

介绍一种最常用的非规整型编码方式【扩展操作码法】
基本思想就是:较短的操作码不能是较长的操作码的前缀。
下面是用11来区分操作码的长度,假如指令是11 11 10 01 10,我一看,高位有4个1(两组11),说明该操作码是6位长。
用指令长度是8位的指令示意
3地址指令
在这里插入图片描述
2地址指令
在这里插入图片描述
1地址指令
在这里插入图片描述
0地址指令
在这里插入图片描述
这样就可以表示3种3地址指令,3种2地址指令,3种1地址指令,4种0地址指令,共13种指令。
如果是规整型的,我们只能以3地址指令为基准,用最高2位表示指令,这样只能表示4种指令(00、01、10、11)

是不是有种木桶效应的感觉呢?


让我们看看地址码是个什么鬼😜

地址码的结构

根据操作数地址的多少,介绍以下5种常用的结构:
下面2,3,4,5呢,针对的都是需要2个操作数的运算,比如加减乘除,需要2个输入,并有1个输出
通常情况下,有个东西(叫PC)保存着指令执行的先后次序,如果没有指定下一条指令的地址,就按顺序执行指令。

  1. 零地址指令
    无操作数,只有操作码
  2. 一地址指令
    一个操作数加一个操作码
    1个输入数的地址
    另一个输入数到固定的地方取就行,输出数到固定的地方存
  3. 二地址指令
    两个操作数加一个操作码
    2个输入数的地址
    输出数保存在1个输入数的地址
  4. 三地址指令
    三个操作数加一个操作码
    2个输入数的地址,1个输出数的地址
  5. 四地址指令
    四个操作数加一个操作码
    2个输入数的地址,1个输出数的地址,1个下条指令的地址。

~bye

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序鸡

如果帮到您,点个赞鼓励一下吧。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值