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 命令单步执行,可以随时看到我们运行的命令,和寄存器的变化。