汇编语言--基础知识

时间:2022-01-15 00:54:48

  汇编语言是各种CPU提供的机器指令的助记符的集合,人们可以用汇编语言直接控制硬件系统进行工作。汇编语言是人和计算机沟通的最直接方式,它描述了机器最终要执行的指令序列。学汇编的目的:充分获得底层编程的体验,深刻理解机器运行程序的机理。以8086CPU来学习。

机器语言:早期程序员使用,难于辨别和记忆

机器指令的集合,机器指令就是一台计算机可以正确执行的命令:一列二进制数字。
计算机将之转换为高低电平,以使计算机的电子器件收到驱动,进行计算。

汇编语言:

主体是汇编指令,汇编指令是机器指令便于程序员记忆的书写格式,是机器指令的助记符。
每一种CPU都有自己的汇编指令集。

汇编语言的组成:

(1):汇编指令:机器码的助记符,同机器码一一对应。(核心->汇编语言的特性)
(2):伪指令:没有对应的机器码,由编译器执行,计算机不执行。
(3):其他符号:如+、-、*、/等,由编译器识别,没有对应的机器码。

存储器:

存放计算机可以直接使用的信息。指令和数据在存储器存放,也就是内存。在PC机上,内存的作用仅次于CPU。磁盘不同于内存,磁盘上的数据或程序如果不读到内存中,就无法被CPU使用,CPU不能直接与硬盘进行数据交互。

指令和数据:

在内存或磁盘上,指令和数据没有任何区别,都是二进制信息。CPU在工作的时候把有的信息看作指令,有的信息看作数据,为同样的信息赋予不同的意义。

存储单元:

存储器被划分为若干个存储单元,每个存储单元从0开始顺序编号,例如一个存储器有128个存储单元,则编号从0-127。
电子计算机的最小信息单元是bit(比特),也就是一个二进制位。8位组成一个字节。微型机存储器的存储单元可以存储一个Byte(字节),即8个二进制位。微型机容量的最小单位是字节。
大容量的存储器用以下单位来计量容量:
1KB=1024B 1MB=1024KB 1GB=1024MB 1TB=1024GB

CPU对存储器的读写:

CPU要想进行数据的读写,必须和外部器件(芯片)进行下面三种信息的交互:
(1):指定存储单元的地址(地址信息);
(2):指明器件的选择,进行哪种操作,读或写的命令(控制信息);
(3):读或写的数据(数据信息)。

CPU是通过什么将地址、数据、控制信息传到存储器芯片中的呢?
电子计算机能处理传输的信息都是电信号,所以要用导线传送。在计算机中专门有连接CPU和其他芯片的导线,通常称为总线。根据传送信息的不同,总线从逻辑上又分为三类,地址总线、控制总线和数据总线。

CPU如何向3号单元写入数据26?
(1)CPU通过地址总线将地址信息3发出。
(2)CPU通过逻辑总线发出内存写命令,选中存储器芯片,并通知它,要向其中写入数据。
(3)CPU通过数据总线将数据26送入内存的3号单元中。

我们知道了CPU是如何进行数据读写的,可是如何命令计算机进行数据的读写呢?
要让一个计算机或微处理器工作,应向它输入能够驱动它进行工作的电平信息(机器码)。

地址总线:

在电子计算机中,一根导线可以传送的稳定状态只有两种,高电平或者低电平。用二进制表示就是0和1,10根导线可以传送10位二进制数据,即可以表示2的10次方个不同数据,寻址能力为1MB。
一个CPU有N根地址线,则可以说这个CPU的地址总线的宽度为N。
一个有10根地址线的CPU向内存发出地址信息11时,10根地址线上的二进制信息从下到上依次为0000001011(上面是低位)。寻址能力基本单位是B(字节)。

数据总线:

数据总线的宽度决定了CPU和外界的数据传送速度。8根数据总线一次可传送一个8位二进制数据,即一个字节。8088CPU的数据总线宽度为8,8086CPU的数据总线宽度为16。
向内存写入数据89D8H时,8088CPU分两次传送89D8,第一次传送D8,第二次传送89;8086CPU一次传送89D8。

控制总线:

控制总线是个总称,控制总线是一些不同控制线的集合,有多少根控制总线,就意味着CPU提供了对外部器件的多少种控制。所以控制总线的宽度决定了CPU对外部器件的控制能力。

检测题:

(1)1个CPU的寻址能力为8kb,那么它的地址总线宽度为13。
(2)1KB的存储器有1024个存储单元。存储单元的编号从0到1023。
(3)1KB的存储器可以存储2^13个bit,2^10个Byte。
(4)8080、8088、80286、80386的地址总线宽度分别为16根,20根,24根,32根,则它们的寻址能力分别为:2^16/2^10=64KB、1MB、16MB、4G。
(5)8080、8088、8086、80286、80386的数据总线宽度分别为8根,8根,16根,16根、32根,则它们一次可以传送的数据为:1B、1B、2B、2B、4B。

主板:

在每一台PC机中,都有一个主板,主板上有核心器件和一些主要器件,这些器件通过总线相连。这些器件有CPU、存储器、外围芯片组、扩展插槽等。扩展插槽一般插有RAM内存条和各类接口卡。

接口卡:

计算机系统中,所有可用程序控制其工作的设备,必须受到CPU的控制。CPU对外部设备不能直接控制,而是通过插在扩展插槽上的接口卡来直接控制。简单地讲,就是CPU通过总线向接口卡发送命令,接口卡根据CPU的命令控制外设进行工作。

各类存储器芯片:

一台PC机上装有很多个存储器芯片,从读写属性上看分为两类:随机存储器(RAM)和只读存储器(ROM)。随机存储器可读可写,但必须带电存储,关机后存储的内容丢失;只读存储器只能读取不能写入,关机后内容不丢失。

汇编语言--基础知识

内存地址空间

上述的那些存储器,在物理上是独立的器件,但是在以下两点上相同:
都和CPU的总线相连;CPU对它们进行读写的时候都通过控制线发出内存读写命令

CPU在操纵它们的时候,把它们都当作内存来对待,把它们总的看作一个由若干存储单元组成的逻辑存储器,这个逻辑存储器就是我们所说的内存地址空间(假想的逻辑存储器)。

所有的物理存储器都被看作一个由若干存储单元组成的逻辑存储器,每个逻辑存储器在这个逻辑存储器中占有一个地址段,即一段地址空间,CPU在这段地址空间中读写数据,实际上就是在相应的物理存储器中读写数据。

内存地址空间的大小受CPU地址总线宽度的限制。8086CPU的地址总线宽度为20,则8086CPU的内存地址空间大小为1MB。
我们在基于计算机硬件编程时,必须知道这个系统中的内存地址空间分配情况。 比如我们希望向显示器输出一段信息,那么必须将这段信息写到显存中,显卡才能将它输出到显示器上,要向显存中写入数据,必须知道显存在内存地址空间中的地址。