01.基础知识
基础知识
前言
随着工作时间的加长,越来越发觉计算机基础的重要性,能否在自己脑海中构建一整个关于计算机的整体架构对于我们之后深入底层研究非常的重要。因此,汇编语言作为和计算机硬件打交道的唯一途径,是非常重要的,也可以说汇编语言是之后深入底层的基础。我在大学期间学习过这门课程,觉得这门课程是真的难。但随着工作了一段时间后,回过头来重新去看待它,瞬间觉得没有想象中的那么难。我选择的书籍是<<汇编语言第四版>>-王爽,这本书强烈推荐,将汇编语言以一种非常的简单的方式表示出来,难度由浅入深,非常适合汇编的学习。
汇编语言的产生
计算机:CPU(中央处理单元),在计算机中的地位相当于人类的大脑,用于执行机器指令,进行运算,是一种微处理器。计算机是指由CPU和其他受到CPU直接或间接控制的芯片,器件,设备组成的计算机系统。
机器语言:由一串二进制码组成的语言。早期的计算机将模拟电信号转换成数字信号,又将之分为高低电平,高电平由0表示,低电平由1表示,由0,1组成的一大串机器码就称之为机器语言。
汇编语言:CPU 拿到机器指令,进行相应的运算,得出相应的结果。早期的工程师通过打孔的方式来书写机器语言,但是机器语言全由0000011111000111组成,书写难度极高,并且一旦出错,根本不知道从何排查,于是汇编语言于此诞生。汇编语言就是机器语言便于记忆的书写格式。
由于计算机只能识别机器码,无法直接识别汇编语言,那计算机是如何执行汇编语言的呢?
答案是通过编译器来完成的,我们书写汇编语言,通过编译器编译生成机器语言,最后CPU读取机器码进行执行。
前置基础知识
汇编语言的组成
- 汇编指令:机器码的助记符,有对应的机器码
- 伪指令:没有对应的机器码,由编译器执行,计算机不执行
- 其他符号:如 +,-,*,/ 等,由编译器识别,没有对应的机器码
存储器
CPU 是整个计算机的大脑,控制着整个计算机的运算,但是只有 CPU 是不行的,要想让一个计算机运行,还必须给它提供指令和数据,指令和数据存放在存储器中,分为 内存 和 磁盘。因此,内存是计算机中除了 CPU 最重要的部分,就像人不能没有记忆一样。磁盘不同于内存,磁盘中的数据或程序必须先读入内存中,才能被CPU使用。
指令和数据
指令和数据是应用的概念,在内存和磁盘中,都是以二进制的形式存储,没有本质的区别。CPU 将有的信息当作指令,将有的信息当作数据,为同样的数据赋予不同的意义。
存储单元
存储器被分为若干个存储单元,每个存储单元从 0 开始顺序编号,假设有 128 个存储单元,则编号为0~127。
那么一个存储单元存储多少信息呢?
电子信息的最小单位是bit(比特),也就是一个二进制单位。8个bit组成一个字节,微型机存储器的最小存储单位为Byte(字节)。微型机存储器的存储单元可以存储一个Byte,一个存储器有128个存储单元,就有128个Byte。
1KB = 1024B 1MB = 1024KB 1GB = 1024MB 1TB = 1024 GB
CPU对存储器的读写
我们知道存储器按照顺序进行编号,就相当与现实中的门牌号,CPU 想要读写数据,必须先找到地址,就像我们去朋友中玩必须知道他家的详细住址一样
CPU 与存储器进行读写必须进行3类信息的交换
- 存储单元的地址(地址信息)
- 器件的选择,读写的指令(控制信息)
- 读写需要携带的数据(数据信息)
那么CPU是通过什么将地址,控制,数据信息传到存储器芯片中的呢?
传输的信号是电信号,电信号用导线传输,而计算中也是通过导线传输的,计算机中分布着很多传输电信号的总线,我们将这些导线的集合统称为总线。从逻辑上又将总线的类型分为三类:地址总线,控制总线,数据总线
CPU 从 某个存储单元读取数据的步骤如下:
- CPU 将 地址信息通过地址线发给内存
- CPU 通过 控制线发出内存读信息,选中相应的存储芯片,并通知它,将要从中读取信息
- 存储器将 相应地址的数据通过 数据线 传给 CPU
地址总线
CPU 是通过地址总线来访问存储器单元的,可见地址总线上能传递多少的信息就决定了CPU可以对多少个存储单元进行寻址。
一个CPU有N根地址线,就能寻址 2^N 的地址
数据总线决定了 CPU 的寻址能力
数据总线
数据线的多少决定了单次传输的数据量的多少,例如 0X8080 数据,8根数据线需要分两次传输,而16根数据线只需要一次传输
数据总线决定了数据的传输速度
控制总线
CPU 对外部器件的控制都是通过控制总线来执行,这里的控制是一个总称,例如内存读,内存写等,控制线越多,代表控制指令的种类也就越多
控制总线决定了 CPU 的控制种类
内存寻址空间
什么是内存寻址空间?
一个 CPU 的地址总线宽度为 8 ,则内存地址寻址空间就是 2^8
主板
在每一台PC机上都有一个主板,主板上有核心部件和一些主要器件,这些器件通过总线相连。这些器件有CPU,存储器,外围芯片组,拓展插槽等,拓展插槽上一般插有 RAM 内存条和各类接口卡
接口卡
在计算机系统中,所有可用程序控制其工作的设备,都必须通过CPU的控制。CPU对外部设备不能直接控制,直接控制外部设备进行工作的是插在拓展插槽上的接口卡,拓展插槽通过总线与CPU相连,所以接口卡与通过总线与CPU相连。CPU通过直接控制这些接口卡,来间接控制外设
各类存储器芯片
从读写属性分类:RAM(随机存储器),ROM(只读存储器),RAM 可读可写,必须带电才能存储信息,断电信息丢失;ROM 只能读,断电不会消失
从功能连接上又分为以下几类:
- 随机存储器(主板上的内存条和拓展卡槽的内存条)
- 装有 BIOS(基本输入输出系统) 的 ROM
- 接口卡上的 RAM(某些接口卡需要进行大批量输入,输出数据的暂时存储,就会装有RAM,例如:显卡自带RAM--显存,显卡会将显存里面的数据转到显示器上显示)
内存地址空间
上述存储器在物理上是独立的器件,但又两点是相同的
- 都和CPU相连
- CPU 通过控制总线向它们发出内存读写命令
也就是说,CPU 在控制它们的时候将他们当作内存看待,把它们总的看作若干个由存储器单元组成的逻辑上相连的空间,我们称之为内存地址空间
CPU 将各类存储器看做一个逻辑存储器的情况
- 主存储器地址空间(内存条)
- 显存
- 显卡BIOS的ROM空间
- 网卡BIOS的ROM空间
- 系统BIOS的ROW空间
我们可以通过三类总线的配合实现对内存地址空间的各种操作
参考
<<汇编语言第四版>>-王爽
浙公网安备 33010602011771号