随笔-211  评论-26  文章-8  trackbacks-0
一  下载masm32软件包 (编译器ml与链接器link)
http://www.movsd.com
一般来说,用masm编译和链接一个win32汇编源程序常用的命令是:
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文件)
在ml中使用/c选项表示只生成obj文件而不是直接产生exe文件,原因是链接的时候可能需要指定资源文件,所以不能让ml直接用默认的方式链接:/coff选项是必须的,因为链接器只支持coff格式的obj文件.
二 创建资源
1 资源编译器
资源编译器用来把资源脚本文件(*.rc)编译成资源文件(*.res),masm32软件包中使用的是visual c++附带的rc.exe程序,命令行语法为:rc 资源脚本文件名
2 资源编辑器
 resource workshop 资源编辑器
 visual c++集成资源编辑器
3 make工具是什么
make工具可以看成是一个智能的批处理工具,它本身并没有编译和链接的功能,而是类似于批处理的方式-----通过调用makefile文件中用户指定的命令来进行编译和链接的.但是批处理会执行全部命令将全部源文件编译,包括那些不必重新编译的源文件,而make工具则可根据目标文件上一次编译的时间和所依赖的源文件的更新时间自动判断应当编译哪些源文件,对没有更新过的文件不会处理,这样就可以大大提高程序调试的效率.microsoft的make工具文件名为nmake.exe,它并不是masm软件包的一部分,但可以在visual c++的bin目录下找到.
4 IDE还是命令行
一个好的文本编辑器对工作效率的影响是很大的,一个完善的文本编辑器必须包括语法高亮显示 强大的查找替换 无限次undo和redo操作 支持特大型的源文件等功能.(editplus和ultraedit32)
5 设置环境变量的批处理文件
@echo off
rem 请根据 Masm32 软件包的安装目录修改下面的 Masm32Dir 环境变量!
set Masm32Dir=e:\Masm32
set include=%Masm32Dir%\Include;%include%
set lib=%Masm32Dir%\lib;%lib%
set path=%Masm32Dir%\Bin;%Masm32Dir%;%PATH%
set Masm32Dir=
echo on
6 编译第一个程序
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Sample code for < Win32ASM Programming 2nd Edition>
; by 罗云彬, http://asm.yeah.net
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 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 '当您看到这个信息的时候,您已经可以编译Win32汇编程序了!',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  .code
start:
  invoke MessageBox,NULL,offset szText,offset szCaption,MB_OK
  invoke ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  end start
posted on 2007-07-02 10:15 dragon 阅读(117) 评论(0)  编辑  收藏 所属分类: asm学习