跳转至

汇编语言是直接再硬件之上工作的编程语言

1.1 机器语言

机器语言是机器指令的集合,机器指令指的是机器能看懂、能执行的命令。电子计算机的机器指令是一列二进制数字。计算机将它转变为一列高低电平(电压信号),使得电子器件受到驱动,进行运算。

上述是早期计算机的概念。现在 PC 机,是用 CPU 来完成上述功能。

每一种微处理器,由于硬件设计和内部结构的不同,就需要用不同的电平脉冲来控制,使它工作。所以每一种微处理器都有自已的机器指令集,也就是机器语言。

1.2 汇编语言的产生

机器语言太过冗长,用二机制 10 表示,编写一个程序时非常多代码,难于辨别和记忆。因此产生了汇编语言。

汇编语言的主体是汇编指令(助记符(如 MOV 表示移动数据,ADD 表示加法等)来代替二进制码)。汇编指今和机器指令的差别在于指令的表示方法上。

例如:机器指令 1000100111011000 表示把寄存器 BX 的内容送到 AX 中。汇编指令则写成 mov ax, bx。这样的写法与人类语言接近,便于阅读和记忆。

操作:寄存器 BX的内容送到 AX 中 机器指令:1000100111011000 汇编指令:mov ax, bx

寄存器就是用来暂时存储数据以便处理器进行操作的小型存储单元。一个 CPU 有多个寄存器。AXBX 是寄存器的代号。举个例子,做饭时需要一个碗来打鸡蛋,这个碗就是寄存器,临时用来放置东西的。

1.3 汇编语言的组成

  1. 汇编指令:机器码的助记符(核心)。比如机箱上的开关机键,助记符就是用来描述这些按钮动作的方式,而机器码则是实际操作开关机的方法。
  2. 伪指令。注释或特别指示,比如机箱上提示要通电才能开机。
  3. 其它符号:如+-*/

1.4 存储器

1.5 指令和数据

指令和数据在存储器中存放,也就是内存。

  • 存储器:存储器是计算机中用来存储数据和指令的设备。在现代计算机系统中,存储器分为不同的层次,包括高速缓存(Cache)、主存储器(RAM)和辅助存储器(如硬盘驱动器、固态硬盘等)。
  • 指令:计算机程序是由一系列指令组成的,这些指令告诉计算机要执行哪些操作。
  • 数据:数据是程序处理的对象,可以是数字、文本、图像等任何形式的信息。

1.6 存储单元

存储器被划分成多个存储单元,每个单元从 0 开始编号,如图所示。

计算机最小信息单位是 bit,1个二进制位。

8 个 bit 组成一个 Byte,8 个二进制位。

一个存储器有 128 个存储单元,可以存储 128 个 Byte。

1 KB = 1024 B

1 MB = 1025 KB

1 GB = 1024 MB

1 TB = 1024 GB

1.7 CPU 对存储器的读写

上述的存储器单元编号可以看作存储单元在存储器中的地址。

CPU 要从内存中读取数据,首先要找到存储单元的地址。

以下是 CPU 要对数据的读写,需要的信息交互:

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

电子计算机

在现代语境中,“计算机”和“电子计算机”基本上可以互换使用,指的是基于电子技术的自动化信息处理设备。然而,在历史背景下,这两个术语有着细微的区别,尤其是在计算机发展初期阶段。随着技术的进步,“电子计算机”成为了默认的计算机形式,因此在当今的讨论中,两者常常被视为同一概念。

CPU与存储器芯片之间的通信是通过一组专门的总线(Bus)来完成的。这些总线(物理意义上是一根根导线的集合)可以传输地址信息、数据信息以及控制信号。具体来说,CPU与存储器之间的通信涉及到三种主要类型的总线:地址总线、控制总线和数据总线。

导线是一种用于传输电信号的物理介质。就像电流的“道路”,主要功能是将电流从一个点传输到另一个点,从而实现电路中各个组件之间的连接。比如电线,当打开灯开关时,电流通过电线从电源(比如电网(输电网络))流到灯泡,使灯泡发光。电线就是电流的通道。

1.8 地址总线

地址总线是一组物理线路,用于传输内存地址信息。 宽度:地址总线的宽度(即有多少条线路)决定了CPU能够直接寻址的内存空间大小。一个 CPU 有 N 根地址线,则可以说这个 CPU 的地址总线的宽度为 N。这样的 CPU最多可以寻找 2 的 N 次方个内存单元。

1.9 数据总线

CPU 与内存或其他器件之间的数据传送是通过数据总线来进行的(通常是双向传输)。数据总线的宽度决定 CPU 和外界的数据传送速度。8 根数据总线一次可传送一个 8 位二进制数据(即一个字节)。16 根数据总线一次可传送两个字节。

  • 向 CPU 写入数据 89D8H

1.10 控制总线

CPU 对外部器件(比如键盘、鼠标)的控制是通过控制总线来进行的。

检查点 1.1

1.11 内存地址空间(概述)

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

1.12 主板

1.12 接口卡

接口卡是安装在计算机主板上的扩展卡。CPU 如果要对诸如键鼠、音响、显示器这些外部设备进行控制的话,需要通过接口卡来充当桥梁。 扩展插槽通过总线和 CPU 相连,所以接口卡也通过总线同 CPU 相连。CPU 可以直接控制这些接口卡,从而实现 CPU 对外设的间接控制。简单地讲,就是 CPU 通过总线向接口卡发送命令,接口卡根据 CPU 的命令控制外设进行工作。

1.14 各类存储器芯片

一台 PC 中,装有多个存储器芯片,物理上是独立、不同的器件。

从读写属性分为两类:随机存储器 (RAM) 和只读存储器 (ROM)。

前者用于存储临时数据和正在运行的程序;而后者用于存储固定不变的数据和程序,确保计算机能够在没有外部存储的情况下启动和运行基本功能。

1.15 内存地址空间

上述的存取器有两点相同:

  • 都和 CPU 的总线相连
  • CPU 对它们进行读或写的时候都通过控制线发出内存读写命令。

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

“内存”是CPU可以访问的一系列连续的地址,用于临时存储当前运行的程序和正在处理的数据。 内存地址空间是指计算机系统中所有可用内存地址的集合。这些地址对应于物理内存中的存储单元,每个存储单元都有一个唯一的地址。CPU 通过地址来访问这些存储单元中的数据。

在图 1.8 中,所有的物理存储器被看作一个由若干存储单元组成的逻辑存储器,每个物理存储器在这个逻辑存储器中占有一个地址段,即一段地址空间。CPU 在这段地址空间中读写数据,实际上就是在相对应的物理存储器中读写数据。

假设,图 18 中的内存地址空间的地址段分配如下:

地址 0~7FFFH 的 32 KB 空间为主随机存储器的地址空间;

地址 8000H~9FFFH 的 8 KB 空间为显存地址空间;

地址 A000H~FFFFH 的 24 KB 空间为各个 ROM 的地址空间。

这样,CPU 向内存地址为 1000 H 的内存单元中写入数据,这个数据就被写入主随机存储器中;CPU 向内存地址为 8000 H 的内存单元中写入数据,这入数据就被写入显存中,然后会被显卡输出到显示器上;CPU 向内存地址为 C000H 的内存单元中写入数据的操作是没有结果的,C000H 单元中的内容不会被改变,C 000H 单元实际上就是 ROM 存储器中的一个单元。

ROM 是只读存储器,意味着它的内容在制造时就已经确定,且不能被修改。向 ROM 中写入数据的操作是没有结果的,因为 ROM 的内容不会被改变。

内存地址空间的大小受 CPU 地址总线宽度的限制。

\[ 地址空间大小 = 2^{地址总线宽度} \]

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