汇编IDE的选择与配置

IDE,全称集成开发环境,对于MASM的IDE,我想每个人最低的要求都至少要求在写程序时不需要在命令行中手工输入命令来编译再链接,这样很不方便,如果代码有错,就需要用编辑器(一般是计事本)修改然后再重复的编译、链接,把大量的时间花在这种操作上,不爽!


为此,RedASM出现了,它具备了写MASM程序的所有基本功能,只要设置好,在RedASM中写程序简直和用VC差不多,API函数原型的提示、常数自动的弹出、结构的成员变量显示(暂不支持声明为结构类型的变量)、过程变量名自己列出、支持快速跳转、关键字的自动补齐、集成对话框编辑器/菜单编辑器、工具栏编辑器、调试器等等等等,让我等汇编狂人惊喜不已,但是(住住听到这两字时总是让人心里发紧^_^),RedASM对中文的支持相当不好,并且一直没有解决,情况就是打开、编辑有中文的源文件时会停止响应或死机,除非整个程序都不用中文那就没问题,最新版本的RedASM能通过设置中文字体来支持双字节的编辑,但这种方法只适用于2000以上的操作系统,对于我们这些用着破机器装个98都觉得慢、对英文头痛的人来说,RedASM成了我等人心头之鸡肋---功能强大却用着烦心,可是它的确非常实用,心里这个可惜啊,犹如滔滔江水....(打住)!


所以,如果你操作系统在98以上(不包括ME),推荐你选择RedASM,最新版本的RedASM速度更快,实用的功能让MASM程序的编写真的非常方便,你可以到作者主页上去下载(http://radasm.sonshinesoftware.com/


),记住RedASM更新相当快,要时常去看看是否更新了,这也是对作者的一种支持。


不过因为我RedASM只用过几次,它的功能与特点我不清楚,详细自己去玩吧,而MASM的设置也相当方便,只要设置好MASM32的路径就行。
  RedASM的几个缺点:


1.是没有模板,虽然可以自己写一个,但是内建模析是一个IDE所具备基本条件,不知道RedASM的作者为什么不写几个。


2.高亮显示的API函数与常数库不全,遇到没有加入的函数,我们还是得去看参考手册。(建立写MASM总开着参考手册,方便查询)。


3.资源编辑功能不是很实用,RedASM把对话框编辑、菜单编辑等等分开了,碰到需要加入其它资源,还是得自己去修改,这点不方便。


另外向大家重点推荐另一个也是我一直使用的IDE,不,不能说是IDE,只能说是编辑器,那就是EditPlus,只要自己设置好,EditPlus就可以相当方便的用来进行MASM的编程,如何配置大家就不要操心了,我已经为大家写好了相关的配置文件,并做了一个安装程序,请大家下载本站的MASM for EditPlus,安装好后就行了,目前MASM for EditPlus已经升级到Serial 0004,因为MASM for EditPlus是我自己配置的,我就它详细向大家说说MASM for EditPlus的优点。


1.MASM for EditPlus的关键字非常全,因为我是按照最新版本的MASMv8.0来制作语法文件表的,所有MASMv8.0支持的函数都能高亮显示,如果某个在API手册中存在的API在EditPlus中输入后没有高亮显示就证明此函数MASM不支持,同理,常数与结构也是一样,另外所有的关键字都支持自动完成,这样可以尽量的避免大小写这种讨厌的错误.


2.MASM for EditPlus的模板相当多,这样省得大家在学习时得去自己写重复的代码.


3.批处理相当完善,还支持VC的编译,批处理有相当的智能,当编译的文件是EXE/DLL等程序时,如果源文件目录下不存在资源文件,批处理会通过复制的方法把相应的res改名复制到目标目录,编译后就能行到一个包含资源文件的程序,这样方便点4号工具栏启动VC资源编辑器来进行编辑.


3.当编译的模式是DLL/VxD时,如果源文件目录下不存在DEF文件,则批处理也会自动用重定向文件来创建它,这样你就不用手工去自己建立了,当然要输出函数的话还是得自己添加。


4.当建立LIB时,INC文件会自动的创建,虽然有时会把一些API函数也加进去,但是这样不影响它的使用,因为MASM编译时是找到原型就跳过的,所以建立自己建立的LIB在使用时尽量包含在最后。


5.因为MASM for EditPlus集成了MASM5.0、MASMv8.0、VC资源编辑器,98DDK的头文件,所以,你只需要安装好MASM for EditPlus后就不需要进行其它设置了,并且只要你安装了SoftICE,还可以使用MASM for EditPlus进行源码调试。


6.如果你喜欢手工进行编译,可以这样,在启动时打通MASM for EditPlus的BIN目录,如在Autoexec.bat中添加一句set PATH=%PATH%;D:\MASM32\BIN,注意D:\MASM32\BIN要是你自己的安装目录下的BIN,以后在命令行方式下只要输入mlink 文件路径就可以进行一步到位的编译,例如编译C:\1.asm,则输mlink c:\1.asm,则能自动的编译出1.EXE文件来。唯一的要求就在源代码最前面几行中加入一行注释,里面用双引号包含说明编译的模式,如;MODE="DOS",则编译程序会自动编译为DOS汇编程序,相关的关键关有DOS/CON/DLG/EXE/DLL/MDI/VXD/LIB.


小技巧:


===============


1.RedASM有一个很方便的功能,叫ASCII码表,这在想知道某些字符的值的相当有用,其实EditPlus中这个功能更加方便,你只要把光标移动到相应字符前面,在EditPlus的状态栏中会自动显示其ASCII值,虽然无法显示特殊的字符,但是已经相当方便好用。


2.当一个文件中自定义的过程、函数过多时,可以点搜索->函数列表来查看已有的过程,双击后能马上跳到目录行.对于大文件相当文件。


3.当要查找字符时,如想查找一些变量是否重声明,可以双击选择这个单词,再点查找时选择的文本会自动出现在查找编辑框中。


4.当要查找某个API函数相应的LIB时或查看某个常数的值时,你可以这样做:点搜索->在文件中查找,输入API的名字,然后文件类型使用*.inc,文件夹选择MASM for EditPlus的INCLUDE文件,然后点查找,不到1秒钟,就能查找到它所对应的INC文件。也很方便,并且设置好后,以后查找时只需双击想查询的API再点在文件中查找,所有的设置都不需要输入,直接点查找就行,用得好的话,这比在API手册中查找还要方便。


5.如果编译时使用EditPlus的输出窗口,当发生错误后,你只需双击列表中错误提示的那一行,则能自动跳运源文件中相关行,这一点和VC的编辑器一样。这个功能也相当方便。具体在参数设置中,在用户工具需要使用输出窗口的工具下复选"捕捉输出"就行了。


6.如果你用MASM已经在写程序了,并且想写一个软件,建议使用工程功能,这样可以把一系列的文件设置在一个工程中,在下面的打开的文件名列表左边有一个文件夹的图标,点一下能在弹出的菜单中相当文件设置工程文件。


7.把API的帮助文件添加到5号工具栏,以后只需选择要查询的关键字,点5号工具栏就可以显示它的信息,非常方便。如果您还未安装API参考手册,请到我的站点下载。


EditPlus做为一个文本编辑器是非常实用的,对于编程来说,有一些非常有用的功能不容易被您发现,我均放到了工具栏上,相应的快捷键我帮您定义好了,这些快捷键是我习惯的,如下:


==============================================================


把选择的文本复制追加到剪切板   Ctrl+Shift+C


选择文本全部转换成大写   Ctrl+U
  选择文本全部转换成小写   Ctrl+L


选择当前的字词      Ctrl+W


选择当前行      Ctrl+R 或 单击行号


开始进行列块选择     Alt+Mouse


注释选择的文本     Ctrl+;


复制当前行      Ctrl+J


增加当前行的缩进     Ctrl+I


缩进或缩进选择行     Tab


显示当前源代码中的所有函数列表  F4


在当前光标所在行设置一个标记  F5


清除当前文档中的所有标记   F6


快速跳转到当前行上一个标记   F7


快速跳转到当前行下一个标记   F8


跳到指定行      Ctrl+G


显示或隐藏列标记     Ctrl+`


开始记录或停止键盘宏记录   Ctrl+Q


键盘宏回放      Alt+ 0,1,2,3...


运行用户工具     Ctrl+ 0,1,2,3...


其中最实用的是文档标记,当一个文件很长时,如果您突然想声明一个全局变量,当然您可能会用宏在代码中定义,但更有可能的是您会拖动光标到最前面的.data或.data?段添加好变量,再拖动光标到刚才的地方,如果代码很多,非常麻烦,这个时候,请一定要使用标记功能,碰到这种情况,您只需先在当前行按下F5做一个标记,然后再到前面声明好变量,再按一个F8,就能马上返回刚才的位置,非常方便。


接着是函数列表,当一个文件很大,里面有N个过程/函数时,F4就太方便了,您可能在某个过程中修改时突然想到另外某个过程也要修改,此时您只需按下F4,所有的过程就全部出来了,选择马上跳转到这个过程,结合标记功能,在文件中来回跳转根本不会再麻烦。本文来自编程入门网


另外一个非常实用的功能是增加缩进,当源代码的某一块要全部往前减少一个制表符时,你只需选择这些行,再按Ctrl+I就OK了(全部往后添加一个制表符就是Tab键,当然要选择),对代码美化非常实用。




  还有宏(不是MASM的宏),比如说对话框过程,每个对话框返回过程最初都是一样的,您可以把过程记录为一个宏,以后需要添加对话框模板的地方按Alt+n就行了。一样方便。


另外有一个功能就是颜色选择工具,猜想您以前定义色彩搞不好是使用宏RGB或自己进行移位,现在不必这么麻烦了,颜色选择功能已放到了工具栏上,不过记得选择了相应色彩后一定要把前面两位与后面两位调换,如选择后为:#45FF10h,这时应该改为10FF45h,如果前面是A-F,还应添加0.如#89FFEEh,应改为0EEFF89h.


另外还有一些编辑器非常好,如UE,如果你想使用UE做编辑器,可以直接挂上MASM for EditPlus的批处理,参数的提供设置一下后就能进行MASM for EditPlus一样的编译操作。


另外,大家不要老是在意IDE的选择,其实做为一个编辑器来说,关键是要自己用着顺手,很多朋友都不喜欢RedASM的封装性,老觉得它就像VC一样搞得很复杂,还有些朋友不喜欢用EditPlus,这些都有个人的原因,所以,大家在选择IDE时,选择好后觉得好用最好就一直用下去,像RedASM,将来它一定会解决双字节的问题的,如果现在你去使用它,将来就会更加顺手.当然,MASM for EditPlus也会不断的进行更新,不过因为编辑器不是我编写的,我的做法可能有点白痴。最好的方法就是自己写一个编辑器,这个以后再说。

----------------------------------------------------------------------------------------------------------------------------------------------

RadASM很有名但我弄了会不太上手,待以后看需要不需要吧
幸好找到一款叫MASMPlus的软件很好用,做的也很简洁漂亮,尤其喜欢他的语言着色。
看了一下组件才知道编辑内核是EditPlus,着色很漂亮的,难怪看着有点熟悉。
http://www.aogosoft.com/是他的讨论网站,有兴趣的可以下来用用


这款IDE用的是masm32,所以编译器是ML.exe
常见编译选项如下:
/c   仅编译不链接  常用
/coff   产生obj文件为coff格式   必用
/Cp  源代码区分大小写
/Fo filename 指定obj文件名
/Fe filename  指定exe文件名
/Fl 【filename】 产生lst列表文件
/Gz 函数调用stdcall形式
/I path 指定include文件路径

-------------------------------------------------------------------------------------------------------------------------------

由于这些日子一直都在研究底层的技术,从 Windows 驱动程序,到 Windows 内核等等技术的学习,

让我对底层的技术越发有兴趣了,而刚好,在研究 WRK 时,

对内存管理,寄存器,地址总线,数据总线,控制总线等的理解不够透彻,

所以越发的想学习汇编程序设计来提升功力,

而由于近来在公司里一直都有项目压着,所以在公司里也实在不好拿本汇编程序设计看,

所以只好晚上回来学习了, 汇编看了几个晚上,也算是蛮有感觉的。

今天就先来搭个开发环境再说吧。

             

开发环境搭配

我介绍四种开发汇编程序的方式:

第一种:直接在 Dos 环境下使用 Edit 命令调出源码编辑框,

             生成源码后,可以使用由微软提供的 masm 汇编编译器来对源码进行编译,

             编译完后再使用 Linker 连接器即可得到可执行文件,

             这种方式现在几乎被灭绝了(当然使用 masm 汇编编译器还是很普遍的),

             除非你真要在 DOS 环境下运行汇编程序;

第二种:通过简化第一种方式而来;

第三种:直接使用 Masm for Windows 集成实验环境,这个开发环境呢,非常适合汇编语言的初学者,

             因为这个 IDE 本身就是由一些从事汇编程序教学的大学老师开发的出来用于汇编初学者进行学习和实验的,

             所以使用简单,方便,这里可以对这个 IDE 稍加推荐;

第四种:则是通过 Visual  Studio 这个强大的 IDE 来实现汇编程序的编译,运行和调试,

             至于 Visual  Studio 就不多做介绍了,.Net 用了这么多年,这东西强大到什么程度那是总所周知的;

             

          

                   

第一种方式:使用 Edit + MASM 5.0 编译器 + Linker 连接器

其实这种方式是很简单的,只是很麻烦,因为简单而且麻烦,

所以我采用尽可能的将截图传上来,然后稍加注解的方式进行介绍,

软件准备:

需要 MASM 5.0 或者以上的汇编编译器

         

首先,是要编辑汇编源代码:

其实对于源码的编辑根本不需要向如下这么麻烦,直接拿个记事本就 OK 了

运行 cmd 命令

image

输入 Edit 命令从而弹出汇编源码编辑框

image

image

在源码输入框中输入汇编源码

image

将编辑好的汇编源码保存到 xx.asm 文件中

image

image

image

         

然后就是要编译编辑好的汇编源代码

在 Dos 环境下进入到  MASM 5.0  汇编编译器所在的目录

image

然后运行 masm.exe

image

image

可以从上面的截图中看到  [. ASM]  的标记,这个标记代表的是需要在这里输入要编译的源程序文件名,

这里有一点特别的是,由于默认的文件扩展名为 .asm ,所以在编译 .asm 的汇编源程序时可以不用指定源程序所在文件的扩展名。

我们将一开始编辑好的汇编源程序所在的文件输入以进行编译

image

指定文件所在路径后按  Enter  键

image

此时可以看到编译器提示需要输入要编译出的目标文件的名称,由于在一开始已经指定了 BoyXiao. asm ,

所以编译器自动指定了目标文件的名称为 BoyXiao. obj 的名称,如果在这里不做修改的话,

则编译器会以默认目标文件名称 BoyXiao. obj 进行输出,在这里我并不改变名称,所以直接按 Enter 键即可

image

此时又提示需要输入列表文件的名称,其实是完全可以不要让编译器生成这个 LST 文件的,所以也不需要进行输入,

直接按 Enter 键即可

image

此时又提示需要输入交叉引用文件的名称,这里也完全可以不要让编译器生成这个 CRF 文件,

所以也不需要进行输入,直接按 Enter 键即可

image

至此,汇编源程序编译成功,

编译得到的结果就是在我的 E:\Tools\MASM\MASM 5.0 目录下生成了一个 BoyXiao.obj 文件

image

         

下面就是要实现对目标文件的连接

经过编译操作后,我们得到了一个 .obj 的目标文件,但很显然,这还并不是一个可执行文件,

下面就需要对目标文件进行连接,从而得到一个可执行文件。

一般来说,需要准备一个连接器,这里我使用的是微软提供的 Linker 连接器,即 LINK.EXE ,

image

进入 LINK.EXE 文件所在目录,直接运行 LINK.EXE

image

image

此时提示需要输入被连接的目标文件的名称,这里也就是  BoyXiao.obj  ,

由于我的 BoyXiao.obj 和 Link.exe 在同一目录下,所以不需要指定路径,直接给出 .obj 的名称即可,

image

按  Enter  键

image

这里提示需要输入要生成的可执行文件的名称,此时如果想要将可执行文件输入到指定目录下,

则需要指定目录,否则只需要指定名称即可,并且可以看到名称已有默认值:BOYXIAO.EXE

在这里我选择默认值,所以直接按 Enter 键即可

image

按  Enter  键

image

又继续提示需要输入映像文件的名称,在这里,不需要生成这个文件,所以直接按 Enter 键即可

image

此时又提示需要输入库文件的名称,由于我们的这个程序中没有使用任何的子程序,

也就是根本没有调用什么库文件,所以这里也可以直接按 Enter  键处理

image

至此,整个目标文件的连接工作结束,得到的结果是一个 EXE 文件

image

           

执行汇编程序

image

其实执行起来是看不到什么结果的,因为上面的汇编代码没有输出任何内容,而只是改变了几个寄存器的值而已,

自然也就看不到任何的输出了。

                   

                  

               

第二种方式:使用 Edit + MASM 5.0 编译器 + Linker 连接器 (简化版)

这种方式其实和第一种方式说不上有什么区别,只不过在编译和连接过程中使用了很多编译器和连接器的默认设置而已

软件准备:

和第一种方式一样

                    

编辑汇编源代码:

和第一种方式一样,也可以是直接使用文本编辑器编辑即可

      

编译编辑好的汇编源代码

直接到 MASM.EXE 文件目录,然后直接使用 masm 编译指定路径的文件即可

特别注意的是,需要在目录的后面加上 “;”

image

image

同样在 E:\Tools\MASM\MASM 5.0 目录下生成了  BoyXiao.obj 目标文件

image

        

实现目标文件的连接

同样,直接下到连接器 LINK.EXE 文件所在的目录,然后直接使用 LINK 连接指定的目标文件即可

同样需要注意在目录或文件名的后面加上 “;”

image

image

可以看到连接成功了,从而生成了可执行文件,当然这个可执行文件运行的效果和第一种方式中一样,

即看不到任何输出

image

         

           

           

第三种方式:MASM For Windows 集成开发环境

上面的两种方式都显得非常麻烦,编译了还要连接,谁有那么多时间去浪费啊,

所以,下面介绍的这个 MASM For Windows 集成开发环境就显得非常有优势了,

软件准备:

MASM For Windows 集成开发环境,我这里使用的是 2010 版本,大小 15.5 MB

           

实现 HelloWorld

直接打开 MASM For Windows 集成开发环境,然后找到范例程序,然后直接运行即可

image

image

可以看出,使用这个东东确实会方便很多很多

             

              

               

第四种方式:使用 Visual  Studio 来实现开发汇编程序

软件准备:

既然是使用  Visual  Studio  来开发了,自然就需要  Visual  Studio  IDE 了,

在这里呢,我使用的是  Visual  Studio  2010 ,当然 2008 和 2005 都是可以的,

只不过在一些设置上有些许区别而已,在这里,我也不做区分,大家感兴趣的可以去网上淘一大把,

然后就是<<Intel  汇编语言程序设计>>中的 Irvine 包,这个在网上也有一大把

       

     

VS 2010 设置:

在  VC++  中新建一个空项目,取名为  Test

image 

定制  VC++  工程构建规则

image

image

设置完  VC++  生成自定义项文件后,再添加一个  C++  文件,并注意取名时后缀名记为  .asm 

image

设置  VC++  工程的项目属性

image

需要添加库路径,这里的库路径指的是 <<Intel  汇编语言程序设计>> 中的 Irvine 库

image

设置包含路径

image

设置依赖库文件,添加 Irvine32.lib

image

设置项目输出

image

设置生成汇编代码列表,添加  $(ProjectName).lst  属性

image

          

                 

Hello World 程序:

image

直接运行即可

image

             

               

            

结束语

花了这么多的截图来介绍这四种汇编程序开发方式,也算是良苦用心了,事实上呢,这四种方式,

我们并没有必要全部掌握,我们只需找到适合自己的方式即可,

比如,初学的话,我觉得  MASM  For  Windows  IDE  就非常不错,

而至于系统性的开发,尤其是对于 Win32  汇编程序的开发,则选择  Visual  Studio  是个不错的选择。

        



 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值