软件:
Windows7-32bit
visual c++6.0
Masm32 sdk 11
安装:
0x00 || 下载Masm sdk 11并安装,下载路径:http://www.masm32.com/
0x01 || 安装visual c++,自行百度,最好是英文版
配置:
0x02 || 将E:\Visual C++ 6.0\VC6\VC98\Bin目录下的NMAKE.exe拷贝放到E:\masm32\目录下,我们后面要用到这个
0x03 || 添加var.bat文件到E:\masm32\目录,因为我们以后会用visual c++来建立一些资源文件,所以include里面的内容还包括VC安装路径include和MFC\include
1 @echo off
2 rem 请根据 Masm32 软件包的安装目录修改下面的 Masm32Dir 环境变量!
3 set include=E:\masm32\Include;E:\Visual C++ 6.0\VC6\VC98\Include;E:\Visual C++ 6.0\VC6\VC98\MFC\Include
4 set lib=E:\masm32\lib
5 set path=E:\masm32\Bin;%path%
6 echo on
实践:
0x04 || 按shift,鼠标右键打开cmd,切换到E:\masm32\目录下,运行var.bat文件,如下图
0x05 || 在该目录下新建一个工程目录source,以后可以在里面写一些win32项目
0x06 || 切换到source,新建一个Test文件夹,这样就可以写我们的win32代码,win32项目各文件如下
0x07 || 在cmd中执行nmake命令
0x08 || 第一个由汇编代码写的程序完成,双击Test.exe,弹出一个消息框
代码:
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; Sample code for < Win32ASM Programming 3rd Edition> ; by 罗云彬, http://www.win32asm.com.cn ; Change by 大老黑, http://geekfz.cn ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; Test.asm ; 编程环境测试代码 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; 使用 nmake 或下列命令进行编译和链接: ; ml /c /coff Test.asm ; rc Test.rc ; Link /subsystem:windows Test.obj Test.res ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> .386 .model flat,stdcall option casemap:none ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; Include 文件定义 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> include windows.inc include user32.inc includelib user32.lib include kernel32.inc includelib kernel32.lib ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; 数据段 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> .const szCaption db '极客改变世界', 0 szText db '来吧,和极客方舟一起成长',0 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; 代码段 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> .code start: invoke MessageBox,NULL,offset szText,offset szCaption,MB_OK invoke ExitProcess,NULL ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> end start