Windows 32位汇编编程环境搭建教程(MASM32 SDK)

时间:2021-03-06 01:14:05

常用的32位汇编编译器有微软的MASM、Borland的TASM和NASM;不过他们各有自己的不足,一般使用基于MASM的MASM32 SDK做为开发环境。

不过要注意MASM32只能安装在32位操作系统上,想在64操作系统使用需要先在32位操作系统安装然后再拷贝过去(MASM32安装后文件夹就像一个绿色软件不用担心拷过去后运行不起来)

编译器 开发者 优点 缺点
MASM 微软 微软自家软件和系统兼容性好;支持invoke/.if等伪指令将汇编变得和C++差不多 就一个编译器,没有资源编译器和链接器,也没有头文件
TASM Borland 支持伪指令,有资源编译器和链接器 没有Windows数据结构和预定义的头文件,现在官方似乎不维护了
NASM 开源 同时支持Windows和Linux 不支持伪指令,没有Windows数据结构和预定义的头文件

 

 

 

 

1.下载

下载链接:http://www.masm32.com/download.htm

 

2.安装

当前我下载的是v11r版本,将下载的zip包解压后得到的是一个齿轮图标的install.exe文件,双击运行开始安装。

Windows 32位汇编编程环境搭建教程(MASM32 SDK)

Windows 32位汇编编程环境搭建教程(MASM32 SDK)

Windows 32位汇编编程环境搭建教程(MASM32 SDK)

Windows 32位汇编编程环境搭建教程(MASM32 SDK)

 Windows 32位汇编编程环境搭建教程(MASM32 SDK)

Windows 32位汇编编程环境搭建教程(MASM32 SDK)

Windows 32位汇编编程环境搭建教程(MASM32 SDK)

Windows 32位汇编编程环境搭建教程(MASM32 SDK)

Windows 32位汇编编程环境搭建教程(MASM32 SDK)

Windows 32位汇编编程环境搭建教程(MASM32 SDK)

Windows 32位汇编编程环境搭建教程(MASM32 SDK)

Windows 32位汇编编程环境搭建教程(MASM32 SDK)

Windows 32位汇编编程环境搭建教程(MASM32 SDK)

Windows 32位汇编编程环境搭建教程(MASM32 SDK)

Windows 32位汇编编程环境搭建教程(MASM32 SDK)

 

3.配置环境变量

打开:控制面板--系统和安全--系统--高级系统设置--高级--环境变量

创建以下环境变量(如果已存在则在其末尾追加,Masm32Dir根据自己安装路径修改):

Masm32Dir=D:\masm32
include
=%Masm32Dir%\Include;
lib
=%Masm32Dir%\lib;
path
=%Masm32Dir%\Bin;%Masm32Dir%;

 

4.安装VC++6.0【可选】

4.1到其%VC_HOME%\VC98\Bin目录下把nmake.exe复制到%Masm32Dir%\Bin目录下

使用nmake则nmake会根据makefile执行ml和link完成程序编译(makefile放于与源代码同级目录下,在makefile目录下执行nmake),如果不使用nmake则需要手动ml和link

写makefile和每次修改都要执行ml和link哪个方便看自己权衡了;建议要反复调试的程序直接写个makefile,简单的直接ml/link。

4.2使用VC++6.0编缉.rc文件

在调试对话框的大小和样式时,所见即所得比每次进行修改后都重新编译运行显然是方便得多的。所以我们可以借用VC++来编缉.rc文件(直接拖进去即可)。

不过VC++编缉.rc文件保存时会自动添加一些VC++的头文件如果继续保存为.rc文件,为了保证使用rc命令编译成.res时能找到所有文件,需要把VC++的%VC_HOME%\VC98\Include目录追加到第3步中的include环境变量中,把%VC_HOME%\VC98\Lib目录追加到第3步中的lib环境变量中;当然也可以在编缉后直接保存成编远程好的.res文件。

 。

5.编译程序

手动编译:

rc Test.rc
ml
/c /coff Test.asm
Link
/subsystem:windows Test.obj Test.res

使用nmake编译时对应的makefile:

EXE = Test.exe        #指定输出文件
OBJS
= Test.obj #需要的目标文件
RES
= Test.res #需要的资源文件

LINK_FLAG
= /subsystem:windows #连接选项
ML_FLAG
= /c /coff #编译选项

$(EXE): $(OBJS) $(RES)
Link $(LINK_FLAG) $(OBJS) $(RES)

.asm.obj:
ml $(ML_FLAG) $
<
.rc.res:
rc $
<

clean:
del
*.obj
del
*.res

 

参考:

Windows环境下32位汇编语言程序设计