【1.0】基础知识
前言
本部分汇编内容是基于 8086 的架构,内容来源学习自王爽老师的《汇编语言》,你可以在 B站或者其他平台查找到相关视频内容,例如:通俗易懂的汇编语言(王爽老师的书)。
汇编系列内容仅作为本人学习记录用途,请自行参考
机器语言
众所周知,计算机最开始也是最底层就是二进制的 0 和 1,早期的程序员就是在一堆 0 和 1 中编程。
使用 0 和 1 的机器语言不仅抽象,而且出错不易查找错误,增加了复杂性和难度。
汇编语言的产生
早期的程序员为了解决直接使用机器语言所带来的问题,于是产生了汇编语言。
汇编语言的主体是汇编指令,汇编指令和机器指令的差别在于指令的表示方法上,汇编指令更加便于记忆和理解书写的格式。
例如:机器指令 1000100111011000 表示将寄存器 BX 的内容送到 AX 中。汇编指令则写成 mov ax,bx
。这种写法更加符合人类的语言和逻辑。
于是,程序员就使用汇编编写程序,然后通过编译器将汇编语言写出的源程序编译成机器码,最终计算机执行指令。
图片来源:王爽老师的《汇编语言》
计算机中的总线
在计算机中专门连接 CPU 和其他芯片的导线就是总线,从物理角度看,就是一堆线的集合。
计算机的总线可以从逻辑上分为三种:
- 地址总线
- 数据总线
- 控制总线
地址总线
CPU 通过地址总线来指定存储单元。地址总线的宽度,决定了可寻址的存储单元的大小。例如 N 根地址总线(宽度为 N),对应的寻址空间为 $2^N$ 。
数据总线
CPU 与内存或者其他元器件之间数据传输通过数据总线进行。数据总线的宽度决定了 CPU 和外界数据传输的速度。
控制总线
CPU 通过控制总线对外部元器件进行控制。控制总线的宽度决定了 CPU 对外部元器件的控制能力。
CPU 对存储器的读写
CPU 要进行数据读写,必须和外部器件进行三类信息的交互:
- 存储单元的地址(地址信息)
- 器件的选择,读或写命令(控制信息)
- 读和写的数据(数据信息)
总结来说就是从哪里拿什么数据用什么做什么事情。
从逻辑上,CPU将各类存储器看作一个逻辑存储器进行统一编制。每个物理存储器在这个逻辑存储器占有一个地址段,即一段地址空间。
图片来源:王爽老师的《汇编语言》
汇编语言环境搭建
本文基于 DOS 环境进行汇编语言的学习,我们采用 DOS 模拟器(DosBox)来模拟 DOS 环境。下载安装DosBox
模拟器后,还需要安装汇编的环境,汇编环境文件[点我访问](链接: httpss://pan.baidu.com/s/1-utULVh-oflpoOZcrryY0Q?pwd=nkxd) (提取码nkxd
)。
安装完成后,软件界面如下:
首先我们要先将我们的工作空间挂载到 DOS 上,目前 DOS 指向的是 Z 盘 ,命令示例:
1 | mount c d:\Calculate Software\DosBox\Data |
如下表示挂载成功。
然后将我们的汇编环境文件拷贝到我们的挂载文件路径下。
再挂载完成后,然后使用命令c:
将目录切换到C
盘,再使用dir
命令查看当前路径下的文件,如下所示:
到目前为止,你就已经完成汇编环境的搭建。
End
从后面开始就是正式的汇编语言的学习了,再次提醒,本文是基于 8086 架构的汇编语言。