学汇编,是为了用计算机的思维去理解计算机代码的实现,理解CPU是如何运行的。

1.1 机器语言

机器语言是机器指令的集合。
机器指令展开来讲就是机器可以正确执行的命令。

1.3 汇编语言的组成

汇编语言由以下三类组成

  1. 汇编指令(机器码的助记符)
  2. 伪指令(由编译器执行)
  3. 其他符号(由编译器识别)

汇编语言的核心是汇编指令,它决定了汇编语言的特性。

1.4 存储器

CPU是计算机的核心部件,他控制整个计算机的运作并进行运算,要想让CPU工作,就要提供指令和数据。
指令和数据在存储器中存放,存储器就是平时讲的内存。

在一台PC中,内存的作用仅次于CPU,没有内存,CPU也无法工作,磁盘和内存不同,磁盘上的数据和程序也要被读到内存中才能被CPU使用。

1.5 指令和数据

指令和数据是应用上的概念
在内存或磁盘上指令和数据是没有区别的,都是二进制信息
例子: 二进制信息 1000100111011000—89D8H (数据)
1000100111011000—MOV AX,BX(程序)

1.6 存储单元

存储器被划分为若干个存储单元,每个存储单元从0开始顺序编号;
例如:一个存储单元由128哥存储单元,编号从0~127。

对于大容量的存储器一般还用以下单位来计量容量(用B表示Byte):
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB

磁盘容量单位同内存一样,

1.7 CPU对存储器的读写

CPU要想进行数据的读写,必须和外部器件进行三类信息的交互:

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

CPU如何将地址,数据和控制信息传到存储芯片中的?
用电信号,就是用导线传送。 在计算机中有专门链接CPU和其他芯片的导线,通常称为总线。

物理上讲,就是一根根导线集合
逻辑上划分为,地址总线,数据总线,控制总线

image.png
这个内存不仅指内存条,还包括显卡内存,网卡内存等等

读操作
image.png
写操作和上面的类似。

由上面我们可知CPU如何进行读写的,那我们该如何命令计算机进行数据的读写呢?

1.5中提到,同一个二进制数字,既可以表示数据,又可以表示命令,那什么时候表示数据或命令呢?
三条总线中有一条控制和一条数据总线,只要走相应的总线,就能区分开命令还是数据。

举例:8086CPU,下面机器码可以完成从3号单元读取数据
机器码:1010 0000 0000 0011 0000 0000
含义:从三号单元读取数据送入寄存器AX中

1.8 地址总线

CPU通过地址总线来指定存储单元的

地址总线上能传送多少个不同的信息,CPU就可以对多少个存储单元进行寻址。(想要达到真正的64位PC,那你的CPU,操作系统和软件都必须是64位)
image.png 地位在上,高位在下,所以这个地址线是1011

地址从地址总线发送到内存。
一个CPU有N根地址总线,则可以说这个CPU的地址总线的宽度为N。
这样的CPU最多可以寻找2的N次方个内存单元。

1.9 数据总线

CPU与内存或其他器件之间的数据传送是通过数据总线来进行的
数据总线的宽度决定了CPU和外界的数据传送速度。

八位传送
image.png
十六位传送
image.png

1.10 控制总线

CPU对外部器件的控制是通过控制总线进行的,控制总线就是对一些不同控制线的集合,有多少根控制总线,就意味着CPU提供了对外部器件的多少种控制。
image.png 相当于每条线代表一个信息

内存读写命令是由几根控制线综合发出的:
其中一根名为都信号输出控制线由CPU向外传送读信号,CPU向该控制线上输出低电平表示将要读取数据;
有一根名为写信号输出控制线负责由CPU向外传送写信号。

总结:

  1. 汇编指令是机器指令的助记符,同机器指令一一对应
  2. 每一种CPU都有自己的汇编指令集。汇编指令集就是一堆汇编指令的集合,方便使用
  3. CPU可以直接使用的信息在存储器中存放,CPU要想工作必须要有数据交换的场所
  4. 在存储器中指令和数据是没有任何区别的,都是二进制信息。
  5. 存储单元从零开始顺序编号。
  6. 一个存储单元可以存储8个bit即8位二进制数
  7. 1B = 8bit
  8. 每一个CPU芯片都有许多管脚,这些管脚和总线相连。也可说是这些管脚引出总线。一个CPU可以引出三种总线的宽度标志了这个CPU不同方面的性能。

地址总线的宽度决定CPU寻址能力
数据总线宽度决定了CPU与其他期间进行数据传送时的一次数据传送量
控制总线宽度决定了CPU对系统中其他期间的控制能力。

1.11 内存地址空间

什么是内存地址空间?

一个CPU的地址线宽度是10,那么可以寻址1024个内存单元,这1024个可寻到的内存单元就构成这个CPU的内存地址空间
首先要介绍的就是主板和接口两个基础部分。

1.11.1主板

每一台PC机中,都有一个主板,主板上有核心器件和一些主要器件
这些器件通过总线相连

1.11.2接口卡

计算机系统中,所以的可用程序控制其工作得设备,必须受到CPU的控制。
CPU对外部设备不能直接控制,如显示器、音箱、打印机等。直接控制这些设备工作得是插在扩展槽上的接口卡。

1.11.3 各类存储芯片

从读写属性上分类

  1. 随机存储器
  2. 只读存储器(数据永久保存,除非你自己刷掉)

装有BIOS的ROM
BIOS:Basic Input/Output System基本输入输出系统。
BIOS是由主板和各类接口卡厂商提供的软件系统,可以通过它利用该硬件进行最基本的输入输出。在主板和某些接口卡上插有存储相应BIOS的ROM,这个系统可以检测你的CPU,内存,显卡等等有没有插好。
image.png

上述的存储器在物理上都是独立的,但是他们都和CPU用总线相连,CPU对他们进行读写命令时都通过控制线发出内存读写命令。

image.png
所有的存储器被CPU找到后,就会串联在一起,分好那一部分属于哪个设备

假设上图地址分配如下
0~7FFFH的32KB空间为主随机存储器
8000H~9FFFH的8KB空间为显存地址空间
A000H~FFFFH的24KB为各个ROM的地址空间

8086的地址空间如下
image.png

内存地址空间
最终运行程序的是CPU,我们用汇编编程的时候,必须从CPU角度思考问题。

对CPU来讲,系统中所有存储器中的存储单元都处于一个统一的逻辑存储器中,他的容量受到CPU寻址能力的限制。这个逻辑存储器即使我们所说的内存地址空间,主要区分就是地址范围的不同