跳到主要内容

基本内容介绍

汇编语言

由来

最初,人们采用机器语言来进行编程。

  • 机器语言:机器指令的集合
  • 机器指令:计算机能够直接理解的指令,由二进制组成,计算机会将其转为一系列高低电平,以驱动计算机电子器件进行工作。

由于每一个计算机内部结构不同,则其完成相同工作的需要的电平信号也不同,因此其对应的机器语言也不同——每一个CPU都由自己的机器指令集。

由于机器语言由二进制组成,不便记忆,修改和编程,人们想出了汇编语言,汇编指令是机器指令便于记忆的书写格式

  • 汇编指令由助记符组成,方便人们编写程序,查看修改程序。
  • 汇编指令和机器指令一一对应

编译器

计算机并不能直接理解汇编程序,只能理解机器程序,这时候就需要编译器进行翻译,将汇编程序翻译为机器语言程序。

组成

汇编指令只是汇编程序的一部分,汇编语言的组成主要包括三部分

  1. 汇编指令:机器码的助记符,有对应的机器码。
  2. 伪指令:没有对应的机器码,由编译器进行执行。
  3. 操作符:没有对应的机器码,由编译器识别和执行。

存储器

完成了程序的编写之后,要想让一个CPU执行该程序,就需要提供程序和数据,而程序和数据是保存在存储器中的,要灵活地利用汇编语言编程,我们首先要了解CPU是如何从内存中读取信息,以及向内存中写入信息的。

存储单元

存储器被划分为若干个存储单元,从0开始进行编号。每一个存储单元可以存储1Byte个数据。

1KB = 1024B / 1MB = 1024KB / 1GB = 1024MB / 1TB = 1024GB

CPU对存储器的读写

CPU想要进行数据的交互,必须和外部器件进行以下数据交换:

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

总线

为了实现CPU与外部器件的数据交换,我们需要能够传送电信号的导线。计算机中专门连接CPU和外部器件的导线称为总线。

  • 地址总线:用于传输地址信息,8086中地址总线为20bit宽度
  • 控制总线:控制总线是一个总称,是一些不同的控制线的集合。8086中控制总线为16bit宽度,有多少跟控制总线,意味着CPU提供了对外部器件的多少种控制。
  • 数据总线:用于传输数据,8086中数据总线为16bit宽度

内存地址空间

各类存储器芯片

一台PC机上,装有多个存储器芯片,这些芯片从物理连接上看是独立的,不同的器件。从读写属性上又分为:随机存储器(RAM),只读存储器(ROM)。

  • 随机存储器:装在主板上的RAM和插在扩展插槽上的RAM(内存条)
  • 装有BIOS的ROM:BIOS是由主板和各类接口卡厂商提供的软件系统,可以通过它利用硬件设备进行最基本的输入输出。在主板和各类接口卡上插有存储相应BIOS的ROM。
  • 接口卡上的RAM:某些接口卡需要对大批量输入、输出数据进行暂时存储,在其上装有RAM,如显卡上的显存。

内存地址空间

上述的存储器件,在CPU操控它们的时候,都把它们当作内存来对待,把它们总的看作一个由若干存储单元组成的逻辑存储器,这个逻辑存储器就是我们所说的内存地址空间。

每一个物理存储器在内存地址空间中都占用一个地址段,CPU在这段内存空间中进行读写,实际上就是在对应的物理存储器中读写数据。因此,我们在基于一个计算机硬件系统进行编程的时候,必须要知道这个系统的内存地址空间分配情况。

不同的计算机系统的内存地址空间的分配情况是不一样的。而8086PC机内存地址空间分配的基本情况是:

  • 0 ~ 9FFFF:主RAM
  • A0000 ~ BFFFF:显存地址空间
  • C0000 ~ FFFFF:各类ROM地址空间