个人主页:@聆风吟的个人主页
⏰寄语:少年有梦不应止于心动,更要付诸行动。
☀️欢迎大家关注点赞收藏⭐️留言
作者留言:文章创作不易,可能会有些地方出现错误,还希望广大读者们能够帮忙指出,让我们大家一起共同进步。
机器语言是机器指令的集合。机器指令展开来讲就是一台机器可以正确执行的命令。电子计算机的机器指令是一系列二进制的数字。
早期计算机就是指可以执行机器指令,进行运算的机器。在我们常用的PC机中,有一个芯片,就是我们常说的CPU(Central Processing Unit,中央处理单元)可以完成前面所说的计算机的功能,但是每一种这样的微处理器(CPU)由于硬件设计和内部结构的不同,就需要用不同的电平脉冲来控制,使它工作。所以每一种微处理器都有自己的机器指令集,也就是机器语言。
早期的程序设计均使用机器语言。程序员们将用0, 1数字编成的程序代码打在纸带或卡片上,1打孔,0不打孔,再将程序通过纸带机或卡片机输入计算机,进行运算。如下图:
上面这个非常简单的程序,就可以暴露机器码的晦涩难懂和不易查错。如果要写上一个大的程序,你的内心会如何呢?如果当中有 “1” 写成了 “0”,你又如何修改呢?这时候汇编语言便产生了。
汇编语言的主体是汇编指令。汇编指令和机械指令的差别在于指令的表示方法上。汇编指令是机械指令便于记忆的书写格式(即汇编指令是机器指令的助记符)。例如:机器指令 1000100111011000
表示把寄存器 BX 的内容送到 AX 中。汇编指令则写成 mov ax, bx
。这样的写法与人类语言接近,便于阅读和记忆。
小知识拓展:
寄存器:简单的讲就是 CPU 中可以存储数据的器件,一个 CPU 中有多个寄存器。AX 是其中一个寄存器的代号,BX 是另一个寄存器的代号。更多详细内容我们将会下寄存器那张讲解。
汇编语言出现以后,程序猿都开始用汇编编写成源程序。但是问题又来了,计算机只能识别机器指令,那么如何让计算机执行程序猿用的汇编指令编写的程序呢?这时,就需要一个能够将汇编指令转换成机器指令的翻译程序,这样的程序我们称其为编译器。程序猿用汇编语言编写出源程序,再用汇编编译器将其翻译成机器码,由计算机最终执行。如下图:
汇编语言发展至今,有以下 3 类指令组成。
+
、-
、*
、/
等,由编译器识别,没有对应的机器码。汇编语言的核心是汇编指令,它决定了汇编语言的特性。
CPU 是计算机的核心部件,它控制整个计算机的运作并进行运算。要想让一个 CPU 工作,就必须向它提供指令和数据。指令和数据在存储器中存放,也就是平时所说的内存。
指令和数据是应用上的概念。在内存或磁盘上,指令和数据没有任何区别,都是二进制信息。CPU 在工作的时候把有的信息看作指令,有的信息看作数据,为同样的信息赋予不同的意义。例如:内存中的二进制信息 1000100111011000
,计算机可以把它看作大小为 89D8H
的数据来处理,也可以将其看作指令 mov ax, bx
来执行。
存储单元被划分成若干存储单元,每个存储单元从 0
开始顺序编号。例如一个存储器有 128
个存储单元,编号从 0 ~ 127
,如下图:
我们知道电子计算机中的最小单元是 bit(音译为比特),也就是一个二进制位。8 个bit 组成一个 Byte, 也就是通常讲的一个字节。微型机存储器的存储单元可以存储一个 Byte,即 8 个二级制位。一个存储器有 128 个存储单元,它可以存储 128 个Byte。
对于大容量的存储器一般还用以下单位来计量容量(以下用 B
来代表 Byte
):
单位 | 换算关系 |
---|---|
千字节(KB) | 1 KB = 1024 B = 2^10 B |
兆字节(MB) | 1 MB = 1024 KB = 2^20 B |
吉字节(GB) | 1 GB = 1024 MB = 2^30 B |
太字节(TB) | 1 TB = 1024 GB = 2^14 B |
CPU 想要进行数据的读写,必须和外部器件(标准的说法是芯片)进行三类信息的交互:
那么 CPU 是通过什么将地址、数据和控制性信息传到存储芯片中的呢?电子计算机能处理、传输的信息都是电信号,电信号当然要用导线传送。在计算机中专门有连接 CPU 和其他芯片的导线,通常称为总线。总线分类:
CPU 是通过地址总线来指定存储器单元的。可见地址总线上能传送多少个不同的信息,CPU 就可以对多少存储单元进行寻址。那地址总线如何发送信息的呢?
重点:一个CPU有
N
根地址总线,则可以说这个CPU的地址总线的宽度为N
。这样的CPU最多可以寻找2^N
个内存单元。
CPU 与内存或其它器件之间的数据传送是通过数据总线来进行的。数据总线的宽度数据总线的宽度决定了 CPU 和外界的数据传送速度。例如:8根数据总线一次可以传送一个8位的二进制数据(即一个字节)。16根数据总线一次可以传送两个字节。
CPU 对外部器件的控制是通过控制总线来进行的。在这里控制总线是个总称,控制总线是一些不同控制的线的集合。有多少根控制总线,就意味着CPU提供了对外部器件的多少控制。所以,控制总线的宽度决定了 CPU 对外部器件的控制能力。
本文回顾:
今天的内容就到这里了,你们都学会了吗?如果还有疑问的话请在评论区里多多提问,大家可以一起帮你解决,让我们共同进步。创作不易,如果对你有用的的话点个赞支持下作者,你们的支持是作者创作最大的动力。关注我不迷路。
文献参考:
《汇编语言》由郑爽老师著作。