博客园
虽然痛苦,却依旧要快乐,并相信着未来。

导航

 

零)汇编趣谈

  汇编语言的起源要从机器语言开始说起。机器语言是机器指令的集合,机器指令就是机器能够接受和处理的信号,主要是一串二进制数字(二进制:逢二进一,只有零和一),简单形象地说,零是关门的信号(零是低电平),一是开门的信号(一是高电平)。现在一个房子(CPU的运算器)内有很多扇门,每个门都能接受信号(高低电平驱动电子设备进行运算)自动开关,不断的开关,等全部处理完这些信号之后。人工将最后门的状态(得到二进制数)转换为我们人类可以识别的消息。以前全部是人在做这些翻译工作。

  这机器语言1960年末就开始使用,到现在已经有58岁高龄,是编程语言中的高寿了。

  有一天,某位聪明人,觉得反复地敲01,太烦了。他想啊想,突然一个小学老师教的名词出现在脑海中。

  “换元法”!为什么不让机器翻译成我们能识别的消息?于是他在机器中把固定词句的和01串联系起来。这样就可以直接输入人类消息,让机器自己翻译,处理,再逆翻译成人类消息。说得专业点就是汇编指令是机器指令便于记忆的书写格式,就是说汇编指令是机器指令的助记符,同机器指令一一对应,没有本质变化。

一)汇编语言的特点

  汇编语言的特点同机器语言差不多,只是相对于机器语言表面上更容易让人接受,理解。

  1. 直观性:是人类可直接识别的编程语言。
  2. 依赖性(不移植性):不同的CPU有不同的汇编指令,所以在不同的电脑有不同的汇编指令,相同的代码不可直接移植到不同的电脑上。类似于不同的房间(CPU)的构造不同,门的位置和个数不同(存储地址和计算单位个数)。
  3. 直接性(效率高):处于底层语言,能迅速翻译成机器语言,几乎直接能被计算机识别,执行,能充分发挥计算机的硬件功能,所以是执行效率最高的人类可直接识别的编程语言(机器语言对人来说不可直接识别)。由此特性特性,能够编写出运行速度快、代码量小的高效程序,在许多场合具有不可替代的作用,列如:操作系统的核心程序段、实时控制系统的软件、智能仪器仪表的控制程序、频繁调用的子程序或动态链接库、加密软件、分析和防止计算机病毒等(来自老师PPT
  4. 繁琐性:汇编语言和机器语言一样是底层语言,需要码农掌握好底层硬件知识,懂得合理分配内存,合理使用系统硬件等。同一效果的代码,汇编语言要比正常语言多出几倍。使用起来不方便,使用领域有限。

  机器语言VS汇编语言VS高级语言(来自老师PPT

  机器语言 汇编语言 高级语言
计算机能否直接识别 不能 不能
易用性
占据空间
执行效率
用途

特殊

加密/解密

系统核心要

求速度快,

代码短的程序

直接操纵I/O

信息安全

一般性系统级

和应用层软件开发

二)指令与数据

  指令和数据是应用上的概念,在存储时,他们都是二进制信息,没有本质上的差别。但到了应用时,CPU在工作时把有些信息看作指令,另一些看作数据。

  例如:  1000100111011000 可以作为指令翻译成 mov ax,bx,也可以作为数据翻译成89D8H。

三)CPU对储存器的读写

  储存器可以被划分为一个个的存储单元,从零开始顺序编号(和C语言指针知识类似),正常情况下,一个存储单元可以存8bit(或1Byte=8bit)。大容量的存储器用大的单位来描述:

   1KB = 2^10B (Byte 简称 B)   1MB = 2^10KB  1GB = 2^10 MB  1TB = 2^10GB

  举个很形象的例子,有一条街上,门牌号从0开始顺序排,每家有一户人,一户人最多可以住8个人(也可以住不满)。如果要找其中一户人,首先要确定他们住在哪个房间里。

  而CPU想要进行数据的读写,必须和外部器件(如存储器)进行3类信息交互。

  • 存储单元的地址(地址信息);
  • 器件的选择,读或写的命令(控制信息);
  • 读或写的数据(数据信息);

  当我们找人时,可以用语言去询问他人。而器件间的语言是电信号,需要导线去传递,在计算机中专门有连接CPU和其他芯片的导线,通常称为总线(在物理上指一根根导线的集合,并没有区分类别)。根据传送信息的不同,在逻辑上我们把总线分为三类:

  • 地址总线:CPU用来指定存储器单元(N根线可以寻找2^N次方给内存单元)。
  • 数据总线:CPU用来与内存或其他器件之间的进行数据传输(8根数据总线一次可以传递8位二进制数据,即一个字节)。
  • 控制总线:CPU用来对外部器件的进行控制(控制总线的宽度——根数决定了CPU对外部器件的控制能力)。

  1. CPU通过地址总线将地址信息3发出。
  2. CPU通过控制总线发出内存读命令,选中存储器芯片,并通知它,将要从中读取数据。
  3. 存储器将3号单元中的数据08通过数据线送入CPU。

  1. CPU通过地址线将地址信息3发出。
  2. CPU通过控制线发出内存写命令,选中存储芯片,并通知它,要向其中写入数据。
  3. CPU通过数据线将数据26送入内存的3号单元中。

四)内存地址空间(寻址空间)

  一个CPU的地址总线宽度为n,那么可以寻址2^n个内存单元,这2^n个可寻到的内存单元就构成了这个CPU的内存寻址空间。

  例:80386的地址总线宽度为32根,寻址能力为4GB个内存单元。

  主板:

    每一台PC机中,都有一个主板,主板上有核心器件(CPU)和主要器件(存储器、外围芯片组、扩展插槽等),这些器件通过总线(地址总线、数据总线和控制总线)相连。

  接口卡:

    计算机系统中,所有可以用程序控制其工作的设备,必须受到CPU的控制。

    CPU对外部设备不能直接控制,如显示器、音箱、打印机等。直接控制这些设备进行工作的是插在扩展槽上的接口卡

  各种存储器芯片:

    RAM:随机存储器,可读可写,但必须带电存储,关机后村存储的内容将丢失。

    ROM:只读存储器,只读存储器只能读取不能写入,关机后内容不丢失。

  各种存储芯片小结:

  1. 在物理上是各自独立的器件。
  2. 都和CPU总线相连。
  3. CPU对其进行读或写的时候都通过控制线发出内存读写命令。

   内存地址空间:

  1. CPU在操控这些独立的物理存储器时,把它们统一当作一个逻辑存储器看待。这个逻辑存储器即内存地址空间
  2. 每个物理存储器在这个逻辑存储器中占有一段地址空间;CPU在这段地址空间中读写数据,实际上就是在相对应的物理存储器中读写数据。

  3. 不同的计算机系统的内存地址空间分配情况是不同的

注:

  • 内存地址空间是逻辑上的概念
  • 内存地址空间,即CPU寻址空间,与CPU地址总线宽度直接相关;
  • 内存地址空间的容量与平时所讲的内存条的容量不是一回事;
  • 不同的计算机系统内存地址空间如何使用有不同的分配方案

 

posted on 2018-09-25 16:15  砖猿  阅读(210)  评论(0编辑  收藏  举报