预先在E:masm5.0MYDOC目录下写好hello.asm文件:
DATA SEGMENT BUF DB 'HELLO WORLD! THIS IS MY FIRST ASM FILE! $' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA DX,BUF MOV AH,09 INT 21H MOV AH,4CH INT 21H CODE ENDS END START
首先,进入masm5.0所在路径(装入-连接-运行-调试均在masm5.0所在目录中进行)
(我这里masm5.0所在路径是E:masm5.0)
Winkey+R — cmd —e:——cd masm5.0
1、装入
格式:masm asm源文件及路径1 obj文件目标路径2(省去则默认当前路径)
如:E:masm5.0>masm .MYDOChello.asm .MYDOC
结果:程序无错则在E:masm5.0MYDOC中增加文件HELLO.OBJ
2、连接
格式:link obj文件路径1
如:E:masm5.0>LINK .MYDOCHELLO.OBJ
(此后当前目录就会出现HELLO.EXE)
3、运行
格式:exe文件全名(即 "HELLO.EXE")
如:E:masm5.0> HELLO.EXE
4、调试
-u 反汇编
-r 显示寄存器内容
-g [=address1][address2][address3] 执行到断点行,如:-g 12 为执行到第12行
-t [=address][value] 跟踪,配合-g使用 如:-t 12 1 为从第12行开始,每执行1条指令后停下来
-d 查看数据
-q 退出返回操作系统
上图中,
首先,-u 反汇编整个 hello.exe ;
然后-g 9 ,让程序执行到 第9行停下来;再用-t 跟踪,每执行一条指令停下来;
最后,连续-t跟踪了3次后输入-q退出程序。
汇编masm5.0编译器编译汇编文件名时,
有时可能出现 Unable to open input file:bcd2ascii.asm 的错误,可是代码文件确实存在。
这时,可以考虑两个问题,
第一:文件拓展名有没有改过来,因为win7下会自动隐藏拓展名(除非设置过);
第二:是文件的名字系统的差别造成的,windows现在可以支持非常复杂的命名,
在cmd下也可以看到这些命名,但当执行debug,masm等程序时,系统将启动ntvdm,
这是一个nt系统下的vdm,虚拟设备管理,就是一个16位的虚拟机,
此时,ntvdm下的cmd严格执行8.3命名,这时只需要修改文件名,
主文件名8个字符以内,扩展名为asm就可以了