+ -
当前位置:首页 → 问答吧 → win32汇编的问题

win32汇编的问题

时间:2011-08-28

来源:互联网

最近在学win32汇编,总是无法编译,各种问题,看了论坛,看到大家推荐RADASM,就下载下来用了,但是还是遇到一些问题,可能是我的设置不对吧,还请高手指教
比如 我的源程序

.386 
.model flat,stdcall 
option casemap:none 
include \masm32\include\windows.inc 
include \masm32\include\kernel32.inc 
includelib \masm32\lib\kernel32.lib 
include \masm32\include\user32.inc 
includelib \masm32\lib\user32.lib 

.data 
MsgBoxCaption db "Iczelion Tutorial No.2",0 
MsgBoxText db "Win32 Assembly is Great!",0 

.code 
start: 
invoke MessageBox, NULL, addr MsgBoxText, addr MsgBoxCaption, MB_OK 
invoke ExitProcess, NULL 
end start 

是一个书上的例子

在点击构建并运行以后 显示的错误是
123.asm(4) : fatal error A1000: cannot open file : \masm32\include\windows.inc

是否要在设置路径里的各项进行设置呢 比如默认BIN是 $A\Bin 我是否要把它设置成本地的真实路径?

作者: welkin33   发布时间: 2011-08-28

引用楼主 welkin33 的回复:
最近在学win32汇编,总是无法编译,各种问题,看了论坛,看到大家推荐RADASM,就下载下来用了,但是还是遇到一些问题,可能是我的设置不对吧,还请高手指教
比如 我的源程序

.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\inc……


  RadASM只是一个开发工具而已,masm源程序能否编译和运行与RadASM没关系,因为不用RadASM我们也能编辑和编译程序。但是要注意,如果你使用RadASM内置的编译、运行指令,你必须配置好相关参数。
------------------------
不用RadASM编译的情况:
如果下载安装了Masm32,你要看看环境变量是否已正确地配置了。可以在命令行窗口执行set指令查看。
正确情况下,path应该含有masm32 安装目录\bin的文字,这个路径是操作系统查找你要用的编译器和链接器的路径;然后再看include变量,它应该指向windows.inc所在的文件夹。如果include变量设置正确,源文件中windows.inc前面就不需要再出现\masn32\include\的文字了,否则编译时会有问题。
如果没有include变量,那你要手工的配置一个。
像你所给的程序编译场景就提示打不开windows.inc,可能的原因就是编译器找不到它。

作者: gsy999   发布时间: 2011-08-28

引用 1 楼 gsy999 的回复:
inc……

补充,还有lib环境变量也要设置,不然,操作系统找不到你的源文件包含的lib文件。
------------
部分编译指令,供参考:
;set path=x:\masm32\bin;%path% 
;set include=x:\masm32\include;
;set lib=x:\masm32\lib;
;echo on 
;Ml /c /coff xx.asm 
;Link /subsystem:windows xx.obj yy.lib zz.res (普通PE文件) 
;Link /subsystem:console xx.obj yy.lib zz.res (控制台文件) 
;Link /subsystem:windows /dll /def:aa.def xx.obj yy.lib zz.res(DLL文件)

作者: gsy999   发布时间: 2011-08-28

引用 1 楼 gsy999 的回复:

引用楼主 welkin33 的回复:
最近在学win32汇编,总是无法编译,各种问题,看了论坛,看到大家推荐RADASM,就下载下来用了,但是还是遇到一些问题,可能是我的设置不对吧,还请高手指教
比如 我的源程序

.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
in……


请问 如果我要使用RADASM直接编译运行的话 是否radasm不会自动设置好 需要我自己在软件里设置路径?

作者: welkin33   发布时间: 2011-08-28

引用 1 楼 gsy999 的回复:

引用楼主 welkin33 的回复:
最近在学win32汇编,总是无法编译,各种问题,看了论坛,看到大家推荐RADASM,就下载下来用了,但是还是遇到一些问题,可能是我的设置不对吧,还请高手指教
比如 我的源程序

.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
in……

果然是像你说的 没有INCLUDE变量 如果我手工配置 是否就是在 系统变量 里新建一个变量 变量名为 INCLUDE 变量值为 ...\masn32\include\ ?

作者: welkin33   发布时间: 2011-08-28