爱技术 & 爱分享
爱蛋蛋 & 爱生活

初识汇编

什么是汇编?

首先我们得知道驱动CPU(Central Processing Unit)工作的是一条一条的指令。

CPU是一种微处理器。

每一种微处理器,由于硬件设计和内部结构的不同,就需要不同的电平脉冲来控制,是它工作。所以每一种微处理器都有自己的机器指令集,也就是机器语言。不过因为厂商为了兼容之前版本微处理器的指令和一些约定的原因,所以不同微处理器的大多数指令也可能是相同的。
机器语言是以0,1二进制的形势表现的,可读性很低。

例如:将寄存器BX的内容送到AX中

机器指令:1000100111011000

emmmmmmm,可读性很低,可以说是很直白的体现了吧。

汇编其实说简单一点就是程序员版本的机器语言。

上述操作的汇编指令为:

move ax,bx

可记性和可读性是不是一下子提升了一个档次。

汇编语言至今,有以下三类指令组成:
1. 汇编指令:机器码的助记符,有对应的机器码。
2. 伪指令:没有对应的机器码,由编译器执行,计算机并不执行。
3. 其他符号:如+,-,*,/等,由编译器识别,没有对应的机器码。

指令和数据

指令和数据是人为定义的,是程序使用上的概念。在内存和磁盘上,指令和数据是没有任何区别的,都是以二进制的形势存放的。

如之前的1000100111011000,可以作为move ax,bx指令被CPU执行也可以作为数据89D8H被应用所使用。

存储单元

存储器被划分为若干个存储单元,从0开始对其编号。一个存储单元被称为一个字节(Byte),一个字节是8位bite。

1KB=1024B 1MB=1024KB 1GB=1024MB 1TB=1024GB

CPU对于存储器的读写

CPU想要进行数据的读写,必须和外部器件进行下面三类信息的交互:
1. 存储单元的地址(地址信息)
2. 器件的选择,读或写的命令(控制信息)
3. 读或写的数据(数据信息)

计算机中专门连接CPU和其他芯片的导线,通常称为总线。在物理上来讲,总线就是一根根导线的集合。根据传输信息的不同又分为三类:
1. 地址总线
2. 控制总线
3. 物理总线

CPU读写存储流程

以上是CPU从3号单元中读取数据的过程:

  1. CPU通过地址线降地址信息3发出
  2. CPU通过控制线发出内存读取命令,选中存储芯片,并通知它,将要从中读取数据。
  3. 存储器将3号单元中的数据8通过数据线送入CPU

同理写操作也类似。

地址总线

CPU通过地址总线来指定需要读写的存储单元,所以地址总线的多少决定了CPU的寻址范围。比如地址总线的宽度为N,那么CPU的最大寻址范围为2^N次方。

数据总线

CPU和存储之间的数据传送是通过数据总线进行的。数据总线的宽度决定了CPU和外界的数据传输速度,8根数据总线一次可传送一个8为二进制数据(即一个字节)。16根数据总线一次可传送2个字节。

8088CPU的数据总线宽度为8,8086CPU的数据总线宽度为16。

控制总线

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

内存地址空间

各类存储器逻辑连接

上图是PC机中典型的存储器逻辑连接,他们之间相互独立,但是有两点是相同的:

  1. 通过总线与CPU相连。
  2. CPU对它们进行读写都通过控制线发出内存读写命令。

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

逻辑存储器

每个物理存储器在这个逻辑存储器中占一个地址段,即一段地址空间。CPU在这段地址空间中读写数据,实际上就是相对应的物理存储器中读写数据。

假设在上图中内存地址空间地址段分配如下:

地址0 ~ 7FFFH的32KB空间为主随机存储器的地址空间
地址8000H ~ 9FFFH的8KB空间为显存地址空间
地址A000H ~ FFFFH的24KB空间为各个ROM的地址空间

若:
CPU向内存地址 1000H的内存单元中写入数据,这数据就被写入主随机存储器中。
CPU向内存地址 8000H的内存单元中写入数据,这个数据就被写入显存中,然后就会被显卡输出到显示器上
CPU向内存地址 C000H的内存单元中写入数据,这个操作是没有结果的,C000H单元中的内容不会改变,因为其是ROM存储器的一个单元。

小结

汇编指令是机器指令的助记符,同机器指令一一对应

每一个CPU都有自己的汇编指令集

CPU可以直接使用的信息在存储器中存放

在存储器中的指令和数据没有任何区别,都是二进制信息

存储单元从零开始顺序编号

一个存储单元可以存储8 bit,即8位二进制

每一个CPU芯片都有许多管脚,这些管脚和总线相连。也可以说,这些管脚引出总线。一个CPU可以引出3种总线的宽度标志了这个CPU的不同方面的性能:

    地址总线的宽度决定了CPU的寻址能力
    数据总线的宽度决定了CPU与其他器件进行数据传送时一次数据传送量
    控制总线的宽度决定了CPU对系统中其他器件的控制能力
赞(1) 传送门
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。墨影 » 初识汇编