目录:https://blog.csdn.net/qq_43098197/article/details/124532401
程序执行流程
- 编程 Edit -> asm
- 编译 masm -> obj
- 连接 link -> exe
- 加载 command -> 载入内存
- 运行 cpu
源程序
伪指令
- 在汇编源程序中有两种指令,一种是汇编指令,一种是伪指令。
- 汇编指令有对应的机器码指令,可以被编译为机器指令,最终由 CPU 执行。
- 伪指令没有对应的机器码指令,由编译器来执行。
程序
- 源程序是我们编写的代码。
- 源程序中最终由计算机执行、处理的指令或数据称为程序。
程序的返回
MOV AX, 4C00H
INT 21H
编写源程序
- 就是写代码。
编译
masm
masm [源程序文件名.asm][;]
然后会出现:
Source filename [.ASM]: X // 源程序名称
Object filename [X.OBJ]: // 编译后的目标文件名
Source listing [NUL.LST]: // 列表文件名
Cross-reference [NUL.CRF]: // 交叉引用文件名
源程序名称是需要必须指定的,其它的不必要。
[]
里面的是默认值
列表文件 和 交叉引用文件: 编译器将源程序编译为目标文件的过程中产生的中间结果。
简化
masm 源程序文件名;
连接
link
link
然后会出现:
Object Modules [.OBJ]: X // 目标文件名
Run File [X.EXE]: // 生成可执行文件的名称
List File [NUL.MAP]: // 映像文件
Libraries [.LIB]: // 库文件
映像文件: 连接程序将目标文件连接为可执行文件过程中产生的中间结果。
连接的作用:
- 当一个程序依赖其它源程序时,使用连接程序将它们连接到一起,生成一个可执行文件。
- 使用某个函数库,需要将这个库文件和该源程序生成的目标文件连接到一起,生成一个可执行文件。
- 源程序编译完成后,得到了存有机器码的目标文件,目标文件中有些内容不能直接用来生成可执行文件,连接程序会处理这些内容,最后生成一个可执行文件。
简化
link 目标文件名;
可执行文件如何将入内存并且执行它?
> xxx.exe
执行上面的命令 会发生什么:
DEBUG
单步调试程序:
debug xxx.exe
Dos 系统中 .exe 加载的过程: