汇编基础(一)

寒假看B站小甲鱼视频的笔记一

前言

汇编语言特点

机器语言以外最底层的语言

所有语言中效率最高

学习目标

了解CPU、内存和其他硬件如何配合

计算机的思维操作计算机。

研究重点:计算机思维

如何利用硬件系统的编程结构和指令集有效灵活地控制系统进行工作,重在思维

机器语言

机器语言是机器指令的集合

机器语言是机器指令的集合。

机器指令是01串

机器指令是计算机(CPU)唯一懂的指令,由0和1组成。

指令的三种表示方法

机器指令

01010000

汇编语言

PUSH AX

电平脉冲

按次序的8个脉冲

汇编语言的产生

汇编指令和机器指令的差别在于指令的表示方法

汇编指令和机器指令的差别在于指令的表示方法。

汇编语言是符号语言,和机器语言之间的对应关系基本上是一一对应的。

一条机器语言的指令对应一条汇编语言的指令。

ollydbg

汇编语言作用过程

汇编指令,经过编译器处理(类似于替换作用,不完全是替换),变成机器码,交给计算机。

汇编语言的组成

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

伪指令和其他符号可以归为一类。

汇编指令

机器指令的助记符。

伪指令

由编译器执行。

其他符号

由编译器识别。

存储器

CPU的作用:控制整个计算机并进行运算

CPU是计算机的核心部件,它控制整个计算机的运作进行运算

CPU工作的信息要求:指令+数据

要想让一个CPU工作,就必须向它提供指令和数据

提供指令

提供数据

CPU对存储器进行读写的信息要求

CPU要进行数据的读写,必须和外部器件(标准说法是芯片)进行三类信息的交互:

地址信息

存储单元的序号(地址)。

控制信息

器件的选择,读或写命令。

数据信息

读或写的数据。

存储器的分类

按读写属性分类:RAM和ROM

随机存储器RAM

只读存储器ROM

RAM和ROM的区别

断电后,RAM中的数据将会遗失,而ROM中的数据不会。

按功能和连接分类:

随机存储器RAM

装有BIOS的ROM

接口卡上的RAM

BIOS

BIOS是基本IO系统

Basic Input/Output System,基本输入输出系统。

BIOS是由主板和各类接口卡(显卡、网卡等)厂商提供的软件系统。

主板和接口卡的知识在后边。

BIOS在主板和某些接口卡的ROM中

不止主板才有BIOS,在主板和某些接口卡上插有存储相应BIOS的ROM。

BIOS的作用

可以通过BIOS利用对应硬件设备进行最基本的输入输出。

开机时看到的界面就是BIOS在发生作用,它在检测CPU、内存、硬盘、键盘等等有没有插好。

如果病毒进入BIOS,杀毒软件也杀不掉的。

内部存储器

内部存储器是内存,一个大的RAM

平常所说的内存条、内存就是内部存储器,一个大的RAM。

内部存储器的作用

PC机中内存的作用仅次于CPU,离开内存,再好的CPU也无法工作。

磁盘不同于内存,磁盘上的数据或程序如果不读到内存中,就无法被CPU使用。

显卡、网卡、BIOS等都是有它的(存储器)内存的。

CPU和内存读写很快,内存和磁盘读写的速度比较慢。

存储器存储的内容及其作用

存储器存储了指令和数据。

指令

指令告诉CPU怎么操作

数据

数据告诉CPU什么操作什么

指令和数据的关系

  • 指令和数据是应用上的概念。
  • 在内存或磁盘中,指令和数据没有任何区别,都是二进制信息。

根据程序员如何应用,CPU处理的二进制信息 可以是汇编代码(指令),也可以是数据,如下:

  • 1000100111011000

    • 89D8H

      数据,末尾的H表示Hex,十六进制。B表示二进制,十进制没有后缀。

    • MOV AX,BX

      程序,将寄存器BX的内容粘贴到寄存器AX中。

寄存器

寄存器是CPU中可以存储数据的器件,一个CPU中有多个寄存器。

寄存器是一种比内存和二级缓存更低一层,更接近CPU的存储器。

存储单元

存储单元是存储器的一个个部分

存储器被划分为若干个存储单元。

每个存储单元存储一个字节

每个存储单元存储一个字节。

1字节(Byte)= 8位(bit) 1B=8b

存储单元从0开始编号

存储单元从0开始顺序编号。计算机都从0开始计数。

例如:

一个存储器有128个存储单元。编号0-127。

显卡里面有个内存,叫显存,数据存在显存里面,显卡里的GPU把显存中的数据映射到屏幕上。GPU的速度比CPU快多了。3D游戏对于显卡的要求是很高的。

总线

计算机传输、处理的信息都是电信号,电信号要用导线传送。

计算机中专门有连接CPU和其他芯片的导线,称作总线。

总线分类

在物理层次上,总线是一根根导线的集合。

逻辑上的分类:

地址总线

CPU是通过地址总线来指定存储器单元的。所以地址总线能传送多少个不同的信息,CPU就可以对多少个存储单元进行寻址。

一个CPU有$N$根地址总线,则其地址总线宽度为$N$,它可以寻找$2^N$个内存单元。

寻址能力

寻址能力为8KB,即能寻找到8*1024个字节,总线宽度为13。

数据总线

有几根数据总线就最多可以传几位。

控制总线

控制总线是一些不同控制线的集合。CPU通过控制总线控制外部器件。

有多少根控制总线就意味着CPU提供了对外部器件的多少种控制。

总线的逻辑划分.png内存不只是内存条,还有显存,网卡内存等,它们线性排列。

主板

每个PC机,都有一个主板。

主板上有核心器件(CPU、内存)和一些主要器件,这些器件通过总线(地址总线、数据总线、控制总线)相连。

接口卡

计算机系统中,所有可用程序控制其工作的设备,必须受到CPU的控制。

CPU对外部设备不能直接控制,如显示器、音箱、打印机等。

直接控制这些设备进行工作的是插在扩展插槽上的接口卡。

内存地址空间

不同的计算机系统的内存地址空间分配情况是不同的。

各类存储器逻辑相同点

各类存储器在物理上是独立的器件:

PC机各类存储器的逻辑连接.png

但它们在逻辑上有两点相同:

都和CPU总线相连

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

什么是内存地址空间

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

各类存储器在逻辑上合并成一个存储器

把各类存储器看做一个逻辑存储器.png

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

每个物理上的存储器在逻辑上占有一段地址段,CPU对其段进行操作,就是对物理存储进行操作。

最终运行程序的是CPU,我们用汇编语言编程时,必须要从CPU角度考虑问题。

小结

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

作者:@臭咸鱼

转载请注明出处:https://chouxianyu.github.io

欢迎讨论和交流!