前言

本部分汇编内容是基于 8086 的架构,内容来源学习自王爽老师的《汇编语言》,你可以在 B站或者其他平台查找到相关视频内容,例如:通俗易懂的汇编语言(王爽老师的书)

汇编系列内容仅作为本人学习记录用途,请自行参考

机器语言

众所周知,计算机最开始也是最底层就是二进制的 0 和 1,早期的程序员就是在一堆 0 和 1 中编程。

使用 0 和 1 的机器语言不仅抽象,而且出错不易查找错误,增加了复杂性和难度。

汇编语言的产生

早期的程序员为了解决直接使用机器语言所带来的问题,于是产生了汇编语言。

汇编语言的主体是汇编指令,汇编指令和机器指令的差别在于指令的表示方法上,汇编指令更加便于记忆和理解书写的格式。

例如:机器指令 1000100111011000 表示将寄存器 BX 的内容送到 AX 中。汇编指令则写成 mov ax,bx。这种写法更加符合人类的语言和逻辑。

于是,程序员就使用汇编编写程序,然后通过编译器将汇编语言写出的源程序编译成机器码,最终计算机执行指令。

image-20230106000851058

图片来源:王爽老师的《汇编语言》

计算机中的总线

在计算机中专门连接 CPU 和其他芯片的导线就是总线,从物理角度看,就是一堆线的集合。

计算机的总线可以从逻辑上分为三种:

  1. 地址总线
  2. 数据总线
  3. 控制总线

地址总线

CPU 通过地址总线来指定存储单元。地址总线的宽度,决定了可寻址的存储单元的大小。例如 N 根地址总线(宽度为 N),对应的寻址空间为 $2^N$ 。

数据总线

CPU 与内存或者其他元器件之间数据传输通过数据总线进行。数据总线的宽度决定了 CPU 和外界数据传输的速度。

控制总线

CPU 通过控制总线对外部元器件进行控制。控制总线的宽度决定了 CPU 对外部元器件的控制能力。

CPU 对存储器的读写

CPU 要进行数据读写,必须和外部器件进行三类信息的交互:

  1. 存储单元的地址(地址信息)
  2. 器件的选择,读或写命令(控制信息)
  3. 读和写的数据(数据信息)

总结来说就是从哪里拿什么数据用什么做什么事情。

从逻辑上,CPU将各类存储器看作一个逻辑存储器进行统一编制。每个物理存储器在这个逻辑存储器占有一个地址段,即一段地址空间。

image-20230106004255580

图片来源:王爽老师的《汇编语言》

汇编语言环境搭建

本文基于 DOS 环境进行汇编语言的学习,我们采用 DOS 模拟器(DosBox)来模拟 DOS 环境。下载安装DosBox模拟器后,还需要安装汇编的环境,汇编环境文件[点我访问](链接: httpss://pan.baidu.com/s/1-utULVh-oflpoOZcrryY0Q?pwd=nkxd) (提取码nkxd)。

image-20230106004728708

安装完成后,软件界面如下:

image-20230106004834797

首先我们要先将我们的工作空间挂载到 DOS 上,目前 DOS 指向的是 Z 盘 ,命令示例:

1
2
mount c d:\Calculate Software\DosBox\Data
# 这句指令的意思是 将DOS模拟器环境中的C盘 对应到我们实际机器上的后面的路径

如下表示挂载成功。

image-20230106005614743

然后将我们的汇编环境文件拷贝到我们的挂载文件路径下。

image-20230106010432525

再挂载完成后,然后使用命令c:将目录切换到C盘,再使用dir命令查看当前路径下的文件,如下所示:

image-20230106010557163

到目前为止,你就已经完成汇编环境的搭建。

End

从后面开始就是正式的汇编语言的学习了,再次提醒,本文是基于 8086 架构的汇编语言。