32位汇编的折磨:
- 安装masm32(http://www.masm32.com/)
- 安装后,在安装路径masm32下,新建bat文件(例如var.bat)
- 在var.bat文件中输入以下代码进行链接:
@echo off
rem 请根据 Masm32 软件包的安装目录修改下面的 Masm32Dir 环境变量!
set Masm32Dir=D:\Masm32
set include=%Masm32Dir%\Include;%include%
set lib=%Masm32Dir%\lib;%lib%
set path=%Masm32Dir%\Bin;%Masm32Dir%;%PATH%
set Masm32Dir=
echo on
如果不进行路径链接,会出现include中inc文件找不到现象
4. 输入测试代码(转)
.386
.model flat, stdcall
option casemap:none
include windows.inc
include user32.inc
include kernel32.inc
includelib user32.lib
includelib kernel32.lib
.data
szCaption db 'Hi', 0
szMsg db 'Hello World!', 0
.code
start:
invoke MessageBox, NULL, addr szMsg, addr szCaption, MB_OK
invoke ExitProcess, NULL
end start
在测试时,第3行的“option casemap:none”是没有的,直接导致ml时候出错:
5. 测试成功后,在cmd中,使用ml进行链接。链接语句需要注意源程序文件的位置,我将源程序test.asm放在masm32中新建的test文件夹中,所以使用语句:
..\bin\ml /c /coff test.asm
..\bin\ml 表示上一级目录的bin目录中的ml.exe文件
/c 表示仅利用ml实现源程序的汇编
/coff 表示生成COFF(Common Object File Format)格式的目标模块文件,
COFF是32位Windows和UNIX操作系统使用的目标文件格式。
- 使用link生成exe文件
..\bin\link /subsystem:windows test.obj
这里的/subsystem:windows表示生成图形窗口的可执行文件,也可以使
用/subsystem:console生成windows控制台环境的可执行文件。