汇编语言 —— 基础知识
汇编语言是直接在硬件之上工作的编程语言,需要了解硬件系统的结构,才能有效地应用汇编语言对其编程。
1 机器语言
机器语言是机器指令的集合,每一种微处理器由于硬件设计和内部结构的不同,都有自己的机器指令集。
机器语言由 0、1 表示高低电平,有不易阅读、不易查错、难于辨别和查错等缺点。
2 汇编语言
汇编语言的主体是汇编指令。汇编指令和机器指令的差别在于指令的表示方法上。
将汇编指令转换为机器指令的翻译程序,称为编译器。
flowchart LR AI(Assembly Instructions) MC(Machine Code) Programer -->|write| AI --> Compiler --> MC -->|run| Computer
汇编语言由以下三类指令组成:
- 汇编指令:机器码的助记符,有对应机器码。
- 伪指令:没有对应机器码,由编译器执行,计算机不执行。
- 其他符号:如 +、-、*、/ 等,由编译器识别,没有对应机器码。
3 CPU 对存储器的读写
3.1 存储器、指令、数据和存储单元
存储器,即内存,存放指令和数据。
指令和数据在内存或磁盘上没有任何区别,都是二进制信息。指令和数据是应用上的概念。对于同一个二进制信息,CPU 在工作时既可以将其看作指令,也可以将其看作信息。
存储单元,存储器被划分为若干个存储单元,从 0 开始顺序编号。一个存储单元可以存储一个 Byte (8 bit) 。
微机存储器的容量以字节为最小单元来计算。
1KB = 1024B ; 1MB = 1024KB ; 1GB = 1024MB ; 1TB = 1024GB 。
磁盘的容量单位同内存一样。
3.2 CPU 对存储器读写的流程
CPU 想要进行数据的读写,必须和外部器件(芯片)进行以下三类信息交互:
- 地址信息:存储单元的地址;
- 控制信息:器件的选择,读或写的命令;
- 数据信息:读或写的数据。
电子计算机处理、传输的信息都是电信号,通过导线传送。连接 CPU 和其他芯片的导线称为总线,CPU 通过总线传送信息。
总线从逻辑上分为三类:地址总线、控制总线和数据总线。

CPU 从 3 号存储单元读取数据的过程:
- CPU 通过地址总线将地址信息 3 发出。
- CPU 通过控制总线发出内存读命令,选中存储器芯片,并通知它,将要从中读取数据。
- 存储器将 3 号单元中的数据 8 通过数据总线送入 CPU。
CPU 向 3 号单元写入数据 26 的过程:
- CPU 通过地址线将地址信息 3 发出。
- CPU 通过控制线发出内存写命令,选中存储器芯片,并通知它,要向其中写入数据。
- CPU 通过数据线将数据 26 送入内存的 3 号单元中。
用汇编指令表示 CPU 从 3 号存储单元读取数据:MOV AX,[3]
。含义为传送 3 号单元的内容入 AX 寄存器。
寄存器是 CPU 中可以存储数据的器件,一个 CPU 中有多个寄存器。 AX 是其中一个寄存器的代号。
3.3 地址总线、数据总线和控制总线
CPU 通过地址总线来指定存储器单元。一个 CPU 有 N 根地址线,则可以说这个 CPU 的地址总线宽度为 N,这样的 CPU 最多可以寻找 2^N 个内存单元。
CPU 与内存或其他器件之间的数据传送是通过数据总线来进行的。数据总线的宽度决定了 CPU 与其他器件进行数据传送时的一次数据传送量。8 根数据总线一次可传送一个 8 位二进制数据 (即一个字节)。
CPU 对外部器件的控制是通过控制总线来进行的。控制总线是一些不同控制线的集合。有多少根控制总线,就意味着 CPU 提供了对外部器件的多少种控制。
4 主板、接口卡和存储器芯片
4.1 主板和接口卡
主板上有核心器件和一些主要器件,这些器件通过总线(地址总线、数据总线、控制总线)相连。这些器件有 CPU、存储器、外围芯片组、扩展插槽等。扩展插槽上一般插有 RAM 内存条和各类接口卡。
CPU 对外部设备都不能直接控制,如显示器、音箱、打印机等。直接控制这些设备进行工作的是插在扩展插槽上的接口卡。扩展插槽通过总线和 CPU 相连,所以接口卡也通过总线同 CPU 相连。CPU 可以直接控制这些接口卡,从而实现 CPU 对外设的间接控制。
CPU 通过总线向接口卡发送命令,接口卡根据 CPU 的命令控制外设进行工作。
4.2 存储器芯片
存储器从读写属性上看分为两类:随机存储器(RAM)和只读存储器(ROM)。随机存储器可读可写,但必须带电存储,关机后存储的内容丢失:只读存储器只能读取不能写入,关机后其中的内容不丢失。
存储器从功能上分为以下 3 类:
-
随机存储器:用于存放供 CPU 使用的绝大部分程序和数据,一般由两个位置上的 RAM 组成,装在主板上的 RAM 和插在扩展插槽上的 RAM。
-
装有 BIOS 的 ROM:在主板和某些接口卡上插有存储相应 BIOS 的 ROM。例如,主板上的 ROM 中存储着主板的 BIOS(通常称为系统 BIOS)。显卡上的 ROM 中存储着显卡的 BIOS。
-
接口卡上的 RAM:某些接口卡需要对大批量输入、输出数据进行暂时存储,在其上装有 RAM。显示卡上的 RAM,一般称为显存。显示卡随时将显存中的数据向显示器上输出。

5 内存地址空间
一个 CPU 的地址总线宽度为10,那么可以寻址 1024 个内存单元,这 1024 个可寻到的内存单元就构成这个 CPU 的内存地址空间。内存地址空间的大小受 CPU 地址总线宽度的限制。
所有的存储器(包括主存储器、各类接口卡的存储器等)都和 CPU 的总线相连,CPU 对它们进行读或写的时候都通过控制线发出内存读写命令。CPU 在操控它们的时候,把它们都当作内存来对待,把它们总的看作一个由若干存储单元组成的逻辑存储器,这个逻辑存储器就是我们所说的内存地址空间。
所有的物理存储器被看作一个由若干存储单元组成的逻辑存储器,每个物理存储器在这个逻辑存储器中占有一个地址段,即一段地址空间。CPU 在这段地址空间中读写数据,实际上就是在相对应的物理存储器中读写数据。
