1.MASM32 SDK介绍

  • 目标是用汇编写出专业的大型程序:
1
2
3
1.除了编译器,连接器外,还包含了汇编需要用到的各种详尽的头文件和导入库文件,导入库文件取自Visual C++ 的导入库
2.收集来自世界各地Win32汇编爱好者的源程序以及很多详细的列子程序
3.发布者还为他编写了一个简单的IDE环境,包括一个专用的汇编源程序编译器和源程模板生成器
  • 安装目录说明
1
2
3
4
5
6
7
D:\masm32:IDE环境,内带文本编译程序和模板生成程序
D:\masm32\include:所有的导入库文件
D:\masm32\lib:所有的导入库文件
D:\masm32\bin:可执行文件目录,包括ml.exe,link.exe,rc.exe
D:\masm32\help:帮助文档
D:\masm32\m32lib:一些常用的c子程序的汇编实现源程序,很有价值
还有一些其他奇奇怪怪的好用的【以后再说】
  • 经过了很久的调试,最终在我的电脑上,如果想用win32汇编需要如下操作【手动操作】
1
2
3
4
5
6
1.在d:\masm32中运行cmd
2.设置环境变量,这里用的是var.bat批处理【运行一下就好了】
3.转到写得有汇编的目录下面【cd sources\test】
4.首先用ml编译一下,【ml /c /coff /Cp *.asm】
5.然后用link链接【link /subsystem:windows *.obj ...】
6.就有exe文件啦
  • 使用nmake ,快捷方式,首先在asm 的目录下创建一个 Makefile,内容如下。然后直接在cmd中运行 cmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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
  • 经过修改后:
1
2
3
4
5
6
7
8
9
10
11
12
EXE = test.exe		#指定输出文件
OBJS = test.obj #需要的目标文件


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

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

.asm.obj:
ml $(ML_FLAG) $<
  • helloword–.asm文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
	.386
.model flat,stdcall
option casemap:none

include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib

.data
szCaption db 'A MessageBox',0
szText db 'Hello,World!',0

.code
start:
invoke MessageBox,NULL,offset szText,\
offset szCaption,MB_OK

invoke ExitProcess,NULL

end start