代码编织梦想

        本节我们学习了控制计算机跳转指令的第三个发明的由来,以及清除指令。并且展示了计算机的整体控制部分的布线图。

第三个发明

        对于跳转指令,有时它会跳转,有时不会。跳或不跳只是两种可能性,所以只需要一个bit就可以确定哪一种会发生。计算机的第三个伟大发明,是用来确定这个bit的。

        还记得我们之前讲过的ALU部件的“进位”吗?加法或者移位会产生这个“进位”。另外有个bit告诉我们两个输入是否相等,一个bit告诉我们a输入是否较大,还有一个bit告诉我们ALU的输出是否全为零。这些bit的使用是我们还没有提及的东西。这四位将被称为“标志”位,它们将用于决定“Jump If”指令是执行RAM中的下一条指令还是跳转到其他地址。

        我们试图让计算机完成的是,首先执行一条ALU指令,然后有一条或多条“Jump If”指令。“Jump If”将根据ALU指令期间发生的情况跳转或不跳转.

        当然,当“Jump If”执行时,ALU指令的结果早已消失。如果你回过头来看ALU指令的细节,只有在步骤5中,所有正确的输入才会进入ALU,并且得到想要的答案。此时,答案被设置为ACC。所有四个标志位的开启时间相同,它们仅在ALU指令的步骤5期间有效。因此,我们需要一种方法将标志位的状态保存为ALU指令步骤5期间的状态。

        这是我们要添加到CPU的最后一个寄存器。这将被称为FLAG寄存器,我们将只使用其中的四位,每个标志一个。来自ALU的标志位连接到该寄存器的输入端,它将在ALU指令的第5步期间被设置,就像ACC一样,它将一直保持设置状态,直到下一次执行ALU指令。因此,如果有一条ALU指令后跟一条“Jump If”指令,“标志”位可以用来“决定”是否跳转。

        每个指令周期都使用步骤1中的ALU向下一条指令的地址加1,但只有ALU指令的步骤5有设置标志的连接。(我们没有在ALU指令的布线中显示这种连接,因为我们还没有引入Flag Reg,但它将出现在完整的控制部分图中。)Flag位和Jump IF指令的组合是第三个也是最后一个伟大的发明,使我们今天所知的计算机能够工作。

        这是“Jump If”指令的指令代码。指令的后四位告诉CPU应该检查哪个标志。在与要测试的标志相对应的指令位中输入“1”。如果您测试的任何一个标志打开,则跳转将发生。这种安排为我们提供了许多决定是否跳的方法。如果跳转被执行,则有第二个字节包含要跳转到的地址

        这是控制部分的接线,使跳转指令起作用。

        第4步将IAR移动到MAR,因此我们准备好获得“跳转到地址”,如果我们跳转,我们将使用它。但因为我们可能不会跳转,我们还需要计算RAM中下一条指令的地址。因此,步骤4也打开总线1并在ACC中设置答案。

        在步骤5中,我们将ACC移动到IAR,这样我们就可以在不跳转的情况下获取下一条指令。

        第6步是做出“决定”的地方。如果AND门的第三个输入打开,我们将把指令的第二个字节从RAM移到IAR。第三个输出来自有四个输入的OR门。这四个输入来自与IR中的Jump If指令的最后四位进行AND运算后的四个Flag位。例如,如果指令的“等于”位中有“1”,并且“等于”标志位处于启用状态,则跳转将发生。

        这里有更多关于我们计算机语言的单词。”“J”表示跳跃,“C”表示进位,“A”表示A较大,“E”表示A等于B,“Z”表示答案全部为零。下面是测试单个Flag的语言

        您还可以通过在四个位中的多个位中输入1来同时测试多个标志位。实际上,由于有四个位,所以有16种可能的组合,但四个位都关闭的组合没有用,因为它永远不会跳。为了完整起见,以下是其余的可能性。

清除标志指令

        当进行加法或者移位时候,我们有可能通过操作打开进位标志。但会出现的问题是,如果您只是添加两个单字节数字,那么您不关心任何先前的进位,但进位标志可能仍然是从先前的操作中设置的。在这种情况下,你可以加上2+2,得到5!

        因此,我们需要一个清除标志指令,在出现意外进位问题的任何加法或移位之前使用该指令。这是此指令的指令代码。不使用第4、5、6,7的bit位。

        这条线路非常简单,也有点棘手。我们不会在总线上启用任何东西,因此它和“A”ALU输入将全部为零。我们将打开“总线1”,因此“B”输入为0000 0001。我们不会向ALU发送操作,因此它将处于ADD模式。因此,ALU将0和1相加,可能存在进位输入。然后答案将是0000 0001或0000 0010。但不会有进位输出,答案不是零,B大于A,因此“等于”和“大于A”都将关闭。此时,当所有四个标志位都关闭时,我们“设置”标志寄存器

        对应的计算机语言:

计算机的整体控制部分

        我们现在已经连接了CPU的控制部分。因此,我们可以在RAM中放置一系列指令,时钟、步进器、指令寄存器和连线将获取并执行这些指令。以下是整个控制部分:

        这看起来很复杂,但是我们前面已经拆分见过了它的所有子部分。因为大多数“enable”和“set”需要多个连接,所以还需要添加一些或门。这实际比RAM部件少很多,但重复性要更大。比较混乱的地方是接线。

        我们前面介绍的导致某个活动发生的是放在指令寄存器的指令代码,另外一个名称是“机器语言”,这是计算机理解的唯一语言(代码)。下面是所有指令代码和机器语言,我们在计算机上的所有操作都只是CPU执行一系列指令的结果。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u010420283/article/details/127974921

计算机编程领域最伟大的20个发明-爱代码爱编程

1 第一台计算机:“差分机”(1821年) “差分机”是1821年由英国政府委托科学家巴贝奇设计而成的,这台机器能提高乘法速度和改进对数表等数字表的精确度。但由于其过高的设计成本,其后续的大型差分机的制作最后以失败而告终。 2 第一台通用计算机:“分析机”(1834年) “分析机”也是一个机械计算机,它输入方式为打孔纸带,纸带上包含了程

涉及计算机程序的发明专利申请的解读_山上有佛光的博客-爱代码爱编程_计算机软件设计专利

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!             

计算机的历史——到底谁是第一台计算机?_a杨一的博客-爱代码爱编程_第一台计算机

(计算机的英文原词“computer”是指从事数据计算的人。而他们往往都需要借助某些机械计算设备或模拟计算机。) 沿着时间轴我们可以大概将计算机的发展历史分为四个阶段 目录   1.机械计算设备时代 1.1机械形式计算向电子式计算转变的一些关键点     1.1.1二进制的提出 11.1.2程序概念的出现 1.1.3穿孔纸带及穿孔卡片的

被认为是世界史上50个最伟大的发明有哪些?-爱代码爱编程

来源:数学中国 根据美国《大西洋月刊》杂志邀请了世界上12位科学家、技术史专家、工程师、企业高管组成的专家团为世界遴选自车轮(车轮的广泛使用一般被认为始于6000年前)问世后的50个最伟大的发明。其中,中国的四大发明均在其中。 《大西洋月刊》已成为美国最受尊敬的杂志。它的发行量曾达到了47万份,每期有120万人在阅读。是"美国国家杂志奖"

网络计算机知识 发明人,人类历史上最伟大的发明之一——计算机必须了解的基础知识!...-爱代码爱编程

概述 人类历史上出现过许多的计算方法,包括结绳,算盘,算筹,手摇机械计算器,电动机械计算器等等。它们在不同的时期发挥了不同的作用,它们的出现为计算机的出现奠定了基础! 计算机的发展 计算机的发展包括四个阶段,第一个阶段是1946年到1959年,在这个阶段计算机的主要特征是计算机的主要电子器件是电子管,内存是汞延迟线,外存储器是穿孔卡片,纸带,处理

计算机网络代表第几次革命,互联网:人类生产力的第三次革命-爱代码爱编程

首先回顾一下第三次工业革命。他的定义是:人类文明史上继蒸汽技术革命和电力技术革命之后科技领域里的又一次重大飞跃。以原子能、电子计算机、空间技术和生物工程的发明和应用为主要标志,涉及信息技术、新能源技术、新材料技术、生物技术、空间技术和海洋技术等诸多领域的一场信息控制技术革命。 书本上由于没有系统的划分第三次工业革命的定义,只是给了一个大概的定义。不过

计算机的发展经历阶段应用领域,谈谈20世纪人类最伟大的发明之一电子计算机的发展历程...-爱代码爱编程

电脑现在成为我们日常生活、工作、学习中必不可少的工具,我想现在每个人的家里应该都有吧,那么你知道电子计算机是什么时候发明的吗,又是谁发明的呢,今天我将为大家介绍一下电子计算机的发展历程。 1、第一台数字式电子计算机 电子计算机是20世纪人类最伟大的发明之一,一般我们认为,世界上第一台数字式电子计算机诞生于1946年的2月,它是由美国人开发的,简

电子计算机的发明和应用,电子计算机发明于哪一年-爱代码爱编程

打开考生文件夹8下的Word文档WORD1.DOC,其内容如下: 【WORD1.DOC文档开始】 信息与计算机 在进入新世纪的时候,让我们回过头来看一看,什么是20世纪最重要的技术成果?人们可以列举出许许多多,但是相信最具一致的看法是:电子计算机堪称20世纪人类最伟大、最卓越、最重要的技术发明之一。 人类过去所创造和发明的工具或机器都是人类四肢

高中结业考试计算机试题及答案,高中计算机会考试题及答案-爱代码爱编程

高中计算机会考试题及答案 高中计算机会考试题及答案(1) 高中计算机会考试题及答案,可以用 Ctrl+F 组合键来查找题目,会非常方便。 一箩筐的复制过来的,难免题目会重复。 判断题中“T” 为正确, “F” 为错误 在资源管理器中,双击扩展名为“.BMP“的文件,Windows98 会自动打开什么应用程序窗口 ( B ) 。 A、写字板 B、画笔

关于计算机发展的新闻,科技发展的一大进步——计算机的发明-爱代码爱编程

我们如今方方面面都是离不开计算机的,作为二十世纪的科技产物,它原始的用途可不是来方便我们日常生活的。 今天我们一起来了解一下这个伟大的发明是如何演变成今天我们习以为常的存在。 计算机由硬件和软件两大部分所组成。它通过连接电源,使得高速计算的电子机器来进行数学运算。而最初研究这个机器时,只是为了方便美国军方的弹道研究。在1946年的美国宾夕法尼亚

人类发明的第一代电子计算机,谈谈20世纪人类最伟大的发明之一电子计算机的发展历程...-爱代码爱编程

电脑现在成为我们日常生活、工作、学习中必不可少的工具,我想现在每个人的家里应该都有吧,那么你知道电子计算机是什么时候发明的吗,又是谁发明的呢,今天我将为大家介绍一下电子计算机的发展历程。 1、第一台数字式电子计算机 电子计算机是20世纪人类最伟大的发明之一,一般我们认为,世界上第一台数字式电子计算机诞生于1946年的2月,它是由美国人开发的,简

第一代电子计算机采用的物理器,第一章 计算机基础知识-爱代码爱编程

第一章计算机基础知识 1.1计算机概述 电子计算机是一种能够自动、高速地进行算术和逻辑运算的电子设备。它是二十世纪科学技术发展最伟大的发明创造之一,是第三次工业革命中出现的最辉煌成就。目前,电子计算机已被广泛地应用于科学技术、国防建设、工农业生产以及人民生活等各个领域,对国民经济、国防建设和科学文化事业的发展产生了巨大的推动作用。今天,计算机的应用

计算机是根据易经发明的,不懂历史和易经的人总是自欺欺人的说洋鬼子根据易经发明了计算机...-爱代码爱编程

请看真正的历史是什么: 第一:早在1679年,莱布尼茨就已完成了论文《二进制算术》的草稿。文中,莱布尼茨不仅详尽说明了“二进制”的算术原理,而且还给出了加、减、乘、除四则运算的规则。值得一提的是,今天人们使用的很多数学符号,比如分数符号、比例符号、对数符号 “log”等,也是由莱布尼茨发明的。 第二:1701年,莱布尼茨给在北京的法国传教士

人类社会发明的第一台计算机是什么,第二周第一课概述计算机-爱代码爱编程

《第二周第一课概述计算机》由会员分享,可在线阅读,更多相关《第二周第一课概述计算机(18页珍藏版)》请在人人文库网上搜索。 1、电子计算机是20世纪最伟大的发明之一,半个世纪的发展,电 子计算机早已家喻户晓,计算机的应用遍及人类社会的各个领域,极大 地推动了人类社会的进步与发展。由计算机技术和通信技术相结合而形 成的信息技术是现代信息社会最重要的技术