汇编基础知识
机器语言
1、机器语言是机器指令的集合,机器指令就是机器可以正确执行的命令,由二进制数组成
2、当今我们常用的是pc机,由一个芯片完成上述功能,即CPU是一种微处理器,每一种微处理器由于自身硬件设计和内部构造不同都拥有自己的机器指令集,即机器语言。
3、由于机器语言是二进制组成的,可读性极差,篇幅也较长,于是产生了汇编语言
汇编语言的产生
1、汇编语言的主题是汇编指令,相较于机器指令,可读性有了极大的提升
例如:机器指令1000100111011000,汇编指令mov ax,bx两者皆表示将寄存器bx的内容送到ax
2、寄存器是CPU中粗存数据的器件,CPU中由多个寄存器,例如ax、bx为其代号。
3、由于汇编指令计算机不能直接读懂,所以要加上一个翻译,也就是编译器
汇编语言变成机器指令的过程:汇编指令——>编译器——>机器指令——>计算机
汇编语言的组成
汇编语言总共由三类指令:
1、汇编指令:机器码转成的可读性强的助记符
2、伪指令:无对应的机器码,由编译器执行,计算机不执行
3、其他符号:如+、-、*、/等等,由编译器识别,无对应机器码
储存器
1、储存器中存放指令和数据,也就是内存,通过向CPU提供指令和数据使CPU运行,没有储存器CPU就无法运行,简单说就是cpu负责计算,像解题的工具,储存器负责储存有用信息,没有信息也就是题目就没办法进行计算。
2、磁盘区别于内存,磁盘内的内容不能直接提供给CPU进行处理,要先读取到内存,再由内存提供给磁盘CPU
指令和数据
内存和磁盘上的指令和数据本质上没有区别,都是一串二进制数,只有应用上的区别
例如1000100111011000作为数据应用处理的话是89D8H,作为指令处理是mov ax,bx;这就展示了指令和数据本质上的相同,只有作为数据应用还是作为指令应用的不同
储存单元
储存器被划分成若干个储存单元,每个储存单元从0~127编号,128个
每个二进制位是1个bit,8个bit组成一个byte(字节),微型机储存单元可以储存一个byte,128个单元共储存128给byte
CPU对储存器的读写
一台微机中有很多器件,因此CPU在读取时要有以下三个动作:
1、储存单元的地址
2、选择目标器件,进行读或写的操作
3、想要读或写的数据
电子计算机能处理、传输的信息都是电信号,因此我们用导线将微机中CPU与其他一个个部件连接起来,这些专门的线称为总线。
下图是从3号单元读取数据8的过程
三条线对应上面说的过程:地址线通知储存单元的地址,数据线用于储存器回馈CPU信息的道路,控制线来说明具体对3单元执行的操作
地址总线
CPU通过地址总线来指定储存器单元的地址
例如上图,总共有10个地址总线,一条地址总线只能发送高电平或低电平,也就是1和0;那么有10条地址总线也就意味着可以传输10位二进制数,即2的10次方,同理假设有n条地址总线,就有2的n次方种二进制排列,也就是可以访问2的n次方种数据单元。
数据总线
1、CPU与其他器件的数据传输是用数据总线来完成的,数据总线的宽度决定了传输速度,8条数据总线可以传输一个8位的二进制数据,即1byte。
2、主流的两种CPU:8088CPU的数据总线宽度是8,8086CPU的数据总线宽度是16
首先是8088CPU,下图是传输数据89D8H的过程
这边具体解释要先89D8H的含义,H是十六进制标识符,89D8是十六进制数,计算机储存数据遵循低字节存低地址,高字节存高地址的规则,CPU通过数据总线发送数据时,计算机规定,一串数据右侧是低字节,左侧是高字节,所以先发送低字节D8再发送高字节89,由于8088CPU的数据总线宽度是8,一次仅能传输1byte的数据,所以将89D8分两次传输,接着说一下低字节存低地址,高字节存高地址的规则,这个规则其实和本次传输没什么关系,因为89D8是一组已经规定的数据,它存入这个数据单元时就是按照它原本的顺序存入了即89D8从右往左就是由低到高,而低字节存低地址,高字节存高地址的规则指的是当两个数据要存入数据单元时,例如是两个十六进制数89D8和7A2B,这两个十六进制数转换成十进制时分别是35288和31275,显然是前者大,所以假设前面的单元都存满了,从2000开始89D就要存在2000和2001,7A2B则存在2002和2003。
而如果是8086CPU就一次性传输89D8H
控制总线
1、CPU通过控制总线来控制外部器件,有多少控制总线就意味着CPU对外部器件有多少种控制。
2、控制总线其实是一种总称,控制总线是由若干不同的控制线组成的集合。
内存地址空间
假设CPU地址总线宽度是10,那么就有2的10次方种不同的二进制排列方式,对应1024个可找寻的内存单元,这1024个内存单元就组成了CPU的内存地址空间
那么我是不是可以这样理解,首先CPU的总内存单元肯定不止1024个,但是如果是上面说的CPU内存地址空间就只有1024,那是不是一次只能运用1024个内存单元,如果已经使用了1024给内存地址单元,要使用其他时是不是要删除掉部分已经存进内存地址空间的内存单元,才能继续调用其他的内存单元。
主板
简单来说就是将各类核心器件和主要器件组合起来的东西,这些器件用上述的总线连接。
接口卡
计算机工作中,CPU承担所有可用程序控制我i工作的设备,但是对于一些外部设备,CPU不能直接控制所有就需要接口卡来承担桥梁连接CPU与这些设备。接口卡通过总线与CPU相连,CPU可以直接控制接口卡从而控制通过接口卡连接的外部设备。
各类储存器的芯片
pc机中有许多储存器芯片,从物理角度看是独立的,可以从读写属性分为RAM(随机存储器)和ROM(只读储存器);RAM可读写,但必须带电储存,就是必须在计算机运行时候储存,不然会造成丢失,ROM只能读取不能写入,关机后内容不丢失。
那么是不是可以这样理解,在一台计算机成型之后,RAM相当于是我们可以编辑的部分,ROM是在组装计算机之前预先设定好的,当我们在使用计算机时,需要ROM中的一些功能或者数据就在ROM中读取使用而已。
内存地址空间
上述的储存器虽说在物理意义上是独立的器件,但是有两个共同点:
1、和CPU的总线相连
2、CPU对他们进行读写命令的时候都通过控制总线发出内存读写命令
这样的话,CPU在对他们发出命令的时候都将他们当作内存对待,也就是由若干个储存单元组成的有逻辑的储存器,这个逻辑储存器就是内存地址空间。上面我们也有提到例如一个计算机地址总线宽度是10那么也就有1024给可寻的内存地址单元,而CPU在使用这些逻辑储存器时将他们当做内存看待,也就是读写二进制数,那么命令这些逻辑储存器时,地址总线就要对应的从相应的逻辑储存器传输若干个二进制数,这些传输的二进制数就会变成内存地址空间,但是内存地址空间是有限的,所有CPU命令这些逻辑储存器的个数也是有限的,能实现的功能也就是有限的。
从图中也可以看到各类的储存器由若干个储存单元组成的逻辑储存器,其实就是内存;每个储存器都占用了一部分内存地址空间内的一个地址段,CPU在这段地址段进行的读写操作,就是在相应的储存器中进行读写数据操作。
当我们想要在某类寄存器进行读写操作时,必须直到这个储存器的第一个和最后一个单元的地址,才能保证进行的操作在预期的单元内。例如我们想要在显示器上显示一段信息,我们就要将这段信息写进显存中,显卡才能将他显示在显示屏上。不同的计算机系统的内存地址空间分配是不一样的。