参考教程:通俗易懂的汇编语言(王爽老师的书)_哔哩哔哩_bilibili
一、学习汇编语言的理由
1、汇编语言在实际应用中的意义
(1)效率方面:
①运行效率:可用于开发软件的核心部件,实现快速执行和实时响应。
②开发效率:汇编语言可直接访问计算机内存的指定地址,在某些情况下开发效率比高级语言还要高。
(2)应用场景:
①用于编写操作系统的内核。
②在诸多嵌入式系统中也有使用汇编语言的场景,如FreeRTOS的PendSV中断服务函数。
2、汇编语言在学习过程中的意义
(1)便于加深对计算机原理和操作系统等课程的理解。
(2)通过学习和使用汇编语言,能够感知、体会和理解机器的逻辑功能。
①向上为理解各种软件系统的原理,打下技术理论基础。
②向下为掌握硬件系统的原理,打下实践应用基础。
(3)学会底层的程序调试和错误分析方法。
二、机器语言与汇编语言
1、机器语言与机器指令
(1)机器语言是机器指令的集合,机器指令是一台机器可以正确执行的命令。
(2)机器指令由一串二进制数表示,如“01010000”,在硬件层面它可以由一串电平脉冲表示,但很显然,用一串数字表示指令非常抽象,而且也难以记忆,程序出现bug也难以排查。
2、汇编语言与汇编指令
(1)汇编语言是汇编指令的集合,汇编指令和机器指令的差别在于指令的表示方法上。
①汇编指令是机器指令便于记忆的书写格式。
②汇编指令是机器指令的助记符。
(2)举例:
机器指令“1000100111011000”执行的操作为将寄存器BX的内容送到AX中,这条机器指令等价于汇编指令“MOV AX BX”,“MOV”是英文单词“move”的简写,由此可见汇编指令相较于机器指令,语意更加浅显易懂。
(3)用汇编语言编写程序的工作过程:程序员用汇编语言写出源程序,再用汇编编译器将其编译为机器码,由计算机最终执行。
三、计算机的组成
1、计算机的组件
(1)将一般的台式计算机主机拆开,可看到里面有一块主板,主板中包含CPU、总线、内存条、扩展槽等组件。
(2)CPU是计算机的核心部件(下左图),它控制整个计算机的运作并进行运算,要想让一个CPU工作,就必须向它提供指令和数据。
(3)指令和数据在存储器(内存)中存放,离开了内存,性能再好的CPU也无法工作。
2、存储器与存储单元
(1)存储器被划分为若干个存储单元,每个存储单元从0开始顺序编号,例如一个存储器有128个存储单元,编号从0~127,如下图所示。
(2)电子计算机的最小信息单位是bit,也就是一个二进制位,8个bit组成一个Byte,也就是通常讲的一个字节。微型机存储器的一个存储单元可以存储一个Byte,即8个二进制位,如果一个存储器有128个存储单元,那么它可以存储128个Byte,我们可以说,它的容量是128个字节。
3、总线
(1)在计算机中有专门连接CPU和其它芯片的导线,通常称它们为总线,物理上它们是一根根导线的集合,逻辑上它们可划分为地址总线、数据总线和控制总线。
①CPU是通过地址总线来指定存储单元的,地址总线宽度决定了可寻址的存储单元大小,N根地址总线(也可说总线宽度为N),对应寻址空间2N。
②CPU与内存或其它器件之间的数据传送是通过数据总线来进行的,数据总线的宽度决定了CPU和外界的数据传送速度。
③CPU通过控制总线对外部器件进行控制,控制总线是一些不同控制线的集合,控制总线宽度决定了CPU对外部器件的控制能力(有多少根总线,CPU对外部器件就有多少种控制方式)。
(2)x86CPU性能一览:(后续如无特殊说明,汇编语言的学习都以8086为例进行)
四、内存的读写与地址空间
1、CPU对存储器的读写
(1)CPU要想进行数据的读写,必须和外部器件进行三类信息的交互:
①存储器的地址(地址信息)。
②器件的选择,读或写的命令(控制信息)。
③读或写的数据(数据信息)。
(2)举例:CPU从内存中3号单元处读取数据(汇编指令:MOV AL, [3])。
①首先CPU通过地址线寻址,找到内存中的3号单元。
②然后CPU通过控制线发出读数据的命令。
③最后CPU通过数据总线读取内存中3号单元中的数据。
2、内存地址空间
(1)CPU的地址总线宽度为N,那么寻址空间就为2N。8086CPU的地址总线宽度为20,那么其可以寻址1MB个内存单元,其内存地址空间为1MB。
(2)从CPU的角度看地址空间分配,可以将各类存储器看作成一个逻辑存储器,对它们的存储单元进行统一编址。
①所有的物理存储器被看作一个由若干存储单元组成的逻辑存储器。
②每个物理存储器在这个逻辑存储器中占有一个地址段,即一段地址空间。
③CPU在某段地址空间中读写数据,实际上就是在相对应的物理存储器中读写数据。
(3)以8086PC机为例,其内存地址空间的分配方案如下图所示。
五、汇编语言实践环境搭建(实践环节须知)
下载8086汇编工作环境,然后在D盘目录下创建文件夹masm,将命令文件拷贝至该目录下,如下图所示。
运行下图所示的exe文件,安装DOSBox。
打开DOSBox,输入“mount c d:\masm”并按下回车,然后再输入“C:”并按下回车,完成工作目录挂接(每次重启DOSBox时都要做此操作)。
至此,汇编语言实践环境搭建完成。