MASM32使用教程
代码如果你在用汇编语言来开发windows下的程序的话,MASM32是很好的选择。
(Masm32下载地址请用google搜索罢。)
工欲善其事,必先利其器。
本文主要针对masm32 v8来说明三点:
1、基本使用方法
如何在MASM32中建立、汇编、链接源程序文件和运行生成的可执行文件。
2、如何开启MASM32的在线帮助功能
3、汉化QEDITOR菜单
一、基本使用方法
以在C:\PWIN951\TEMP文件夹下建立TEST.ASM和生成TEST.EXE为例.
安装好MASM32后,打开“资源管理器”或“我的电脑”,进入MASM32所在文件夹(假设为C:\MASM32),双击QEDITOR.EXE
的图标,这就进入了MASM32的集成开发环境。
1.[这一步是可选的,以下可选的步骤均简称为“可选”] 输入资源文件, 然后使用菜单栏上的菜单File -> Save 或 快捷工具栏中的代表存盘功能的磁盘状图标,第一次需要输入文件名,注意要指定扩展名 .RC并存盘,注意如果是在集成环境中编译此资源文件,文件名必须是RSRC.RC(大小写均可)。
2.[可选] 编译资源文件。使用菜单栏上的菜单Project -> Compile Resource File。这时系统会打开一个DOS窗口运行相关的批处理文件,并报告结果。
若不编译成功,信息为(具体错误信息因错误而异):
Microsoft (R) Windows (R) Resource Compiler, Version 5.00.1823.1 - Build 1823
Copyright (C) Microsoft Corp. 1985-1998. All rights reserved.
Using codepage 936 as default
Creating rsrc.RES
RC: RCPP -CP 936 -f C:\PWIN951\TEMP\RCa83947 -g C:\PWIN951\TEMP\RDa83947 -DRC_IN VOKED -D_WIN32 -pc\:/ -E -I. -I .
rsrc.rc.
rsrc.rc (1): error RC2135 : file not found: MAINICON.ICO.
Writing MENU:600, lang:0x409, size 128
Microsoft (R) Windows Resource To Object Converter Version 5.00.1736.1
Copyright (C) Microsoft Corp. 1992-1997. All rights reserved.
CVTRES : fatal error CVT1101: cannot open rsrc.res for reading
Press any key to continue . . .
其中给出了出错语句的行号,错误类型代码及错误信息。
按任一键结束,再关闭此DOS窗口,并按错误信息修改资源文件,存盘后,重新编译。
技巧小提示: 在qeditor.exe中,按Ctlr+G可跳到指定的行
直到显示如下成功信息:
Microsoft (R) Windows (R) Resource Compiler, Version 5.00.1823.1 - Build 1823
Copyright (C) Microsoft Corp. 1985-1998. All rights reserved.
Using codepage 936 as default
Creating rsrc.RES
RC: RCPP -CP 936 -f C:\PWIN951\TEMP\RCa81843 -g C:\PWIN951\TEMP\RDa81843 -DRC_IN
VOKED -D_WIN32 -pc\:/ -E -I. -I .
rsrc.rc.
Writing MENU:600, lang:0x409, size 128
Microsoft (R) Windows Resource To Object Converter Version 5.00.1736.1
Copyright (C) Microsoft Corp. 1992-1997. All rights reserved.
Press any key to continue . . .
说明生成了rsrc.RES和rsrc.obj文件,按任一键结束,再关闭此DOS窗口。
⒊输入源程序,然后使用菜单栏上的菜单File -> Save 或 快捷工具栏中的代表存盘功能的磁盘状图标,第一次需要输入文件名,注意要指定扩展名 .ASM[本例中为C:\PWIN951\TEMP\TEST.ASM]。
⒋汇编源程序。使用菜单栏上的菜单Project -> Assemblier ASM file。这时系统会打开一个DOS窗口运行相关的批处理文件。结束后会弹出一个名为“\masm32\bin\asmbl.txt”的窗口报告结果。
若汇编不成功,则显示信息如下(具体错误信息因错误而异):
Assembling: C:\PWIN951\TEMP\test.asm
C:\PWIN951\TEMP\test.asm(60) : error A2006: undefined symbol : NULL
C:\PWIN951\TEMP\test.asm(60) : error A2114: INVOKE argument type mismatch : argument : 1
Volume in drive C is LIU
Volume Serial Number is 4061-17D7
Directory of C:\PWIN951\TEMP
TEST ASM 8,402 06-05-02 19:29 test.asm
file(s) 13,010 bytes
dir(s) 24,403,968 bytes free
其中包括了详细出错信息。如
C:\PWIN951\TEMP\test.asm(60) : error A2006: undefined symbol : NULL
中
C:\PWIN951\TEMP\test.asm 为源程序文件的文件说明符
(60) 其中60为源程序中引起错误的语句的行号
error A2006 A2006为错误类型代号
undefined symbol : NULL 为具体错误信息
这时应按这些信息修改源程序中相应行,存盘后重新汇编。直至窗口显示如下成功信息:
Assembling: C:\PWIN951\TEMP\test.asm
Volume in drive C is LIU
Volume Serial Number is 4061-17D7
Directory of C:\PWIN951\TEMP
TEST ASM 8,401 06-05-02 19:34 test.asm
TEST OBJ 3,720 06-05-02 19:35 test.obj
file(s) 16,729 bytes
dir(s) 22,298,624 bytes free
其中包括了新生成的目标文件TEST.OBJ的有关信息。
⒌链接目标文件。使用菜单栏上的菜单Project -> Link OBJ file。这时系统会打开一个DOS窗口运行相关的批处理文件,并弹出名为“\masm32\bin\lnk.txt”的窗口报告结果如下:
Volume in drive C is LIU
Volume Serial Number is 4061-17D7
Directory of C:\PWIN951\TEMP
TEST ASM 8,401 06-05-02 19:34 test.asm
TEST OBJ 3,720 06-05-02 19:35 test.obj
TEST EXE 4,608 06-05-02 19:38 test.exe
file(s) 16,729 bytes
dir(s) 24,395,776 bytes free
其中包括新生成的可执行文件TEST.EXE的有关信息.
注:没有找到资源文件不属于错误,因此如果你的程序使用了窗口,汇编和链接均顺利完成,但运行时却看不到程序窗口,很可是你将窗口信息放在资源文件中,但资源文件尚未编译或编译没有成功。
⒍ 运行生成的可执行文件.使用菜单栏上的菜单Project -> Run program。
看到程序运行的结果了吗?
如果你的程序使用了窗口,但运行时看不到窗口,很可能是你将窗口信息放在资源文件中,但资源文件尚未编译或编译没有成功。
总之,要注意的是,对源程序文件或资源文件修改后一定要先存盘,然后再进行后继操作,否则错误依旧。
Project菜单中其它菜单项的功能和用法:
Assemble & Link 汇编源程序并链接,适用于资源文件未修改,但修改了源程序的情况
Build All 编译资源文件,汇编源程序并链接,适用于资源文件和源程序均修改的情况
Console Link OBJ File 汇编控制台型源程序
&Console Assemble Link 汇编并链接控制台型源程序
Console Build All 生成控制台可执行程序
二、开启MASM32的在线帮助功能
在用MASM32编写程序时,大量使用了WINDOWS API函数,众多的函数不同的参数我们很难记住,只能现用现查。
MASM32提供了在线帮助功能,但必须进行相应设置,才能“招之即来”。
在QEDITOR中按功能键 F1 ,弹出对话框,帮助文件?.Hlp没找到?怎么办?跟我做:
选择菜单TOOLS -> Change Editor settings,弹出名为“Change Quick Editor settings”的窗口,从Double Click Item to Edit下的列表框中找到“F1 Help File = ?.hlp”项,刚才我们看到的?.hlp就在其中,原来MASM32不知我们的帮助文件放在何处,所以只能由我们用户自己来指定位置。
双击这一项,弹出一个对话框,直接输入我们所用的帮助文件的文件说明符,[如我的是“C:\PWIN951\HELP\WIN32.HLP”,是DLEPHI附带的。],或则单击"Browse..."按钮从选择文件对话框中选择。做完后单击"Save"按钮,然后关闭此窗口。
重新启动QEDITOR,将光标定位在一个API函数名,如MessageBox上,按下功能键 F1, 帮助信息出来了吧!
注意:修改设置后要重新启动QEDITOR,新的设置才起作用。
三、汉化QEDITOR菜单
QEDITOR的菜单内容保存在文件QEDITOR.INI中,将其中的菜单项文本改为中文,就完成汉化了(当然你要使用中文版的WINDOWS)。
由于QEDITOR.INI是非常重要的文件,所以修改前一定要备份,修改时也要小心。下面是我将其中对应Project菜单的菜单项文本的汉化后的内容。
; --------------------------------------------------------
; Do not edit this file manually, the sequence of settings
; must be in the correct order and it must have the correct
; number of settings otherwise the editor may not function
; properly.
; --------------------------------------------------------
[editor settings]
MASM32 Version 6
command.com
1
4
2
80
*
*
*
*
\pwin951\help\win32.hlp
[menu settings]
;------------------------------------------------------------
; File paths should have the drive added so that the relative
; paths become absolute paths. This allows the tools to be
; accessed from different drives on the computer.
; -----------------------------------------------------------
[&R工程]
&R 编译资源文件,\MASM32\BIN\Bres.bat {b}
&A 汇编源程序文件,\MASM32\BIN\Assmbl.bat {b}
-
&L 链接目标文件,\MASM32\BIN\Lnk.bat {b}
汇编源程序并链接目标文件,\MASM32\BIN\Build.bat {b}
&B 编译资源文件、汇编源程序并链接目标文件,\MASM32\BIN\Bldall.bat {b}
运行 &Makeit.bat 生成可执行文件,makeit.bat
-
&O 链接控制台目标文件,\MASM32\BIN\Lnkc.bat {b}
&C 汇编和链接控制台文件,\MASM32\BIN\Buildc.bat {b}
&A 一步生成控制台可执行文件,\MASM32\BIN\Bldallc.bat {b}
-
&R 运行程序,{b}.exe
[&Tools]
MASM32使用教程的更多相关文章
- win32汇编(ASM)学习资源
网站 AoGo汇编小站(MASMPlus作者) Win32Asm教程在线版 Win32Asm教程博客园文件备份版 Masm32补充教程系列 Win32 ASM Tutorial Resource Ki ...
- Win32汇编环境搭建教程(MASM32 SDK)
一.说明 常用的32位汇编编译器有微软的MASM.Borland的TASM和NASM. 编译器 开发者 优点 缺点 MASM 微软 微软自家软件和系统兼容性好:支持invoke/.if等伪指令将汇编变 ...
- 用sublime3编写运行16位汇编程序_详细教程
最近需要学8086汇编,课堂教学竟然是PPT看代码,然而不运行程序是没法学编程的.网上的教程有很多坑点,摸索出了正确的步骤. 1.安装sublime3.安装MASM32.64位系统安装DOSBOX(因 ...
- Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求
上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...
- Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数
上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...
- Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数
上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...
- Angular2入门系列教程4-服务
上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...
- Angular2入门系列教程1-使用Angular-cli搭建Angular2开发环境
一直在学Angular2,百忙之中抽点时间来写个简单的教程. 2016年是前端飞速发展的一年,前端越来越形成了(web component)组件化的编程模式:以前Jquery通吃一切的田园时代一去不复 ...
- wepack+sass+vue 入门教程(三)
十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...
随机推荐
- 两端对齐justify
//容器设定text-align:justify.justify{ text-align: justify; } //容器里面的元素 .justify i{ width:24px; line-heig ...
- YUM更换源(1)--yum找不到安装包
公司提供的CentOS VM中,/etc/yum.repos.d 下 只有一个build.repo,其中提供的yum 源只有公司内部的几个源,很多包在这些源中都找不到.于是要添加别的源,下面的帖子中介 ...
- 安装ARM交叉编译器
1.开发平台 虚拟机:VMware 12 操作系统:Ubuntu 14.04 64bit 2.准备ARM交叉编译工具包 编译uboot和linux kernel都需要ARM交叉工具链支持,这里使用Li ...
- java实现——008旋转数组的最小数字
public class T008 { public static void main(String[] args) { int[] num = { 3, 4, 5, 1, 2 }; System.o ...
- 微信小程序之----消息提示框toast
toast toast为消息提示框,无按钮,如需关闭弹框可以添加事件设置hidden为true,在弹框显示后经过duration指定的时间后触发bindchange绑定的函数. 官方文档 .wxml ...
- 再次写了第一个servlet
费时2小时,熟悉tomcat和编写了第一个servlet
- Git提交过程的一些问题
参考:http://www.cnblogs.com/sinojelly/archive/2011/08/07/2130172.html 提交冲突,无法提交到github git pull origin ...
- BZOJ2720: [Violet 5]列队春游
2720: [Violet 5]列队春游 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 173 Solved: 125[Submit][Status] ...
- iOS 按钮设置图片和事件
[btn addTarget:self action:@selector(searchButtonClick) forControlEvents:UIControlEventTouchUpInside ...
- 使用(Drawable)资源———AnimationDrawable资源
AnimationDrawable代表一个动画. 下面以补间动画为例来介绍如何定义AnimationDrawable资源,定义补间动画的XML资源文件已<set.../>元素作为根元素,该 ...