GT这学期有汇编语言的课程,第一次接触这么神秘的东东感到很兴奋。所谓“工欲善其事,必先利其器”,最近试了几个汇编的编译环境用着都感觉不太顺手,在无奈和郁闷之中,突然灵光一闪——因为经常写ACM这种小巧程序的关系,我用notepad++加上NppExec插件(用来集成控制台),再加上WinGW作为DOS编译器为源码提供编译生成功能,小巧灵便,写起一两百行左右代码的程序真是无往而不利——那么汇编语言不也可以这样么?好吧我承认我是看中notepad++有汇编语言的高亮代码……
于是开始了尝试,下载好MASM,第一步是配置环境变量(环境变量是可以不配置的,但是会给你的编译带来一些限制,比如一定要转到编译器所在的目录下,而Windows的Path变量可以给那些找不到执行路径的命令提供一个选择)
安装我的安装路径,主要有这几个,这个就是提供编译器的根目录啦:
Path中加入;E:/Masm6.15; E:/Masm6.15/BIN
下面这几个我不太知道具体干嘛的,没配置的时候也能正常编译,既然看到资料里要配置就一起写上吧:
ASMEX E:/Masm6.15/SAMPLES
HELPFILES E:/Masm6.15/HELP (应该是命令行的帮助文件,<...> /help)
INCLUDE E:/Masm6.15/INCLUDE
INIT E:/Masm6.15/INIT
LIB E:/Masm6.15/LIB
至此,MASM根目录下的每个子文件夹也都配置了一个对应的环境变量
接着开始实战,找了个Sample文件
.MODEL SMALL
.386
.DATA
Msg DB 'Hello, world!', 0
.CODE
Start:
MOV AX,@data
MOV DS,AX
MOV DX,OFFSET Msg
MOV AH,9
INT 21h
MOV AH,4ch ;DOS terminate program function
INT 21h
END Start
抠门的课本只给了最简单的几个命令行
ml /c /Coff <*.asm> 这个,一开始没弄懂ml神马意思,还想到邪恶的地方去了,其实ml是编译和连接,是masm和link两个命令的集合,/c参数用来指定编译而不调试
masm <*.asm> 编译生成obj文件
link <*.obj> 连接生成exe文件
这样一个win32的可执行文件就出来了,表示很happy~
不过也发现一点问题,虽然现在可以编译放在任何目录下的asm文件了,但是生成的obj和exe依然在masm的根目录下,这个编译器一定是有什么语法是用来指定生成位置的,不过试来试去都不对,而且现在手头关于masm的资料太少了,连网上都搜不到神马全面一点介绍的,我看今天还是就到这儿吧,明天去图书馆找本书来好好研究一下才行~!