汇编语言基础知识
-
什么是汇编语言?
什么是语言呢?人类语言顾名思义就是人类用来交流的工具,机器语言我们也可以理解为机器之间用来交流的工具。人类语言就是各个国家的当地文字通过一定规律的组合,形成了自己的语言体系,它是具有一定的含义。机器之间交流不可能像我们人类一样能看能说,但它有一项特殊的本领,那就是可以感受电压的大小,当电压的大小超过我们所规定的一个界定值的时候,例如:超过家庭电源220v,我们呢,就规定他是1,当电压的大小低于我们规定的一个界定值的时候,我们就规定他为0。0、1这个就是机器的文字,当0、1通过一系列的排列组合,也就形成了一定的含义,这个就是机器语言。
当我们人类想要和机器去交流时,我们不得不去学习机器语言,但是机器语言却十分晦涩,难以理解,就像我们想和机器说“把寄存器bx中的值移入ax中”,我们就需要输入“1000100111011000”,很显然这样的语言难以记忆,也很容易会出错。那么我们想要和机器能够有效且无差错地交流怎么办呢?这个问题就像世界各地人民使用的语言都不一样,想要交流,怎么办呢?那么就需要一门全世界通用的语言------英语,大家都能理解,都能看得懂,汇编就是这样一门在人类和机器之间交流的语言。比如:我们想表达“把寄存器bx中的值移入ax中”,那么我们只要说“mov ax,bx”,机器就能自动转化为“1000100111011000”。 -
汇编语言转化为机器语言
机器就像是一个不懂英语的意大利本国人,我们说一句英语,要想这位外国人能听得懂,就需要有一位即能懂英语又能懂意大利语的翻译官把英语翻译成这个外国人的语言。在汇编中起翻译作用的就是我们的编译器了,因为汇编语言与机器语言是一一对应的,所以编译器它只要我们所输入的汇编指令一条条转化成机器语言就可以完成翻译工作了。 -
存储器
一台计算机中最重要的是CPU(中央处理器),它是用来控制整个计算机的运行和计算的。要想让cpu正常工作,我们就需要有机器语言来进行交流指挥它工作,也就是我们常说的指令和数据。而这些指令和数据就存放在存储器中,也就是我们的内存。这就好比我们的大脑和记忆,没有了记忆,大脑无法进行思考。cpu只能读取存放在内存中的数据,磁盘中的数据要是不输入内存中,是无法被cpu所执行的。 -
指令与数据
指令和数据本质上都是0、1代码,一样的0、1的组合可以有不同的理解,比如:“1000100111011000”,可以理解为数据:89D8H,也可以理解为指令:mov ax,bx。这种情况就要看编译器是把这段代码看作是指令还是数据了。指令和数据是存放在存储器中的。 -
存储单元
存储器被划分为许许多多个存储单元,这样的话就方便cpu来寻找指令和数据是在什么地方的。就像你在酒店找编号001的房间,你就会去到编号为001的房间,而不会去到别的房间里。我们也规定了1个存储单元里是有8个bit的也就是8个0、1代码,我们称为1个字节(Byte)。当存储单元特别多的时候,Byte就不够用了,我们就有其他的单位用来计算大小:
1KB=1024B(2^10B),
1MB=1024KB(2^20B),
1GB=1024MB(2^30B),
1TB=1024GB(2^40B) -
CPU对存储器的读写
既然CPU与存储器密切相关,那么CPU如何对存储器进行操作呢?CPU对存储器其实只有读与写两个操作,它对存储器的读写有三个步骤,你在哪里,我要干什么,你执行什么。
你在哪?其实就找到存储单元的地址,也就是发出地址信息。我要干什么?就是发出cpu要读数据还是写数据的操作,也就是发出控制信息。你执行什么?就是存储器接受到控制信息后,根据控制信息的内容发出它地址中的数据或者把数据写入相应的存储地址中,也就是发出或接受数据信息。
而这些信息都是电信号,自然就需要有电线来进行传输,也就需要三条总线来进行传输不同的信息,也就是地址总线-发送地址信息,控制总线-发送控制信息,数据总线-传输数据。
-
CPU的三条总线
1、地址总线
地址总线是CPU用来寻找内存中内存单元的位置。例如:CPU要寻找4号单元的位置 ,那么CPU就会发送0100,也就可以找到4号内存的位置了。而我们知道,1根电线只能传输1位bit,那我们要传送这4个bit,那我们就要4根电线来发送地址信号。由此我们可以看出1根电线CPU就能找到0、1这两个内存单元的地址,2根电线就能找到00、01、10、11这4个内存单元的地址,由此我们可以推导出,4根电线我们就可以找到2^4的内存位置。现在我们常说的32位系统,其实就是它的地址总线有32根,CPU也就可以找到2的32次方的内存地址,即4G的内存单元可以被CPU找到。
2、控制总线
控制总线是CPU对外部设备的控制信号的传递。控制总线有多少根,也就表示了CPU对外部设备有多少种控制。
3、数据总线
数据总线是用来传输数据的。一根电线可以传输1位bit,8根电线就可以传输8位bit。