转自:https://wenku.baidu.com/view/796d8f6faf1ffc4ffe47ac5f.html
预先在E:\masm5.0\MYDOC目录下写好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
格式:masm asm源文件及路径1 obj文件目标路径2(省去则默认当前路径)
如:E:\masm5.0>masm .\MYDOC\hello.asm .\MYDOC\
结果:程序无错则在E:\masm5.0\MYDOC中增加文件HELLO.OBJ
格式:link obj文件路径1
如:E:\masm5.0>LINK .\MYDOC\HELLO.OBJ
(此后当前目录就会出现HELLO.EXE)
格式:exe文件全名(即 "HELLO.EXE")
如:E:\masm5.0> HELLO.EXE
-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就可以了
转自:http://blog.sina.com.cn/s/blog_62b339a70100npxh.html
(2010-11-22 10:34:25)
先声明下,本人绝非大虾,也只是菜鸟一个,写此文的目的只是为了加深我对知识的理解罢了。好,进入正题。
我是把masm解压后发在D盘中的一个叫masm的文件里,在masm文件里新建个记事本(记事本功能是很强大的,只要改下后缀名,写什么语言都noproblem),在记事本里写上你要的汇编程序,然后另存为***.asm的文件。
接下来,点击“开始”\运行\command.接下来便弹出如下黑色的窗口(上面是版权声明,下面那个说明是C盘
目录)
输入命令"D:"
输入“cd masm”(不要把cd漏掉了哦)
输入刚才保存的那个文件名(注意哦,文件名,不能太长,否则就会出错)如:“masm ba.asm”(这里的masm表示用masm打开该文件,若是你没有写masm,直接就是ba.asm的话,那么会弹出个窗口让你选择哪个文件来打开。ba.asm的后缀可要可不要)
然后便会出现obj,lst,crf,我们直接enter过去就ok了。若编译没错误。便会如下显示
此时,你的那个文件夹下便多了个ba.obj的目标文件。接下来,我们就开始link(连接)文件喽。。。。
同上,在D:\MASM>后面输入link ab,会显示exe,map,lib的东西,你直接enter。最后,文件夹下会出现
ba.exe的文件。如下:
哦,我的那个程序可能有点问题,出现了警告。
调试:我们在D:\MASM>后面输入debug ba.exe就进入调试模式啦。
-u 反汇编