1、编写程序:2.asm

可以用任意文本编辑器,推荐 notepad++,后缀名为 .asm 保存在 debug.exe 所在目录下(上文说到过的),这里写一个 2.asm。

assume cs:abc

abc segment

mov ax, 0001

add ax, ax

add ax, ax

mov ax, 4c00H

int 21H

abc ends

end

2、编译

进入 DOSBox 后,对 *.asm 文件进行编译,生成包含机器代码的目标文件( .obj 文件)

进行编译之后如果没有问题(我给的代码是没问题的),文件夹里就会多了一个 2.obj 文件

3、链接和运行程序

对 *.obj 目标文件进行连接,得到可执行文件(.exe文件)。运行link后,首先显示一些版本信息,然后提示输入将要被连接的目标文件的名称。注意,“[.OBJ]”提示我们,默认的文件扩展名是obj,**比如要连接的目标文件名是“xxx.obj”,只要在这里输入“xxx”即可。**可如果文件不是以 obj 为扩展名,就要输入它的全名。比如目标文件名为“ xxx.bin ”,就要输入全名。

不过我在两个黄标的地方加上了扩展名也没什么问题。其他输入全部忽略即可。

我们可以看到,最后提示 no stack segment,表示程序已经可以运行,并且没有栈段。

4、常用命令

程序执行前:

r 查看当前寄存器中的内容

u 查看其他指令

t 命令单步执行每条指令,并观察每条指令的执行结果

int21 必须要用 p 命令执行(最后一步)

第一次将 ip 设为0,u查看我们程序的命令

随后用 t 命令单步执行,可以随时看到我们运行的命令,和寄存器的变化。