我们现在有了一个新的寄存器,叫做指令寄存器。它包含一个字节,不同的内容表示控制部分的不同操作模式。也被称为指令代码。指令寄存器是一个字节,因此可能有多达256条不同的指令。所有指令都涉及在总线上移动字节。指令将导致字节进出RAM,进出寄存器,有时通过ALU。下面我们来认识一下计算机中简单的几种指令集吧。

算术逻辑指令

第一类指令时使用ALU的类型,像前面提到的ADD,NOT,SHL等8种类型,有的类型有两个字节的输入,有的类型有一个字节输出。所以ALU这类指令将选择一个ALU操作和两个寄存器。

指令代码有8个bit,当第一个bit是1时候,表示这是一条ALU指令,然后接下来三bit告诉选择ALU的哪个操作,接着两bit是选择的一个寄存器,在接着两bit是选择的另外一个寄存器。

因此如图,ALU指令(1)将(000)寄存器2(10)和寄存器3(11)相加,并将答案放入寄存器3,将是:1000 1011。布线如下:

上面是算术逻辑指令的代码,为了更好的记着这些CPU指令的含义,有这样一个速记发明,它被称为计算机语言,ALU指令产生的新语言的前八个单词是如下,当一个人想要编写一个计算机程序时,他可以直接在指令代码中编写,或者使用计算机语言。当然,如果你用计算机语言编写一个程序,它必须被翻译成实际的指令代码,然后才能放入RAM并执行。

加载与存储指令

加载和存储指令非常简单。它们在RAM和寄存器之间移动一个字节。

前面ALU指令是IR第一位打开,还有八种类型不是ALU指令,第一位关闭时候进入这八种类型指令,并使用IR的接下来三位来准确地告诉我们我们有哪种类型的命令。

本节介绍使用解码器前两个输出的指令,即IR以0000或0001开头时出现的指令。第一条指令将一个字节从RAM移动到寄存器,这称为“加载”指令。另一个则相反,它将一个字节从寄存器移动到RAM,称为“存储”指令。

Load指令的指令代码为0000,Store指令的指令码为0001。在这两种情况下,剩余的四位都指定了两个寄存器,就像ALU指令一样,但在这种情况下,一个寄存器将用于选择RAM中的一个位置,另一个寄存器则将从该RAM位置加载或存储到该RAM位置。

对于这两个指令,步骤4是相同的。其中一个寄存器由IR位4和5选择,并在总线上启用。然后将总线设置为MAR,从而在RAM中选择一个地址。

在步骤5中,IR位6和7选择另一个CPU寄存器。对于Load指令,RAM被启用到总线上,总线被设置到所选寄存器中。对于存储指令,所选寄存器被启用到总线上,总线被设置到RAM中。这些指令中的每一个只需要两个步骤就可以完成,第6步什么不做。

数据指令

数据指令所做的只是将一个字节从RAM加载到寄存器中,就像上面的load指令一样。但它的不同之处在于,它需要指令在RAM中的哪个位置获得该字节。

在Data指令中,数据来自下一条指令的位置。所以你可以考虑这个指令实际上有两个字节!第一个字节是指令,下一个字节是一些将被放入寄存器的数据。这个数据很容易找到,因为当我们在IR中有指令时,IAR已经更新了,所以它指向这个字节。

这是Data指令的指令代码。第0位至第3位为0010位。第4位和第5位未使用。第6位和第7位选择将加载第二字节数据的寄存器。

这条指令需要做的就是,在步骤4中,将IAR发送到MAR,在步骤5中,将RAM发送到所需的CPU寄存器。然而,还有一件事需要发生。由于指令的第二个字节只是可以是任何数据的数据,所以我们不希望将第二个字符作为指令执行。我们需要第二次向IAR添加1,以便它跳过这个字节并指向下一条指令。我们将以同样的方式在步骤1和3中执行。在步骤4中,当我们将IAR发送到MAR时,我们将利用ALU正在计算IAR加上一些东西的事实,同时我们将打开“总线1”,并将答案设置为ACC。步骤5仍然将数据移动到寄存器,在步骤6中,我们可以将ACC移动到IAR。

这是数据指令形成的计算机语言:

认识计算机中的简单指令集相关推荐

  1. 科学计算机中logo,简单做了个Logo~

    科学空间Logo 简单为blog设计了个Logo,虽说是设计,其实也就是简单地把量子力学中路径积分的被积函数$e^{\frac{i}{\hbar}S}$拿过来了. Logo的主体是一个"S& ...

  2. 通过一个最简单的HTTP服务器工具软件(如http文件服务器-hfs2),建立一个临时的HTTP文件服务,使能通过手机浏览器等访问下载你的计算机中指定的文件

    通过一个最简单的HTTP服务器工具软件(如http文件服务器-hfs2),建立一个临时的HTTP文件服务,使能通过手机浏览器等访问下载你的计算机中指定的文件 1.先到网上下载http文件服务器-hfs ...

  3. sat数学可以用计算机吗,原来SAT数学真没想象中那么简单!

    原标题:原来SAT数学真没想象中那么简单! 众所周知数学是中国学生的强项,很多报考SAT的学生都能拿到很高的分数甚至满分.很多人都说美国高考数学只相当于国内初中水平,就在这种"妖言惑众&qu ...

  4. 【计算机系统】 信息在计算机中的表示和内存地址与空间的简单理解

    1. 信息在计算机系统中的表示 我们知道,信息在计算机系统中是以二进制的方式进行传送,存储的.那么信息在计算机系统中是如何表示的呢?在这里可分为数值信息和非数值信息两个方面进行讨论. 数据信息分类示意 ...

  5. 计算机中软件和硬件的简单介绍

    硬件 1.        cpu是一台计算机的运算核心和控制核心.其功能主要是解释计算机指令以及处理计算机软件中的数据.CPU由运算器.控制器.寄存器.高速缓存及实现它们之间联系的数据.控制及状态的总 ...

  6. 计算机中的字节对齐问题

    [转载]http://www.cnblogs.com/clover-toeic/p/3853132.html 引言 考虑下面的结构体定义: 1 typedef struct{ 2 char c1; 3 ...

  7. 【转帖】超能课堂(186) CPU中的那些指令集都有什么用?

    超能课堂(186) CPU中的那些指令集都有什么用? https://www.expreview.com/68615.html 不明觉厉 开始的地方 第一大类:基础运算类x86.x86-64及EM64 ...

  8. [从零学习汇编语言] - 计算机中的硬件与软件

    文章目录 前言 一. 汇编语言简介 1.1 什么是汇编语言 1.2 机器语言简介 1.3 汇编语言的演变史 1.4 汇编语言的广义组成 二.硬件与软件 2.1 思考 2.2 计算机的硬件构成 (1)存 ...

  9. 【2020/12/4修订】【梳理】计算机组成与设计 第1章 计算机中的常见概念(docx)

    配套教材: Computer Organization and Design: The Hardware / Software Interface (5th Edition) 第一章 计算机中的常见概 ...

最新文章

  1. 西湖大学教授:都说不唯论文,那我们发表论文是为了什么?
  2. 一文看尽谷歌AI全年重大研究突破,Jeff Dean执笔,全程干货
  3. 环境变量设置及第三方模块安装
  4. TACACS 协议简介与开发总结
  5. 请MM吃饭之工厂模式实现
  6. Linux 系统双网卡绑定 bond的7种模式
  7. [C++11]智能指针简单介绍
  8. springboot(十二)-分布式锁(redis)
  9. [VB]在状态栏中显示帮助信息
  10. emq 重启_EMQ集群
  11. 机器学习代码实战——网格搜索和交叉验证(GridSearchCV)
  12. python aiml_Python:用aiml构建英语聊天机器人
  13. sql根据经纬度计算距离
  14. 用计算机能算重量加权平均长度吗,利用计算器求平均数检测试题与*
  15. 图书销售系统需求分析获取
  16. 一文彻底搞懂替罪羊树
  17. 【组队学习】【38期】组队学习内容详情!
  18. Win11勒索软件防护怎么打开?Win11安全中心勒索软件防护如何设置
  19. java练习之输入一个字母,如果是小写,转换成大写并输出,如果是大写就不变化并输出。
  20. 关于STM32 程序烧录不进去

热门文章

  1. 2.6.1 ADSL技术
  2. OpenCV实现基于形状的模板匹配(附源码)
  3. 【项目实战课】基于BiLSTM+CRF的命名实体识别实战
  4. 第九章、Ansible基于roles角色管理大项目
  5. Flink批处理metaspace内存溢出问题
  6. win10 Cplex20.1.0安装 + Setup the Python API for Cplex
  7. mysql导入数据库失败解决方法
  8. Win8 消费者预览版中文版下载地址 官方原版
  9. linux 查看文件大小命令
  10. Nmap、MSF、Netcraft、nslookup、whois信息收集工具使用