zoukankan      html  css  js  c++  java
  • MASM32使用教程

    代码如果你在用汇编语言来开发windows下的程序的话,MASM32是很好的选择。

    (Masm32下载地址请用google搜索罢。)

    工欲善其事,必先利其器。

    本文主要针对masm32 v8来说明三点:

    1、基本使用方法
    如何在MASM32中建立、汇编、链接源程序文件和运行生成的可执行文件。

    2、如何开启MASM32的在线帮助功能

    3、汉化QEDITOR菜单

    一、基本使用方法
    以在C:PWIN951TEMP文件夹下建立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:PWIN951TEMPRCa83947 -g C:PWIN951TEMPRDa83947 -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:PWIN951TEMPRCa81843 -g C:PWIN951TEMPRDa81843 -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:PWIN951TEMPTEST.ASM]。

    ⒋汇编源程序。使用菜单栏上的菜单Project -> Assemblier ASM file。这时系统会打开一个DOS窗口运行相关的批处理文件。结束后会弹出一个名为“masm32inasmbl.txt”的窗口报告结果。

    若汇编不成功,则显示信息如下(具体错误信息因错误而异):

    Assembling: C:PWIN951TEMP est.asm
    C:PWIN951TEMP est.asm(60) : error A2006: undefined symbol : NULL
    C:PWIN951TEMP est.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:PWIN951TEMP

    TEST ASM 8,402 06-05-02 19:29 test.asm
    file(s) 13,010 bytes
    dir(s) 24,403,968 bytes free
    其中包括了详细出错信息。如

    C:PWIN951TEMP est.asm(60) : error A2006: undefined symbol : NULL

    C:PWIN951TEMP est.asm 为源程序文件的文件说明符
    (60) 其中60为源程序中引起错误的语句的行号
    error A2006 A2006为错误类型代号
    undefined symbol : NULL 为具体错误信息

    这时应按这些信息修改源程序中相应行,存盘后重新汇编。直至窗口显示如下成功信息:

    Assembling: C:PWIN951TEMP est.asm

    Volume in drive C is LIU
    Volume Serial Number is 4061-17D7
    Directory of C:PWIN951TEMP

    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窗口运行相关的批处理文件,并弹出名为“masm32inlnk.txt”的窗口报告结果如下:

    Volume in drive C is LIU
    Volume Serial Number is 4061-17D7
    Directory of C:PWIN951TEMP

    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:PWIN951HELPWIN32.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
    *
    *
    *
    *
    pwin951helpwin32.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 编译资源文件,MASM32BINBres.bat {b}
    &A 汇编源程序文件,MASM32BINAssmbl.bat {b}
    -
    &L 链接目标文件,MASM32BINLnk.bat {b}
    汇编源程序并链接目标文件,MASM32BINBuild.bat {b}
    &B 编译资源文件、汇编源程序并链接目标文件,MASM32BINBldall.bat {b}
    运行 &Makeit.bat 生成可执行文件,makeit.bat
    -
    &O 链接控制台目标文件,MASM32BINLnkc.bat {b}
    &C 汇编和链接控制台文件,MASM32BINBuildc.bat {b}
    &A 一步生成控制台可执行文件,MASM32BINBldallc.bat {b}
    -
    &R 运行程序,{b}.exe

    [&Tools]

  • 相关阅读:
    一个用css写出来的下拉菜单
    oracle创建新的用户 创建序列 并生成自动自增
    Ubuntu 16.04下安装网络流量分析工具 Wireshark
    Ubuntu16.04安装PostgreSQL并使用pgadmin3管理数据库_图文详解
    http协议无状态中的 "状态" 到底指的是什么?!
    Struts2使用流程
    hibernate创建一对多映射关系
    hibernate中创建一对一映射关系
    利用Hibernate进行数据库的增删改查
    Hibernate的简单流程
  • 原文地址:https://www.cnblogs.com/Zblogs/p/3265567.html
Copyright © 2011-2022 走看看