编码---隐匿在计算机软硬件背后的语言

       

                          

14 章 反馈与触发器

 看不到图, 请看word版:http://pan.baidu.com/share/link?shareid=443881&uk=3088134014

电磁继电器 可以抽象为一个反向器;下图是一个反向器;



 
 
 

                                       输出  

                                     

 

 

输入0, 输出1;然后1被输入,0被输出;不断重复,就跟继电器一样。这种电路又叫做震荡器。

为了使不同组件同步工作,所有计算机都配备着某种振荡器。

当采用0和1交替序列来表示振荡器的输出时,我们一般用下边这样的来形象的描述输出:

1

 0

 

                                                                                     时间

随着时间的推移,振荡器的输出在0和1之间按照固有的规律交替变化。

 

振荡器的运行速度有多快?很大程度上依赖于继电器的内部构造。又大又重的振荡器肯定没有又小又轻的振荡器运动快。

 

 

 
 
 

 


上图称为反馈。左边V,都是电压,左边或非门的输出是右边或非门的输入,而右边或非门的输入是左边或非门的输入。

 

对于上图,如果右端接一灯泡:

接通上面的开关,灯泡被点亮,断开此开关灯泡还亮。

接通下面的开关,灯泡被熄灭,断开此开关灯泡仍然不亮。

当两个开关都断开时,电路有两个稳定状态,这类电路称为触发器

 

 

 

 

 

R-S触发器:

         

 

 

 

R端用来复位,S为置位。R端是数据输入,S端是状态保持输入位。一般情况下,保持位(S)被置为0.这种情况下,数据端(Q)对电路没有影响;当保持位(S)置1时,数据端的值就会在电路系统中被“记住”。随后保持位又置0,这时电路已经记住了数据端的最后一次输入,而之后数据端的输入无论如何变化都不会对电路产生影响。

注意:电路中,一般保持位被标记为时钟(clock)。

 

 

15章  字节与16进制

 

一字节8位,范围00000000—11111111.还可表示0—255之间正整数,如果将一个数的补码作为其相对应的负数,那么一个字节可以表示在-128—127范围内的正、负整数。

 

16章 存储器组织

 

 
 
 

                                                                                               数据输出

 

   时钟输入

 

 

 数据端

 

 
 
 

                                                                                             数据输出

 

写操作端

 

数据输入

 

上边是同样的两个图D型出发器,锁存器,只是端的叫法不一样。

当时钟输入为1,数据输出与数据端输入保持一致。但当时钟输入跳变为0时,数据输出将保持数据端最后一次的输入。除非时钟输入再次还原为1,之后的数据端输入不会影响输出。

在下边图中,时钟输入端命名为写操作端,写操作端的信号同样使得数据输入信号被写入,也可以称为被存储到电路中。一般情况下,如果写操作端为0,则数据输入信号的状态对输出没有影响。而当我们想我数据输入信号存储在触发器中时,可以把写入信号应先置为1后置为0。

 

 

2-4选择器

 

 

 

17 章 自动操作

 

电平触发:先将时钟输入端置1,然后置0.

边沿触发:时钟输入由0变1时,的瞬间保存数据。

 

有两个RAM,一个用于存放数据,另一个用于存放操作码(数字代码),用来标记自动加法器对第一个RAM中指定地址要做的一种操作。因此第一个RAM可标记为“数据”;第二个RAM标记为“代码”。

       这样, RAM(2)控制RAM(1),进行数据的加载,存储,加减等操作,即这些操作完全由0,1电平控制。

 

计算机和计算器的区别:能否控制重复操作或者循环。

 

我们的计算机是由继电器、电线,开关,以及灯泡构造而成,这些东西叫硬件。与之对应,输入到存储器中的指令和数据被称作软件。之所以把硬改成了“软”,是因为相对于硬件而言,指令和数据更容易修改。

注意:现在很容明白,其实程序就是输入的0,1电平信号。

通常,在计算机程序中,我们能够把代码和数据分区别开。但有时他们之间的界限也不是很明显,如halt(FFH)可有两种功能,作为停止执行的代码,还可表示-1.

 

如果你想为本章所设计的计算机设计程序,那么说先想到的是用汇编语言来编写(在纸上)。在对定程序无误并准备运行其结果的时候,你需要手工对其汇编:就是要把每一条汇编语句转换成与之对应的机器语言,这仍然要在纸上工作。完成之后,你需要通过开关把这些机器码(0,1序列,也是开关的通与断)输入到RAM阵列中,并运行该程序,就是让计算机执行这些指令。

 

 

第20章  ASCII码和字符转换

 

 

数字计算机中的存储器唯一可以存储的是比特。因此如果想要在计算机上处理信息,就必须把他们安位存储。

为了将文本表示为数字形式,我们需要构建一种系统莱维每一个字母赋予一个唯一编号。数字和标点同样是文本的一种形式。简而言之,所有由符号所表示的字母和数字都需要编码。具有这种功能的系统被称为字符编码集。系统内每个独立的编码称为字符编码。

 字符编码是什么样子呢?其实可以随意构造编码。如果只想打造一台自己的计算机,硬件由自己制作,内部程序由自己编写,且不打算把这台 计算机与其他的进行连接,那么就完全可以构造自己的编码系统。其实很简单,就是给每个字符指派一个唯一的编码。(也就是说,编码是有认为编定,固定编码是为了统一)。

    为不同方法制造出来的计算机之间可以相互兼容,甚至可以互相交流文本信息,得到的标准编码就是美国信息交换标准码ASCII码。

业界一直有一个目标,就是建立一个独一无二的字符编码系统,他可以用于世界上所有语言文字。1988年研究出一种用来替代ASCII码的编码系统,取名为Unicode

(统一化字符编码标准)。Unicode采用16位编码,每一个字符需要两个字节即,编码范围0000h-FFFFh,总共65536个不同字符。Unicode编码的前128个字符编码与ASCII码是一致的。可用于全世界所有的人类语言。但缺点是,Unicode占用存储空间多了1Byte。

 

 

第21章 总线

 

TTL兼容集成电路的输出信号要么大于2.2V(逻辑1)要么小于0.4(逻辑0)。

2102芯片的输出信号是三态的,除了0和1逻辑之外,还有一种“真空”态,就像芯片的引脚上什么也没连一样。

  电子射线管(CRT),视频显示器或电视机的二维图像,实际它是由一束连续的光束射线迅速扫描屏幕而形成的。射线从左上角开始,从左到右进行扫描,到达屏幕边缘后又折回向左,进行第二行扫描。称每一个水平行为扫描行,称射线回到每个扫描行的开始位置为水平回归。当完成了最后一行的扫描时,射线不会停下来,它会从屏幕的右下角返回到屏幕的左上角(垂直回归),并重复这一过程。由于扫描频率很快,所以看不到图形闪烁的现象。

     从计算机角度来说,可以把视频图像想象成由离散点组成的矩形网格,这些离散点称为像素。

 

显示器显示字符,可以让每个字符用8*8=64(64个像素)。每个字符由ASCII码表示,这样也可以64比特相关,这64比特决定了字符会显示成什么样子。

   视频适配器中必须配置一些RAM,用以存储所显示的内容;微处理器也必须能够向此RAM中写入数据以改变显示器上显示的内容。

     字符生成器是视频适配器板上的一部分,包含了所有ASCII码字符的像素图。通常它是ROM,它是一种集成电路。在生产时里面已经填入了数据,固定的地址输出的数据是不变的,ROM中并没有数据输入信号。

    每片ROM都有7个地址信号(用来表示ASCII码)及64个数据输出信号,里面存储了128个ASCII码字符的8*8像素图。实际上,用10个地址信号和8个输出信号。其中7个地址信号用来确定ASCII码字符(7个地址位来自视频板上RAM的数据输入)。其他三个地址信号则用来表示行。举例:000表示最高行,111表示最低行,8个输出位就是没行的8个像素。

   显示文本的适配器还必须支持光标功能。光标所在的行列通常被存储在两个8位寄存器中,这两个寄存器也是视频板的一部分,且微处理器可以对其进行写操作。

    还可以显示其他数据的显示适配器,叫做图形适配器(图形显卡)。通过向图形显卡的RAM写入数据,微处理器就可以画出图形了。

     为了让图形显卡能显示图形,通常每个像素对应于RAM中的一整个字节,其中00h表示黑色,FFh表示白色,介于两者之间的数值对应不同灰度。

   如果想显示丰富多彩的颜色,每个像素就需要至少3个字节。三原色红绿蓝,每种颜色的强度都要用一个字节来表示。

   图形显卡能显示的颜色种类,y与每个像素所赋予的比特数有关。

颜色数量=2的每个像素赋予的比特数的次方。

 

第22章 操作系统

 

早期, 向计算机输入指令和数据就是在纸上写汇编程序, 然后转换成机器码, 用开关控制进行输入。键盘使用按键来实现控制输入输出,比拨开关省事了。

   为了加点时,屏幕不随机显示无用字符,会把视频显示器内存中的每个字节初始化成20h,即空格。Hlt让计算机停止工作。

 

第24章 高级语言与低级语言

 

第一个编写汇编器的人需要手工对程序汇编。如果要为机器写一个新的汇编器(或者对其进行修改),则可以使用汇编语言编写该程序,然后使用原有的汇编器对其汇编。一旦新的汇编器通过了汇编,则它可以对自身进行汇编。

      每当一种新的微处理器问世,就需要为其编写新的汇编器。然而,新的汇编器可以在已有的计算机上编写,并利用其汇编器进行汇编。这种方式称为交叉汇编,即利用计算机A的汇编器对运行在计算机B上的程序汇编。

    之后为了方便,有有了高级语言。当然,如果要在不同类型的处理器上运行高级语言写成的程序,则需要用处理器对应的编译器将程序转换成对应的机器码。因此,最后生成的可执行文件仍然只适用于特定的处理器。

 

个人总结:总结围绕着一直以来困扰着的两个问题,

1、屏幕上我们看到的代码为什么称之为软件?它是个什么东西

2、我们的代码如何就能控制硬件了?编译器如何使我们的代码控制硬件工作的

 

首先第一个问题,软件相对硬件而言,我们能看到的实物是硬件,而我们输入给计算机的那些电信号,是看不到的东西(我们把它们量化为0,1,实际上就是电平的高低)。可能你又问,那么我们在电脑上看到的程序代码不就是程序吗?不是可以看到吗?其实应该是一个原理,在第二个问题中解决。

 第二个问题,道出了一切。计算机能处理0和1序列。其实计算机中并不存在真正的这样0和1。只不过是一个让人类能认出来的符号或者编码而已(我这样认为的).就像人类能够认识10进制,16进制等。这一切都是为人类而服务的。那么为什么我们常说计算机能处理的是二进制指令呢?因为计算机组成的都是硬件电路,肯定是要用硬件控制电路,那么能控制电路的东西就是电平,而电平的输入输出就代表了数据或指令的输入输出。电平的输入输出就是电平控制的,这正好是开关控制闭合和断开,但是我们为了方便表示,对应着用1和0来表示。这样所谓的程序和数据就是开关的闭合表示。

    一种锁存器可以保持1,0序列不变化,例如ROM。这样我们就可以把这样的0,1序列(其实仅代表指令和数据)保存在ROM中。常见的有BIOS ROM,显存ROM等。其中显存ROM中,存有可以显示在屏幕上的字符编码和图形编码(其实还是0,1序列)。正是由于显存ROM的存在,我们才能在显示器上看到输出的程序代码。

     程序语言如何变成程序的?最初的语言其实就是开关控制输入电平。我们为了人类好理解,用一种易于理解的符号表示,例如汇编语言。比方说,我们要存入数据,可以用store表示存入。但是计算机不理解,计算机只理解电信号。所有我们必须把store翻译成计算机能理解的1,0序列,这种工作由人类手动完成。比方说,事先我们按照硬件的结构规定好了11100010   对应着store。那么所有汇编程序中,有store的地方我们都要翻译成11100010.其他类似。所以,第一个汇编语言的翻译工作必须手动完成的。

     好了,现在可以从计算机从加点开始解释。

     计算机在没加电之前,RAM中就有0,1序列,并且这些序列不是我们设计好的,是随机的,无用的。当加电时,我们并不想要这些无用的东西,所以需要初始化计算机的RAM,一般初始化为0x20h,即空格,这时屏幕上没有任何东西显示。当我们开机加电后,这时就有了开关的闭合,相当于输入了0,1,即控制指令,这样的指令去控制计算机去BIOS ROM读取指令,ROM中存有固定的程序(即0,1)序列,这个ROM中的指令去执行初始化操作,即其他控制操作。同时,电流会流到显示器的RAM,RAM的输出控制显存ROM中的指令去执行,以便可以显示字符或图形显示在显示器上。其实在显示器上显示的还是电平信号,只不过电平信号点亮的区域多了连在一起就是字符或图形。

    同时,为了方便我们把开关用键盘来替代。我们在电脑上编写程序,其实就是将人类可以理解的字符通过键盘这个开关输入到显示器的RAM中(这之间有一个编码过程),然后通过编码将这些指令和数据信号呈现到电脑屏幕,就是我们看到的程序。我们将程序编写完成以后,通过编译器(其实是存储在硬盘上的0,1序列)将我们的程序翻译成计算机能理解0,1序列(注意,第一个程序,即第一个汇编程序必须手工完成)。

      这样,基本算是理解了整个计算机。虽然有些乱。并且欢迎交流。

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
假若你才1 0岁,你的好朋友与你临街而住,而且你们卧室的窗户面对着面。每天晚上, 当父母像平常一样很早催你上床睡觉时,你可能还想与好朋友交流思想、发现、小秘密、传 闻、笑话和梦想,没有人可以责备你,毕竟,渴望交流是大多数人的天性。 当你们卧室还亮着灯时,你和你的好朋友可以临窗舞动手臂、打手势或以身体语言来交 流思想,但复杂一些的交流就有些困难了。而且一旦父母宣布“熄灯”,交流也就无法继续进 行了。 如何联系呢?用电话吗? 1 0岁的小孩子屋里有电话吗?即使有,你们的谈话可能被偷听。 如果家里的电脑通过电话线联了网,它可能会提供无声的帮助,不过很不幸,它也不会在你 的房间里。 你和朋友采用的方法是用手电筒。所有的人都知道手电筒是为孩子们藏在被窝里看书而 发明的,它也适合在黑暗中用来交流。它无声无息,且光的方向性很好,不会从卧室的门缝 中泄露而使家人起疑。 用手电筒的光可以交谈吗?这值得一试。一年级你就学过在纸上写字母和单词,把这种 方法运用到手电筒上看起来也合情合理。你所需做的就是临窗而站,用光画出字母。画字母 ‘O’,就打开电筒,在空中画个圈,然后关上开关;字母‘ I’则是画竖直的一笔。但是你很 快发现这种方法行不通,当你注视来去飞舞的光柱时,会发现在脑海中将它们组合起来不是 件容易的事,这些光划成的圈圈杠杠太不准确了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值