《汇编语言(第3版)》读书笔记 - 第 1 章 基础知识
第 1 章 基础知识
关于 PC 机及 CPU 物理结构和编程结构的全面研究,在《微机原理与接口》中进行;对于一般的结构、功能、性能的研究在一门称为《组成原理》的理论层次更高的课程中进行。
汇编课程的研究重点放在如何利用硬件系统的编程结构和指令集有效灵活地控制系统进行工作。
1.1 机器语言
机器语言是机器指令的集合。机器指令展开来讲就是一台机器可以正确执行的命令。电子计算机的机器指令是一列二进制数字。计算机将之转变为一列高低电平,以使计算机的电子器件受到驱动,进行计算。
上面的程序操作非常容易出错,于是汇编语言应运而生。
1.2 汇编语言
**汇编语言的主体是汇编指令。**汇编指令和机器指令的差别在于指令的表示方法上。汇编指令是机器指令便于记忆的书写格式。
下面是指定同样操作的两种指令的对比:
操作: 寄存器 BX 的内容送到 AX 中
机器指令: 1000100111011000
汇编指令: mov ax, bx
( 寄存器,简单的讲是 CPU 中可以存储数据的器件, 一个 CPU 中有多个这样的器件。 )
1.3 汇编语言的组成
(1)汇编指令: 机器码的助记符, 有对应的机器码
(2) 伪指令: 没有对应的机器码, 由编译器执行, 计算机并不执行
(3) 其他符号: 如 +、-、*、/ 等,由编译器识别,没有对应的机器码
汇编语言的核心是汇编指令,它决定了汇编语言的特性。
1.4 存储器
CPU 是计算机的核心部件, 它控制整个计算机的运作并进行运算。要想让一个 CPU 工作,就必须向它提供指令和数据。指令和数据在存储器中存放,也就是我们平时所说的内存。
1.5 指令和数据
指令和数据是应用上的概念。在内存或磁盘上,指令和数据没有任何区别,都是二进制信息。CPU 在工作的时候把所有的信息看做指令,有的信息看做数据,为同样的信息赋予了不同的意义。
1.6 存储单元
存储器被划分成若干个存储单元,每个存储单元从 0 开始顺序编号,例如一个存储器有 128 个存储单元,编号从 0 到 127,如图所示:
一个存储单元可以存储一个字节数据(1字节等于8个位 - 1 Byte = 8 bit),所以上图中 128 个存储单元可以存放 128字节的数据。
1.7 CPU 对存储器的读写
存储单元的编号可以看做是存储单元在存储器中的地址. CPU 对内存( 存储器 )的操作实际就是对存储地址的操作。
CPU 要进行数据的读写,必须和外部器件(芯片)进行下面的3类信息的交互:
- 存储单元的地址(地址信息)
- 器件的选择,读或写的命令(控制信息)
- 读或写的数据(数据信息)
那么 CPU 是通过什么将地址、数据和控制信息传到存储器芯片中的呢? 电子计算机能处理、传输的信息都是电信号,电信号当然要用导线传送。**在计算机中专门有连接 CPU 和其他芯片的导线,通常称为总线。**总线从物理上来讲,就是一根根导线的集合。根据传送信息的不同,总线从逻辑上又分为 3 类,地址总线、控制总线和数据总线。
1.8 地址总线
现在我们知道, CPU 是通过地址总线来指定存储器单元的。可见地址总线上能传送多个不同的信息,CPU 就可以对多少个存储单元进行寻址。
现假设,一个 CPU 有10根地址总线,让我们来看一下它的寻址情况。在计算机中,一根导线可以传送的稳定状态只有高低电平两种。用而进行表示就是 1 或 0, 10 根导线可以传送 10 位二进制数据,也就是 2 ^10 位。最小的寻址是 0,最大是 1023.
1.9 数据总线
CPU 与内存或其他器件之间的数据传送是通过数据总线来进行的。**数据总线的宽度决定了 CPU 和外界的数据传送速度。**8 根数据总线一次可传送一个 8 位二进制数据(及一个字节).
8088CPU 的数据总线宽度是8,8086CPU的数据总线宽度为16。我们来分别看一下他们像内存中写入数据89D8H时,是如何通过数据总线传送数据的。
8086 有 16 根数据线,可一次传送 16 位数据,所以可一次传送数据89D8H; 而 8088 只有8 根数据线, 一次只能传 8 位数据, 所以向内存写入数据需要进行两次数据传送。
1.10 控制总线
CPU 对外部器件的控制是通过控制总线来进行的。控制总线是总称,控制总线是一些不同控制线的集合。有多少根控制总线,就意味着 CPU 提供了对外部器件的多少种控制。所以,控制总线的宽度决定了 CPU 对外部器件的控制能力。
前面所讲的内存读或写命令是由几根控制线综合发出的,其中有一根称为"读信号输出" 的控制线负责由 CPU 向外传送读信号, CPU 向控制线上输出低电平表示将要读取数据; 有一根称为"写信号输出" 的控制线则负责传送写信号。
1.1 ~ 1.10 小结
(1) 汇编指令是机器指令的助记符,同机器指令一一对应。
(2) 每一个 CPU 都有自己的汇编指令集
(3) CPU 可以直接使用的信息在存储器中存放
(4) 在存储器中指令和数据没有任何区别, 都是二进制数据
(5) 存储单元从零开始顺序编号
(6) 一个存储单元可以存储 8 个 bit, 即8位二进制数据
(7) 1Byte = 8bit 1KB = 1024B 1MB = 1024KB 1Gb = 1024MB
(8)每一个 CPU 芯片都有许多管脚,这些管脚和总线相连。也可以说,这些管脚引出总线。一个 CPU 可以引出3种总线的宽度标志了这个 CPU 的不同方面的性能:
地址总线的宽度决定了 CPU 的寻址能力;
数据总线的宽度决定了 CPU 与其他器件进行数据传送时的一次数据传送量;
控制总线的宽度决定了 CPU 对系统中的其他器件的控制能力。
检测点 1.1
(1)1个CPU的寻址能力为8KB, 那么它的地址总线的宽度为____.
(2)1KB 的存储器有____个存储单元。存储单元的编号从___到____。
(3)1KB的存储器可以存储____个bit, ____个 Byte。
(4)1GB、1MB、1KB分别是____Byte。
(5)8080、8088、80286、80386的地址总线宽度分别为16根、20根、24根、32根, 则它们的寻址能力分别为: (KB)、(MB)、(MB)、(GB)。
(6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。则它们一次可以传送的数据为: (B)、(B)、(B)、(B)、____(B)。
(7)从内存中读取1024字节的数据, 8086至少要读____次, 80386至少要读____次。
(8)在存储器中, 数据和程序以____形式存放。
解:
(1): 因为 8kb = 2^3 * 2 ^ 10 = 2 ^ 13, 所以总线宽度是 13
(2)一个存储单元可以存放1Byte 数据,1k = 1024bit, 即 1024 个存储单元。0 - 1023。
(3) 1024 * 8 bit, 1024 Byte。
(4)
1kb = 1024 Byte
1MB = 1024 * 1024 比特
1G = 1024 * 1024 * 1024 比特
(5)
2^16 = 2^6 * 2^10 = 64 * 1kb = 64kb
2^10 * 2^10 = 1024 * 1kb = 1M
2^4 * 2^10 * 2^10 = 16M
2^2 210*2102^10 = 4G
(6)
1b、1b、2b、2b、4b
(7)512、256
(8)二进制信息(数据)