文章目录
第一章 基础知识
1.1 机器语言
机器语言是机器指令的集合。电子计算机的机器指令是一列二进制数字,驱动方式如下:
CPU(Central Processing Unit)中央处理单元,是一种微处理器,每一种微处理器都有自己的机器指令集
1.2 汇编语言的产生
使用机器语言太过复杂了,就是一串0和1,很容易产生错误,所以就做了汇编语言出来。
- 汇编指令是机器指令便于记忆的书写格式
虽然这么做方便了我们程序员阅读和书写,但是机器是看不懂mov ax,bx
的
- 我们需要一个能将汇编指令“翻译”成机器指令的程序,这样的程序我们称为编译器
1.3 汇编语言的组成
汇编语言由以下三种指令组成:
- 汇编指令:机器码的助记符,有对应的机器码,是汇编语言的核心
- 伪指令:没有对应的机器码,由编译器执行,计算机并不执行
- 其他符号:如+ - * /,由编译器识别,没有对应的机器码
1.4 存储器
要想让一个CPU工作,就必须提供指令和数据,指令和数据在存储器中存放,也就是我们说的内存
- 爱因斯坦的大脑如果没有“记忆”,也无法思考
- 磁盘上的数据需要读到内存中,才能被CPU使用
1.5 指令和数据
指令和数据是从用途上区分的,在内存或磁盘上,指令和数据没有任何区别,都是0和1的二进制信息,那么怎么区分呢?欲听后事如何,且看下回分解。
1000100111011000 -> 89D8H(数据)
1000100111011000 -> mov ax,bx(内存)
1.6 存储单元
存储器被划分为若干个存储单元,每个存储单元从0开始编号(而不是和日常生活中一样,从1开始数)
- 例如一个存储器有128个存储单元,编号就是从0~127
微型计算机的存储单元可以存储一个Byte,即8个二进制位
- 微机存储器的容量是以字节为最小单位计算的
大容量存储器一般用以下单位计量:1KB=1024B 1MB=1024KB 1GB=1024MB 1TB=1024GB
1.7 CPU对存储器的读写
存储器被划分为多个存储单元,而存储单元从零开始编号,这些编号可以看作存储单元在存储器中的“地址”
- 我们要去一个人的家里找这个人,那么我们需要知道他在XX小区-XX栋-XX户,这就是地址
CPU要从内存中读数据,首先要指定存储单元的地址,就像我们去找人必须要知道他的房子在哪。
除此之外,在微机中不只有存储器这一种器件,CPU读写数据时还要指明:要对哪一个器件进行操作?
要进行读操作还是写操作?所以需要和外部器件进行三类信息的交互(去哪,找谁,干什么):
- 存储单元的地址(地址信息)
- 器件的选择,读或写的命令(控制信息)
- 读或写的数据(数据信息)
CPU是怎么把地址、控制、数据这三种信息传到存储器芯片中呢?
- 电子计算机能处理传输的信息都是电信号,即一系列高低电平,电信号要用导线传送
所谓电脑,就是用导线来充当神经元进行信号的传输,这就引出了一个非常重要的概念:总线
- 如果要命令计算机进行数据的读写,要向它输入能够驱动它进行工作时的电平信息(机器码)
1.8 地址总线
- CPU通过地址总线上的信息来确定存储器单元的,address bus能传送多少个不同的信息,CPU就能对多少个存储单元进行寻址
现在假设一个CPU有10根地址总线,来看看它的寻址情况吧
- 在电子计算机中,一根导线可以传送的稳定状态有两种,高电平或者是低电平,用二进制表示就是1或0
- 10根导线相当于传送十位二进制数据==(结合数电好好思考一下)==,最多可以表示 2 10 2^{10} 210个数据,即为0~1023
1.9 数据总线
CPU的数据传送示意图
CPU和外界的数据传送速度是由数据总线的宽度决定的,8根数据总线可以一次传送一个8位的二进制数据(一个字节),16位数据总线可以一次传送两个字节(一个字),越宽一次传送的越多,就能在更短时间完成传输任务
- 8086有十六根数据线,可以一次传送16位数据,那么就可以一次传送89D8H
- 8088只有8根数据线,一次只能传送8位数据,所以写入的时候要分两次进行数据传送
1.10 控制总线
CPU对外部器件的控制示意图
同理,有多少根控制总线,就意味着CPU提供对外部器件的多少种控制。控制总线的宽度决定了CPU对外部器件的控制能力。
- 内存读写命令是由几根控制总线综合发出的
- 一根为“读信号输出”负责由CPU向外传送读信号,CPU输出低电平表示将读取数据
- 一根为“写信号输出”的控制线负责传送写信号
1.11 内存地址空间
一个CPU的地址总线宽度为10,那么可以寻址1024个存储单元,这1024个可寻到的内存单元构成CPU的地址内存空间
1.12 主板
每一台PC机中都有一个主板,主板上有核心器件和一些主要器件,这些器件通过三种总线相连*(回忆一下总线的概念和三种总线分别是什么)*,这些器件有:CPU、存储器、外围芯片组、扩展插槽等
- 扩展插槽上一般插有RAM内存条和各类接口卡
1.13 接口卡
- 计算机系统中,可以用程序来控制的设备必须受到CPU的控制
- CPU对外围设备都不能直接控制,如显示器、音箱、打印机
1.14 各种存储器芯片
一台PC机中有多个存储器,它们在物理连接是独立不同的,读写属性上看分为两类:RAM和ROM
从功能和连接上可分为以下几类:
-
随机存储器:用于存放供CPU使用的绝大部分程序数据,
-
装有BIOS(Basic Input/Output System)的ROM:BIOS是由主板和各类接口卡厂商提供的软件系统,可以通过它利用该硬件设备进行最基本的输入输出,在主板和某些接口卡上插有存储相应BIOS的ROM
-
接口卡上的RAM:某些接口卡需要对大批量输入输出数据进行暂时存储,在这些接口卡上装有RAM。最典型的是显示卡上的RAM,一般称为显存。显示卡随时将显存中的数据向显示器上输出,
1.15 内存地址空间
上述的那些存储器在物理上是独立的器件,但:
- 都和CPU的总线相连
- CPU对它们进行读写时都通过控制线发出内存读写命令
CPU在操作的时候,其实不分这个存储器属于谁,CPU把它们当成一个总的大存储器。这么一个由若干存储单元组成的逻辑存储器就是我们所说的内存地址空间,每个物理存储器在这个逻辑存储器中占一个地址段(一段地址空间),CPU在这段地址空间中读写数据,实际上就是在相应的物理存储器中读写数据
内存地址空间的大小受CPU地址总线宽度的限制,8086CPU的地址总线宽度为20,可以传送 2 20 2^{20} 220个不同的地址信息(大小为 0 ∼ 2 20 − 1 0\sim2^{20}-1 0∼220−1),定位 2 20 2^{20} 220个内存单元
- 我们基于硬件编程的时候,必须知道这个系统中的内存地址分配情况,因为读写数据必须知道首地址和尾地址
- 比如我们希望向显示器中输出信息,就必须将这段信息写到显存中;要写到显存中就必须知道对应地址空间,