汇编语言学习笔记(一):基础知识

学习参考:汇编语言(第2版)王爽

  • 存储器
  • 指令和数据
  • 存储单元
  • CPU 对存储器的读写
  • 地址总线
  • 数据总线
  • 控制总线
  • 小结
  • 内存地址空间
  • 主板
  • 接口卡
  • 各类存储器芯片
  • 内存地址空间

存储器

CPU 是计算机的核心部件,控制整个计算机的运行并进行计算。
要让一个 CPU 工作,就必须向它提供指令和数据。指令和数据在存储器中存放,即平常所说的内存。
磁盘上的数据或程序要读到内存中才可以被 CPU 使用。

指令和数据

在内存或磁盘上,指令和数据没有任何区别,都是二进制信息。CPU 在工作时为同样的信息赋予了不同的意义。

存储单元

存储器被划分成若干个存储单元,每个存储器单元从 0 开始顺序编号,如一个存储器有 128 个存储单元,编号从 0 到 127
微型机存储器的存储单元可以存储一个 Byte(1 字节 8 bit,即 8 个二进制位)。含有 128 个存储单元的存储器可以存储 128 个 Byte。

CPU 对存储器的读写

CPU 要从内存中读取数据,首先要指定存储单元的地址(即存储单元的编号)。
在一台微机中,不只有存储器一中起见。CPU 在读写数据时还要指明,它对哪一个器件进行操作,进行哪种操作,是从中读出数据,还是向里面写入数据

CPU 要想进行数据的读写,必须和外部起见(标准说法是芯片)进行下面 3 类信息的交互

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

在 CPU 中通过 总线 将地址、数据和控制信息传到存储器芯片中。

根据传送信息的不同,总线从逻辑上分为 3 类

  • 地址总线
  • 控制总线
  • 数据总线

CPU 从 3 号单元中读取数据的过程

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

写操作与读操作的步骤类似。如向 3 号单元写入数据 26

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

地址总线

CPU 通过地址总线来指定存储器单元。地址总线上能传送多少个不同的信息,CPU 就可以对多少个存储单元进行寻址。
一个 CPU 有 N 根地址线,则可以说这个 CPU 的地址总线的宽度为 N。这样的 CPU 最多可以寻找 2 的 N 次方个内存单元

数据总线

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

控制总线

CPU 对外部器件的控制是通过控制总线来进行的。在这里控制总线是一个总称,控制总线是一些不同控制线的集合。有多少个控制总线,就意味着 CPU 提供了对外部器件的多少种控制。所以,控制总线的宽度决定了 CPU 对外部器件的控制能力。

小结

  1. 汇编指令是机器指令的助记符,同机器指令一一对应
  2. 每一种 CPU 都有自己的汇编指令集
  3. CPU 可以直接使用的信息在存储器中存放
  4. 在存储器中指令和数据没有任何区别,都是二进制信息
  5. 存储单元从零开始顺序编号
  6. 一个存储单元可以存储 8 个 bit,即 8 位二进制数,一个存储单元是一个字节
  7. 1Byte = 8bit 1KB = 1024B 1MB = 1024KB 1GB = 1024MB(1GB = 2^30Byte, 1MB = 2^20Byte, 1KB = 2^10Byte)
  8. 每一个 CPU 芯片都有许多管脚,这些管脚和总线相连。也可以说,这些管脚引出总线。一个 CPU 可以引出 3 种总线的宽度标志了这个 CPU 的不同方面的性能:
    • 地址总线的宽度决定了 CPU 的寻址能力
    • 数据总线的宽度决定了 CPU 与其他器件进行数据传送时的一次数据传送量
    • 控制总线的宽度决定了 CPU 对系统中其他器件的控制能力
  9. 总线宽度 N 与寻址能力的关系: 寻址能力=2^N
  10. 8 根数据总线一次可传送一个 8 位二进制数据(即一个字节),即宽度为 8 的数据总线读取 1024 字节的内容需要读 1024 次

Q:一个 CPU 的寻址能力为 8 KB,那么它的地址总线的宽度为?
A:
8 KB = 1024 * 8 Byte = 8192 Byte
设地址总线宽度为 N,则内存单元个数为 2 的 N 次方个,即 N = log(2)(8192) = 13
所以宽度为 13

内存地址空间

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

主板

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

接口卡

接口卡直接控制外部设备,CPU 通过总线向接口卡发送命令,接口卡根据 CPU 的命令控制外设进行工作,从而实现 CPU 对外设的间接控制

各类存储器芯片

从读写属性上看分为两类:

  • 随机存储器(RAM):可读可写,但必须带电存储,关机后存储的内容丢失
  • 只读存储器(ROM):只能读不能写入,关机后其中的内容buu’i不会丢失

从功能和连接上可分为一下几类:

  • 随机存储器
    • 存放供 CPU 使用的绝大部分程序和数据
    • 主随机存储器由装在主板上 RAM 和插在扩展插槽上的 RAM 组成
  • 装有 BIOS 的 ROM
  • 接口卡上的 RAM

内存地址空间

上述的那些存储器,在物理上是独立的器件,但是在以下两点两点上相同:

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

对 CPU 来讲,系统中的所有存储器中的存储单元都处于一个统一的逻辑存储器中,它的容量受 CPU 寻址能力的限制。这个逻辑存储器即是我们所说的内存地址空间

文章作者: Inno Fang
文章链接: https://innofang.github.io/2017/11/17/汇编语言学习笔记(一):基础知识/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明来自 Inno's Blog