基础知识---汇编学习笔记

第一章


1.1 机器语言

电子计算机的机器指令是一列二进制数字。计算机将之转变成一列高低电平,以使计算机的电子器件受到驱动,进行运算。


1.2 汇编语言的产生

在这里我们发现一个问题:用0和1来描述程序,很难辨别和记忆。于是汇编语言产生了。
我们用汇编指令代替机器指令,汇编指令由编译器翻译成机器指令。
编译过程:
这里写图片描述


1.3 汇编语言的组成

这里写图片描述
第一点,比如我们之前所看到的的汇编指令mov ax,bx等同于机器指令1000100111011000
第二点,后面的课程会得到体现。比如:loop h,由编译器来执行,将h翻译成h所在的地址
第三点,有与你们相同的疑问。


1.4 存储器

硬盘、内存、CPU之间的关系。
内存中存放着指令和数据。CPU通过总线读写内存,内存可以读写硬盘。


1.5 指令和数据

指令和数据是应用上的概念。CPU该如何区分一列机器码是指令还是数据呢?


1.6 存储单元

一个存储器有多个存储单元,存储单元从0开始编号
一个存储单元可以存储一个字节(Byte)
1Byte = 8bit (一个字节等于8个比特)


1.7 CPU对存储器的读写

CPU想要进行数据的读写,必须和外部部件(标准说法是芯片,PS:因为RAM是芯片)进行下面3类的信息的交互。

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

例如一个读取过程:
这里写图片描述
上图将读取到 “08” 这个数据到CPU中

对于8086CPU,下面的机器码,能过完成上图过程。
机器码: 101000000000001100000000
含义: 从3号单元读取数据送入寄存器AX

机器码难于记忆,用汇编指令代替。
机器码: 101000000000001100000000
汇编指令: MOV AX,[3]
含义: 传送3号单元的内容到AX


1.8 地址总线

很容易知道,地址总线的根数决定了CPU能够读取存储单元的个数(这是由于二进制可表示的数据范围)。
比如:10根地址,则可以读取1024个存储单元。它的数据范围在0~1023。
公式显而易见:可读取存储单元个数 = 2的地址总线根数次方
这里写图片描述
上图指向内存中为(1101000000)2的地址,对应十进制832


1.9 数据总线

数据总线若为8根,则一次可传送8位二进制数据,也就是1个字节数据。
数据总线若为16根,则一次可传送16位二进制数据,也就是2个字节数据。

8根地址总线如下:
这里写图片描述
16根地址总线如下:
这里写图片描述
上图所做的都是传送D8和89。两者的区别在于,前者用了2次传送,后者只用了1次传送。


1.10 控制总线

CPU对外部部件的控制是由控制总线来进行的。它是一些不同控制线的集合比如读写控制线属于控制总线中的一条。而读写控制线只进行读写操作。0代表读,1代表写。


小结

  1. 汇编指令是机器指令的助记符,同机器指令一一对应。
  2. 每一种CPU都有自己的汇编指令集。
  3. CPU可以直接使用的信息在存储器中存放。(换句话说就是CPU将信息存储在内存中)
  4. 在存储器中指令和数据没有区别,都是二进制信息。(存在相同二进制信息,它既是指令又是数据)
  5. 存储单元从0开始顺序编号。
  6. 一个存储单元可以存储8bit,即8位二进制数。
  7. 1Byte=8bit 1KB=1024B 1MB=1024KB 1GB=1024MB。
  8. 每一个CPU芯片都有多个管脚,这些管脚和总线相连。一个CPU可以与3种总线相连,3种总线的宽度标志了这个CPU不同方面的性能。(PS:可以将内存看做“以下的”其他器件)
    1. 地址总线,决定了CPU的寻址能力
    2. 数据总线,决定了CPU与其他器件进行数据传输时的一次数据传送量
    3. 控制总线,决定了CPU对系统中其他器件控制能力

检测点 1.1

(1) 1个CPU的寻址能力为8KB,那么它的地址总线的宽度为 13
(2) 1KB的存储器有 1024 个存储单元。存储单元的编号从 01023
(3) 1KB的存储器可以存储 8096 个bit,1024 个Byte。
(4) 1GB、1MB、1KB分别是 1073741824 Byte、 1048576 Byte、1024 Byte。
(5) 8080、8088、80286、80386的地址总线宽度分别为16根、20根、24根、32根,则它们的寻址能力分别为:64(KB)、1(MB)、16(MB)、4(GB)。
(6) 8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。则它们一次可以传送的数据为:1(B)、1(B)、2(B)、2(B)、4(B)。
(7) 从内存中读取1024字节的数据,8086至少要读512次,80386至少要读256次。
(8) 在存储器中,数据和程序以二进制形式存放。


1.11 内存地址空间(概述)

什么是内存空间呢?
比如,一个CPU的地址总线宽度为10,那么可以寻址1024个内存单元(或者说存储单元),这1024个可寻的内存单元就构成这个CPU的内存地址空间


1.12 主板

每台PC都有一个主板。
主板上有核心器件和一些主要器件。这些器件通过总线相连。(总线包括三种:地址总线、数据总线、控制总线)
这些器件有CPU、存储器、外围芯片组、扩展插槽等。(PS:扩展插槽一般插有RAM内存条和各类接口卡)


1.13 接口卡

CPU对外设不能直接控制。直接控制这些设备进行工作的是插在扩展插槽上的接口卡。
扩展插槽通过总线和CPU相连,所以接口卡也通过总线同CPU相连。CPU直接控制这些接口卡,从而实现CPU对外设的间接控制。
也就是CPU通过总线想接口卡发送命令,接口卡根据CPU的命令控制着外设


1.14 各类存储器芯片

从读写属性上可以分为两类:随机存储器(RAM)只读存储器(ROM)

随机存储器(RAM):可读可写,必须带电存储,关机后存储内容丢失
只读存储器(ROM):只读无法写,关机后内容不丢失

随机存储器
用于存放供CPU使用的绝大部分程序和数据,主随机存储器一般由两个位置上的RAM组成,装在主板上RAM和插在扩展插槽上的RAM

装有BIOS(Basic Input/Output System,基本输入输出系统)的ROM
BIOS是由主板和各类接口卡(显卡、网卡等)厂商提供的软件系统,可以通过BIOS进行硬件设备最基本的输入输出。主板和某些接口卡上存储相应的BIOS的ROM。(PS:也就是主板的ROM上有属于主板的BIOS、显卡的ROM上有属于显卡BIOS。有BIOS我们就可以驱动主板和显卡等其他设备)

接口卡上的RAM
某些接口卡需要对大批量输入、输出数据进行暂时存储,在其上装有RAM。最典型的的是显卡上的RAM,一般称为显存。显示卡随时将显存中的数据向显示器上输出。换句话说,我们将需要显示的内容写入显存,就会出现在显示器上。(PS:这也是为什么游戏那么吃显卡的原因,所以要学游戏的小伙伴,该好好学怎么驱动显卡跟数字图形学哦~)

用一张图描述上面所讲(图中可以知道网卡也有BIOS):
这里写图片描述


1.15 内存地址空间

前面的那些存储器,在物理上是独立的器件,但是在以下两点上相同。

  • 都和CPU的总线相连
  • CPU对他们进行读或写的时候都是通过控制线发出内存读写命令。

也就是说,CPU控制它们的时候,把它们都当作内存来对待,把它们总的看作一个“由若干个存储单元”组成的“逻辑存储器”,这个逻辑存储器就是我们所说的内存地址空间

逻辑存储器概念图:
这里写图片描述

我们在基于一个计算机硬件系统编程的时候,必须知道这个系统中的内存地址空间分配情况。(PS:比如我们要在显示器上面显示一些东西,可以改显存地址空间的内容实现,而不是用高级语言封装起来的图形库编程来实现。)

8086PC机内存地址空间分配的基本情况:
这里写图片描述
最终运行程序的是CPU,我们用汇编语言编程的时候,必须要从CPU的角度考虑问题。对CPU来讲,系统中的所有存储单元都处于一个统一的逻辑存储器中,它的容量受CPU寻址能力的限制。这个逻辑存储器即是我们所说的内存地址空间。

猜你喜欢

转载自blog.csdn.net/qq_37340753/article/details/80895565