首页
社区
课程
招聘
[旧帖] [原创]构建汇编编程环境(MASM32) 0.00雪花
发表于: 2010-2-25 10:51 2423

[旧帖] [原创]构建汇编编程环境(MASM32) 0.00雪花

2010-2-25 10:51
2423
构建汇编编程环境(MASM32V10)
作者:wibe
本文介绍在Windows操作系统里怎样搭建32位的汇编语言编程环境。
MASM32是一种非常流行的集成了微软的MASM汇编语言编译器的软件包,目前最新版本为10。0版。MASM32version10的下载地址:http://www.masm32.com/masmdl.htm 注意:MASM32不支持Win9x或者Me。(我想,现在大概也没有人用Win9x了吧!)
第一步:
选择一个驱动器安装MASM32软件包,例如C盘,安装好的目录是c:\Masm32目录,对我们来说,整个软件包中重要的只有3个目录:bin目录中有汇编编译器ml.exe,资源编译器rc.exe和链接器Link.exe等执行文件;include目录中有各种头文件;lib目录中有全部导入库。
第二步:
由于MASM32软件包中没有nmake.exe文件,所以要单独寻找nmake.exe并拷贝到c:\Masm32\bin目录中。注意:若我们电脑上安装了VC++6.0,VC++2005,VC++2008等多个版本的微软的C++软件,则应注意nmake.exe的版本。
第三步:
为这个环境建立一个设置环境变量的批处理文件,假设文件名为Var.bat,那么这个文件内容如下:
@echo off
set include=c:\masm32\Include
set lib=c:\masm32\lib
set path=c:\masm32\bin;%path%
echo on

文件中设置了3个环境变量:
●   include变量指定头文件的搜索目录。在asm和rc文件中可以根据这个变量寻找include语句指定的文件名,避免了使用头文件的全路径名,这样以后移动了MASM32的安装位置就不必修改每个源文件中的include语句。如果使用Visual C++的集成环境来建立rc文件的话,为了使rc.exe能找到头文件,还要把VC++安装目录下的Include和MFC\Include目录包含进来(注意:VC++2005,VC++2008只需要把把VC++安装目录下的Include目录包含进来即可),中间用“;”隔开:
set include=c:\masm32\Include;VC目录\Include;VC目录\MFC\Include
VC++安装目录一般为C:\Program Files\Microsoft Visual Studio\VC98\。
●   lib变量指定导入库文件的搜索目录。在asm文件中可以根据这个变量寻找includelib语句指定的导入库文件,Link.exe也根据这个变量寻找库文件的位置。
●   path变量就不必多解释了。它只是使我们不必在键入命令时带长长的路径而已。

按照上面的步骤安装完成后,下面来编译一个程序测试一下。打开一个文件浏览窗口,切换到源文件目录c:\Source。打开一个MS-DOS窗口,并键入Var执行已建立的Var.bat,这时环境变量和路径已经设置好了,可以键入SET命令验证一下include和path等环境串是否正确,然后键入c:以及cd \Source切换到要工作的目录中,并键入nmake,当屏幕上出现如下所示的正确的编译链接信息后,Test.exe就建立完成了。(注:该实例源代码系《Windows环境下32位汇编语言程序设计(第2版)》中的源代码)

参考资料
罗云彬,《Windows环境下32位汇编语言程序设计(第2版)》,电子工业出版社,2003年
MASM32官网,www.masm32.com

附录
Vc++6.0环境下的var.bat
@echo off
set include=c:\masm32\Include;d:\Program Files\Microsoft Visual Studio\VC98\include;d:\Program Files\Microsoft Visual Studio\VC98\MFC\Include                              
set lib=c:\masm32\lib
set path=c:\masm32\bin;%path%
echo on

VC++2005环境下的var.bat
@echo off
set include=c:\masm32\Include;D:\Program Files\Microsoft Visual Studio 8\VC\include
set lib=c:\masm32\lib
set path=c:\masm32\bin;%path%
echo on

VC++2008环境下的var.bat
@echo off
set include=c:\masm32\Include;D:\Program Files\Microsoft Visual Studio 9.0\VC\include
set lib=c:\masm32\lib
set path=c:\masm32\bin;%path%
echo on

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 2362
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
为什么我装MASMplus 一直下一步 然后就ok了...
2010-2-25 10:59
0
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
MASMPlus 是一个使用纯 MASM 编写的 MASM Integrate Develop Environment.

  专业汇编程序员90%均使用 MASM,为它开发的编辑器非常多,其中最有名的是 RadASM, 而现在,真正能与 RadASM 同级的就只有 MASMPlus 了,理由是只有 MASMPlus 与 RadASM 一样编写了自定义编辑类,并且比它更出色,只有自已的类,才能在各方面尽情发挥,在量身定制方面,MASMPlus 更是费尽心思,笔者长时间从事工业硬件汇编程序编写,认识到对于专业汇编程序员而言,最重要的,就是代码书写,不需要华而不实的界面,不需要莫名其妙的功能,不需要可有可无的设置,更不需要所谓的封装,总的来说, MASMPlus 是半自动,这也是 MASMPlus 没有取名为 MASMIDE 的主要原因.

  MASMPlus 工程模式极为简单,简单但并不简陋,这种小巧方便的工程管理方式,能同时打开任意多个单个文件/工程,各自编译/链接互不相关,工程单个文件属性设置,带来的,是真正的多工程,一个工程,可以包含多个主程序,多个动态库,多个静态库,组的设置,各库之间关键字搜索相互独立,共享文件全局搜索,并可实现简单方便的混合编程.你需要做的只是稍稍设置参数,按 Ctrl+1 即可一步完成所有操作.MASMPlus 还可以导出工程为模板,可以完全用于工程的发布,因为导出时,MASMPlus 会将工程中所有文件全部打包进apt中,而这个文件交给其它人时,可以直接使用它创建新工程而不会破坏apt.同时,MASMPlus 的工程模块拥有独一无二的功能:保存附加信息,它在每次关闭工程时将工程所有文件的撤消缓冲保存到工程app中,用户在下次重新打开时可以继续上一次的撤消,如果中间没有使用其它工具编辑文件, MASMPlus 可以记录整个软件的编写过程.详细请参考 "使用工程" 一节.

  代码辅助书写方面,MASMPlus 可以说是做得最好的一个编辑器,函数原型参数突出显示,标志参数自动列出,全局搜索可以搜索整个工程,全部关键字列出慢慢浏览,自动大小写支持全部关键字,结构类型变量成员列出,鼠标提示关键字信息,同时,输入与列出遵守一定的编程规则,不会误导使用者,详细请参考 "语法提示规则" 一节.

  查找方面 MASMPlus 支持正则表达式查找与替换,这是一个自主开发的正则表达式引擎,同时它的库已带入 MASMPlus,MASMPlus 使用者可直接在自己的程序中使用,MASMPlus 的正则表达式语法与通用的略有不同,详细使用及规则请参考 "正则表达式" 一节.

  同时,MASMPlus 支持插件开发,通过装植插件,可以扩展程序功能,尤其是窗口类插件,这种创新的插件模型,可以让 MASMPlus 扩展成为任何编辑器,随着之后插件的增加,使用者会发现 MASMPlus 能打开各种各样的文件,如果您是专业程序员,想为 MASMPlus 编写插件,请参考 "PDK 开发手册" 一章.同时,官方已经预留了二个插件,一个是 "资源编辑器" ,另一个是 "调试器" ,不久这两个插件均会开发并内置在 MASMPlus 下述版本中.
2010-2-25 11:31
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
什么也看不懂,学习中
2010-3-13 13:12
0
雪    币: 94
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5


什么都没看懂

顶一个吧!俺要努力学呀
2010-3-13 14:17
0
雪    币: 242
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
先mark,以后会用到的。
2010-3-13 16:44
0
雪    币: 189
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
貌似在RADASM里面可以不用这样配置!
2010-3-13 22:14
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
radasm貌似不错,但是他的官网怎么上不去,只能搜到个20M+的汉化集成版。
2010-3-13 23:10
0
雪    币: 237
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
楼主万岁!万事开头难,都浪费我一个半小时了才找到这篇宝典,可以真正进入汇编的艺术世界!

二八定律:80%的时间浪费掉了,真正80%的学习却是20%的时间完成的,好令人郁闷!
2010-4-4 09:20
0
雪    币: 237
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
不过我怎么好像什么都没看懂..
2010-4-4 09:29
0
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
问下LZ,MASM32是否支持16位汇编?
2010-4-4 23:26
0
雪    币: 14
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
楼主你这篇文章我在罗云彬的教程里见过,我现在都没有弄懂那个批处理文件到底是怎么运行的,能不能详细说明一下呢
2010-4-5 07:51
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
感觉把简单问题复杂化了,没必要那么配置,直接安装masm就好了,批处理就是配置环境变量一类的东西
2010-4-5 16:37
0
雪    币: 14
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
2010-4-6 18:35
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
围观一下~~~~
2010-4-6 19:10
0
雪    币: 29
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
MASMPlus和罗云彬推荐的masm32 SDK哪个更好一些
望高手指点一下
2010-7-20 21:23
0
游客
登录 | 注册 方可回帖
返回
//