计算机是怎么RUN起来的

1.实际上计算机只会实现输入、运算、输出 

这三大模块缺一不可,缺少输入意味着没有用户能使用,缺少运算相当于一条电线毫无意义,缺少输出相当于一直堆积信息的垃圾箱

因此计算机的硬件是由大量的IC(Integrated Circuit 集成电路)组成,每块IC上都带有很多引脚,相当于电线,这些引脚都是服务于输入输出,运算可能有点难理解,但简单来时在IC里面实际上变化的是电流变化(具体的变化慢慢了解),人类的对电流的定义,就是数字,而且只有两个数字0和1,这样看来计算机其实有点笨,但是怎么能变化出万种功能呢?

2.程序是指令和数据的集合,无论哪个程序,内容都是数值的罗列,每个数值要么是指令要么是数据。

一组指令操作一段数据,形成最基本的程序

这一组指令统一推荐描述的文字是“函数”

一段数据我们可以分为两类,一类是输入的数据,一类是输出的数据

在编程的时候数据可以赋予名字为“变量”

y=f(x)

3.计算机的处理方式有时候与人类的思维习惯不同

当人描述颜色的时候会形成画面 红色蓝色绿色

当计算机描述颜色的时候会形成颜色的数字信息 例如“255,0,0”表示红色 

4.计算机在一直进化

计算机的思维方式一直在改变且趋向于人类的思考方式,大家应该由衷地欢迎技术的进化,没有人会稀罕一成不变的好代码

编程方法也一直在进化一种是组件编程(将程序的零部件组装到一起完成程序),一种是面向对象编程(先对你脑海中的东西建模,例如建一个车的模型,然后再对模型进行私人订制,称为你创造的独一无二的玛莎拉蒂)

5.计算机内部主要是IC的元件组成

只需记住三种:

CPU(中央进程处理器):可以对数据执行运算并控制内存和I/O

内存(CPU内的数据寄存器):看看你电脑是多少位的,32位64位86位,是由寄存器的容量和传输进CPU的数据总线的条数共同决定,前者相当于水龙头,后者相当于水管,水管是32位的,水龙头也必须是32位的

I/O(Input/Output):接受用户设备的输入输出

 除了以上,还需要若干辅助元件

晶振(是时钟发生器的主要部件):晶体振荡器,由于晶体有压电效应,当在晶片的两面上加交变电压时,晶片会反复的机械变形而产生振动,而这种机械振动又会反过来产生交变电压,晶振产生振荡必须附加外部时钟电路,一般是一个放大反馈电路,只有一片晶振是不能实现震荡的.晶振为了辅助CPU的运转速度,会根据自身通电后振动的频率产生时钟信号频率用来衡量CPU的运转速度

IC的引脚:所谓的引脚就是IC边缘裸露出的像腿一样的部分,按照逆时针方向依次带有一个从1开始递增的序号

6. 比特是作为信息的收发单位

通常将1个二进制数称为1比特。将8个二进制数称为1字节

比特是信息的最小单位,字节是信息的基本单位

例如32位的计算机就是一32比特为一个单位收发信息的

7. 连接电源、地址总线和数据总线:

首先连接电源

为了指定输入输出数据时的源头或目的地(存取数据的地址),CPU上备有“地址总线引脚”,例如引脚有16个,用代号A0~A15表示,其中A表示Address(地址),后面的0~15表示一个16位二进制数中各数字的位置,0对应最后一位,15对应第一位,用而二进制表示就是0000000000000000~1111111111111111,所能提供的65536个数据存取单元(内存存储单元或者I/O地址),进行信息的输入输出。

一旦指定了存取数据的地址,就可以使用“数据总线引脚”进行数据的输入输出了,数据总线引脚和地址总线引脚类似,用代号D0~D15表示。

8.连接I/O:

下面开始连接I/O,大家知道寄存器这个词吗?寄存器是位于CPU和I/O中的“数据存储器”,速度很快,和CPU直接交互,假设一个并行PIO设备上有4个寄存器,2个是用于PIO本身的功能,2个是用于存储与外部设备进行输入输出的数据

 

9.连接时钟信号:

将CPU的CLK(Clock时钟)引脚、PIO的CLK引脚分别与时钟发生器的引脚相连,在时钟发生器的作用下,它们随着滴答滴答的时钟同步做动作,然后连上其它的引脚(这里简单带过)

10.CPU工作原理:

CPU 在时钟信号的控制下解释、执行内存中存储的程序,按照程序中的指令从内存或 I/O 中把数据输入到 CPU 中,在 CPU 内部进行运算,再把运算结果输出到内存或 I/O 中

 

11.机器语言和汇编语言

机器语言就是0和1的各种组合,不同种类的CPU对各种组合的解析也不同,例如man有的人理解为“男人”,有的人理解为“慢”

汇编语言就是把操作码(指令)和操作数(指令的对象)并排写在一行上,仅此而已 

标签的作用是为该行代码对应的内存地址起一个名字。

编程时如果总要考虑“这一行的内存地址是什么来着?”就会很不方便,所以在汇编语言中用标签来代替地址。用汇编语言编程时可以在任何需要标签的地方“贴上”名称任意的标签,如图,使用了名称“LOOP:”的标签

操作码就是助记符,用来告诉计算机“做什么”的指令,汇编语言中提供多少种助记符,CPU就有多少种功能 

操作数就是指令执行的对象

 

汇编语言和英语的祈使句很像,可以看成是英语的祈使句中开头放置了一个表示“做什么”的动词, 动词后面放一个宾语表示“作用到什么上”动词就相当于操作码,宾语就相当于操作数,程序的作用是向CPU发出指令。

 

12.寄存器的结构:

I/O寄存器只能作为临时存放周边设备进行输入输出的数据

CPU的的寄存器不仅能存储数据,还具备对数据进行运算的能力

举个栗子:以下是Z80的CPU所带有的寄存器ABCD等字母是寄存器的名字

举例来说:

A 寄存器也叫作“累加器”,是运算的核心。所以连接 到它上面的导线也一定会比其他寄存器的多。

F 寄存器也叫作“标志寄存器”,用于存储运算结果的状态,比如是否发生了进位,数字大小的比较结果等。

PC 寄存器也叫作“程序指针”,存储着指向 CPU 接下来要执行的指令的地址

PC 寄存器的值会随着滴答滴答的时钟信号自动更新,可以说程序就是依靠不断变化的 PC 寄存器的值运行起来的

SP 寄存器也叫作“栈顶指针”,用于在内存中创建出一块称为“栈”的临时数据存储区域

 

CPU 中有各种各样的各司其职的寄存器。其中有一个被称为 PC (Program Counter,程序计数器)的寄存器,负责存储内存地址,该地 址指向下一条即将执行的指令。每解释执行完一条指令,PC 寄存器的 值就会自动被更新为下一条指令的地址。

 

13.程序像河水一样流动着:

顺序执行是按照指令记录在内存中的先后顺序依 次执行的一种流程。而循环则是在程序的特定范围内反复执行若干次 的一种流程。条件分支是根据若干个条件的成立与否,在程序的流程 中产生若干个分支的一种流程。无论规模多么大多么复杂的程序,都 是通过把以上三种流程组合起来实现的

 

程序的三种流程正像是河流本身。从高山的泉眼中涌出的清泉形 成了河流的源头(程序执行的起点)。水流从山中缓缓流下,有时向着 63 4.1 程序的流程分为三种 一个方向流淌(顺序执行),有时中途分出了支流(条件分支),还有时 由于地势卷起了漩涡(循环)

这就意味着我们专业的程序员在编写程序之前,会通过画流程图来思考程序的流程 

下面是剪刀石头布的程序流程图

思考算法时的要点是要分两步走,先从整体上考虑程序的粗略流 程,再考虑程序各个部分细节的流程

用户是怎样使用程序的呢?首先,用户启动了程序(程序 执行初始化处理)。接下来用户根据自己的需求操作程序(程序进入循 环处理阶段)。最后用户关闭了程序(程序执行收尾处理)。这样的使用 方法就可以直接作为程序的整体流程。

特殊的程序流程——中断处理:

中断处理是指计算机使程序的流程突然跳转到程序中的特定地方, 这 样 的 地 方 被 称 为 中 断 处 理 例 程(Routine)或 是 中 断 处 理 程 序 (Handler),而这种跳转是通过 CPU 所具备的硬件功能实现的

在CPU中有特定的中断引脚,可以接受从I/O设备发出的中断请求信号,中断处理以从硬件发出的请求为条件,使程序的流程产生分支, 因此可以说它是一种特殊的条件分支

编写的程序中并不需要编写有关中断处理的代码。

因为处理中断请求的程序,或是内置于被烧录在计算机 ROM 中的 BIOS 系统(Basic Input Output System, 基本输入输出系统)中,或是内置于 Windows 等操作系统中。只需要先记住以下两点即可:计算机具有硬件上处理中断的能力;中断一词的英文是 Interrupt。

 

特殊的程序流程——事件驱动

程序员们经常用事件驱动的方式编写那些工作在 GUI(Graphical User Inteface,图形用户界面)环境中的应用程序

通常把用户在应用程序中点击鼠标或者敲击键盘这样的操作称作 “事件”(Event)。负责检测事件的是 Windows。Windows 通过调用应 用程序的 WndProc() 函数通知应用程序事件的发生。而应用程序则根 据事件的类型做出相应的处理。这种机制就是事件驱动。可以说事件 驱动也是一种特殊的条件分支,它以从 Windows 送来的通知为条件, 根据通知的内容决定程序下一步的流程

事件驱动的“状态转化图”

的计算器应用程序就可以看作包含三个 状态:“显示计算结果”“显示第一个输入的数”以及“显示第二个输入的 数”。随着用户按下不同种类的按键,状态也会发生转变。在状态转化图 中,在矩形中写上状态的名称,用箭头表示状态转化的方向,并且在箭 头上标注引起状态转化的原因(事件)

程序的流程还是只有顺序执行、条件分支和循环这三种,这 一点是没有改变的。

其中的顺序执行是最基本的程序流程,这是因为 CPU 中的 PC 寄存器的值会自动更新。条件分支和循环,在高级语言 中用程序块表示,在机器语言和汇编语言中用跳转指令表示,在硬件 上是通过把 PC 寄存器的值设为要跳转到的目的地的内存地址来实现

 

未完,看书

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

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

相关文章

python缺点这么多、为什么还流行_Python这么火,为什么说它不是未来的编程语言?...

本文转载自公众号“读芯术”(ID:AI_Discovery) Python这两年非常火,随处可见的广告让它逐渐变成了一种老少皆知的存在。 虽然问世几十年后,Python才得到编程社区的重视。 但是,其发展的势头似乎无人能及。自2010年年初以来&#x…

与计算机硬件系统紧密相关的程序设计语言是,与计算机硬件系统紧密相关的程序设计语言是...

摘要:计硬件智慧_章节测安全案树_食品试答。系统相关序设星尔章节应用雅_答案_超测验数学。紧密计语星尔整合章节满分雅_答案_超测试思维。...计硬件智慧_章节测安全案树_食品试答。算机学营销单元答案市场。系统相关序设星尔章节应用雅_答案_超测验数学。学_信公智…

快速掌握一门计算机语言,程序员5种编程入门方法,快速学会一门编程语言!...

技术更新太快,精通一门编程语言已经实属不易,又怎么好意思说精通多门语言呢?这对于编程思想也是大有裨益的。每门设计语言都有其独特的设计思想,譬如PHP的关联数组perl、Ruby的对象模型源自Smalltalk。如何快速学会一门编程语言?下面w3csch…

数据结构与算法基本

栈的算法: 计算机内部空间是连续存储的,但是可以通过逻辑上改变内存的物理结构,数据在内存上呈现出的是连续分布状态 主要的典型数据结构 在实现栈这种数据结构时,首先要定义一个数组和一个变量。数组中所包含的元素个数就是栈的…

synchronized不能锁静态变量_面试官:请说一下对象锁和类锁的区别

有锁才有自由生活中不存在绝对的自由,绝对的自由通常对应的无序和混沌,只有在道德、法律、伦理的约束下的相对自由,才能使人感受到自由。而在多线程编程中,锁是至关重要的,锁就是道德,就是法律约束&#xf…

计算机主板开机接线端子,装机必看,机箱前置面板接线向导,不怕再接错线了...

对于新手来说,在自己DIY一台电脑整机的时候,肯定是既兴奋又恐慌。兴奋是自己总算能亲自动手,组装一台自己称心如意且个性化十足的台式机。让大家感到恐慌的是主板那么多针脚和接口,该从何处下手,对于不懂行不专业的人来…

atoi函数_每日干货丨C语言中的字符串处理库函数介绍与实现

strlen函数:求字符串的长度size_t strlen(const char *s)头文件:#include说明:求出s指向的字符串的长度(不包括null字符)。返回值:返回s指向的字符串的长度。size_t strlen(const char *s){size_t len 0;while(*s) len;return len;}strcpy和strncpy函数&…

从windows计算机中卸载office,如何彻底卸载电脑中的Office组件|Office办公软件卸载不干净怎么办...

‍有不少用户遇到原本在电脑中的软件卸载不干净,而无法重新安装软件的问题。比如说有位用户在安装Office办公软件时就是因为没有彻底卸载原先电脑中的软件才导致无法安装。接下来系统城小编就和大家分享一下彻底卸载电脑中的Office组件的方法。1、打开电脑自带的控制…

python调用函数怎么表示_Python---7函数(调用定义函数)

函数 Python内置了很多有用的函数,我们可以直接调用。 要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs(),只有一个参数。可以直接从Python的官方网站查看文档:也可以在交互式命…

解决Android studio 的Glide 4.1.0第三方jar包如何导入libs目录

很多人在让自己的安卓实现导入外部的图片资源的时候遇到一系列的问题,今天就来好好解决 首先,相去github的官网下载这个jar包,下载任意一个即可,注意:你的网络可能会被墙,你可以换成手机的热点去下载&#…

没有显示屏怎么启动服务器,中关村xp系统提示“没有启动服务器服务”如何解决...

通常情况下,windowsxp系统电脑发生故障都会弹出警告提示,然后用户就可以利用这些信息判断出错来源从而解决问题。比如,一位中关村XP系统用户反馈自己的电脑发生故障,弹出警告提示:没有启动服务器服务。这该如何处理呢&…

python如何改变入参的值_从事数据分析3年后,发现用python入门数据分析这三本书必看!...

做数据分析为什么选择python?为什么选择python来做数据分析?先来看一下用python做数据分析有什么优势1、python在数据分析方面有非常专业的模块,很多常用功能,在做数据分析时非常方便。2、python相比于其他计算机编程,…

Android studio使用手册说明

Android studio project约是eclipse workspace Android studio module是eclipse project 首先,从eclipse到Android studio是一个必然的过程了,Android studio集成了eclipseADT插件开发安卓APK,所有人都是希望越方便越好,不会去自…

Android studio的设置界面介绍

1.编译按钮 2.运行选择按钮 3.运行按钮 4.设置界面 5.设置页面布局 6.系统保存设置 7.密码设置 8.下载按钮: 9.数据传递: 11.改色: 12.自定义完成指定代码的检查 13.Notifications 14.宏设置 15.SDK管理,可以直接导入自己的SDK&am…

打印机显示rpc服务器,win10打印机出现RPC服务器不可用的处理办法

win10打印机出现RPC服务器不可用的处理办法?大家在使用打印机打印的时候,多多少少都会碰到一些这样那样的故障。这不就有win10系统的网友,在使用打印机打印的时候,提示:RPC服务器不可用。出现这样的故障,大…

Android Studio的快捷键图文并茂

首先在设置界面可以看到很多快捷键,并支持将之前软件的快捷键习惯导入安卓开发中,默认的就是安卓开发的快捷键,所以基本不需要一些学习成本 双击shirf可以跳出查找界面 修改快捷键 按住ctrlshirftalt并用鼠标单击要添加代码的位置。就可以实现…

python中str和input_python中input()与raw_input()的区别分析

使用input和raw_input都可以读取控制台的输入,但是input和raw_input在处理数字时是有区别的 纯数字输入 当输入为纯数字时 input返回的是数值类型,如int,float raw_inpout返回的是字符串类型,string类型 输入字符串为表达式 input会计算在字符…

解决Android studio 加载不出网络图片的步骤

第一:网络问题,好像连家里的wifi没有手机的wifi能下载那个github的压缩包, 第二:版本问题,我把导入的包降低版本了,系统匹配成功, 第三:布局的时候需要把宽度高度的比例和加载的网…

现代操作系统初理解

1.现代操作系统是由中断驱动的:如果没有进程要执行,没有I/O 设备要服务,也没有用户请求要响应,操作系统将会静静地等待某件事件的发生。 2.操作系统和用户共享了计算机系统的硬件和软件:既然是共享了,就可…

python没有菜单栏_解决Jupyter Notebook开始菜单栏Anaconda下消失的问题

出现的问题状况是:在Anaconda文件下,少了Jupyter Notebook快捷键,不然每次都要打开Anaconda Navigator再打开Jupyter Noterbook,有点麻烦。为了避免将Anaconda软件卸载重装才出现Jupyter Notebook,就去寻找解决办法。首…