第一个程序
源程序是文本文件,编译器将源程序编译成目标文件,内容为机器码,连接器将多个目标文件以及库文件连接在一起,并将这些内容处理为可执行文件。
DOS 中加载 EXE 程序的过程:
- 找到一段起始地址为 SA:0000 的空闲内存空间。
- 在这段内存前 256 字节,创建程序段前缀(PSP)的数据区,DOS 利用 PSP 与程序通信。
- 在 PSP 数据区的后面,将程序装入。程序起始地址为:SA+10H:0。
- 存储段地址 DS = SA,初始化 CS:IP 为程序入口地址。
汇编源代码语法
汇编代码片段:
1 | cs:codesg |
伪指令:
伪指令不对应机器码,由编译器执行相关操作。
assume
将定义的 codesg 段与 CS 寄存器关联。
段名称 segment
开始一个段。
段名称 ends
结束一个段,segment 和 ends 成对使用,用于定义一个段。
end
代表整个汇编程序结束。
源程序是由一些段构成的,可以在这些段中存放代码、数据或将某个段作为栈使用。
程序返回
程序运行结束后,需要将 CPU 控制权交还使它得以运行的程序。应该在程序末尾添加返回的程序代码。
1 | mov ax,4c00H |
编译、连接、运行一段汇编程序
下载汇编学习工具。
然后解压缩。
下载 Dosbox 并安装。
启动 dosbox,运行下面的命令:
1 | $ mount c 汇编学习工具文件夹目录 |