分享

Notepad++配置masm32汇编环境

 herowuking 2015-06-01

   首先要整的无疑就是学习的开发环境了。masm32这个东西,比较轻量级,有库,有汇编器,有连接器,外加一个记事本,基本上就能写代码编译成exe了。书上没指定固定的开发环境和编辑器,编译汇编代码的编译模式都是用的make文件,然后用VS的nmake进行编译。先说编辑器,编辑器,记事本就行了,不过系统自带的记事本比较简陋,所以就选择了Notepad++来作为代码编辑的工具,选他最主要的就是功能足够(支持多语法高亮,支持各种插件)。代码写好了,要编译生成可执行文件。这个可以用写批处理或者自己在命令行下根据ml,link等命令来生成对应的文件。这里就有我选择notepad++的一个最主要的原因了,因为NotePad++有一个插件叫做NppExec,使用这个插件写上相关的脚本,就可以设置快捷键,然后用快捷键自动来编译生成需要的东西了,相当方便。先来按照书上的说,制作make文件,然后用nmake的方式来生成我们需要的可执行文件,且让我们看看这个设置的脚本

cd $(CURRENT_DIRECTORY)
ENV_SET PATH = D:\Develop_Tools\Masm32\bin
nmake make.mak
NPP_RUN $(NAME_PART).exe

 

首先进入当前代码文件所在的目录,然后设置汇编器和连接器以及nmake.exe的exe目录,我这里是D:\Develop_Tools\Masm32\bin

然后调用nmake make.mak就可以通过make.mak来生成一个exe文件了,至于make文件大致是

EXE=hello.exe
objs=hello.obj
ML_FLAG=/c /coff /I D:\Develop_Tools\Masm32\include
Link_FLAG=/LIBPATH:D:\Develop_Tools\Masm32\lib  /subsystem:windows
hello.exe: hello.obj
    link $(Link_FLAG) $(objs)
.asm.obj:
    ml $(ML_FLAG) $<
clean:
    del *.obj

使用这种方式,自然是最好的,不过由于俺是学习,每写一个代码文件就要写一个make文件,如此一来到显得十分麻烦,所以为了方便,就不必每个文件都搞一个make文件了。而是直接通过脚本命令来调用一批命令来直接生成我们需要的文件就可

比如,要将本代码文件生成一个exe文件,编辑脚本命令为

cd $(CURRENT_DIRECTORY)
ENV_SET PATH = D:\Develop_Tools\Masm32\bin; D:\Develop_Tools\Masm32\include; D:\Develop_Tools\Masm32\lib
ml /c /coff /I D:\Develop_Tools\Masm32\include  $(NAME_PART).asm
link /LIBPATH:D:\Develop_Tools\Masm32\lib  /subsystem:windows  $(NAME_PART).obj  /out:$(NAME_PART).exe
NPP_RUN $(NAME_PART).exe

至于ml,link等命令的参数,请参考相应的参数选项

这个编译生成了对应的exe之后,最后会调用这个生成的exe程序

将文件编译成lib库的脚本

cd $(CURRENT_DIRECTORY)
ENV_SET PATH = D:\Develop_Tools\Masm32\bin; D:\Develop_Tools\Masm32\include; D:\Develop_Tools\Masm32\lib
ml /c /coff /I D:\Develop_Tools\Masm32\include  $(NAME_PART).asm
link -lib *.obj  /out:$(NAME_PART).lib

比如这里,就通过Lib脚本生成了一个DxApplication.Lib文件

这里调用ExeCompile之后,就可以生成Test.exe文件,最后运行Test.exe了。

 

另外有一点,就是用NotePad++写的代码,他内部默认使用的是Utf8编码,而masm32默认是采用的Ansi的API函数,所以,此时在NotePad++中显示正常的中文文字,如果编译成exe之后,在exe中显示的就是乱码了,有两种方法,一种是代码前面加上UNICODE equ 1,表示使用Unicode的API宽函数,还有一种方法就是将NotePad++的编辑器,默认修改成ANsi的GB2312的编码,设置在首选项中如下

选中红色线框位置,然后选择GB2312就行了!

另外,就是代码自动完成了,这个可以用QuickText这个插件,这里不再多说,因为俺是学习,所以不用这个插件,代码全部手输入,以加深记忆了!


我的配置:
Notepad++配置masm32汇编环境
===========================
0.准备工作:
安装NotePad++、插件NppExec、TopMost等

1.配置NppExec脚本
比如,要将asm汇编文件生成一个exe文件,编辑脚本命令为:
-----------------------------------------------------
cd $(CURRENT_DIRECTORY)
ENV_SET PATH = D:\Masm32\bin; D:\Masm32\include; D:\Masm32\lib
ml /c /coff /I D:\Masm32\include  $(NAME_PART).asm
link /LIBPATH:D:\Masm32\lib  /subsystem:windows  $(NAME_PART).obj  /out:$(NAME_PART).exe
NPP_RUN $(NAME_PART).exe

至于ml,link等命令的参数,请参考相应的参数选项
这个编译生成了对应的exe之后,最后会调用这个生成的exe程序

将文件编译成lib库的脚本
-----------------------
cd $(CURRENT_DIRECTORY)
ENV_SET PATH = D:\Masm32\bin; D:\Masm32\include; D:\Masm32\lib
ml /c /coff /I D:\Masm32\include  $(NAME_PART).asm
link -lib *.obj  /out:$(NAME_PART).lib


编译C(最好是安装好MinGW配置好PATH环境变量):
---------------------------------------------
ENV_SET PATH = C:\msys\1.0\mingw\bin
cmd /c "gcc -o $(CURRENT_DIRECTORY)\$(NAME_PART).exe  $(FULL_CURRENT_PATH) "
$(CURRENT_DIRECTORY)\$(NAME_PART).exe

编译C++(最好是安装好MinGW配置好PATH环境变量):
---------------------------------------------
ENV_SET PATH = C:\msys\1.0\mingw\bin
cmd /c "g++ -o $(CURRENT_DIRECTORY)\$(NAME_PART).exe  $(FULL_CURRENT_PATH) "
$(CURRENT_DIRECTORY)\$(NAME_PART).exe

2.将这些脚本添加到【宏】菜单,并分配快捷键:
Notepad++中,【插件】-->【NppExec】-->【Advanced Options...】
勾选"Place to the Macros submenu"
在下面的Associate script下拉列表里面选择并添加即可

分配快捷键:
【宏】-->【管理快捷键】-->选择“Plugin commands”
依次找到刚才设定的几个脚本,分配快捷键即可!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多