读书频道 > 网站 > 网页设计 > Windows PE权威指南
1.1.2 开发第一个源程序HelloWorld.asm
13-07-11    奋斗的小年轻
收藏    我要投稿   

本文所属图书 > Windows PE权威指南

内容全面,详尽地剖析了WindowsPE文件格式的原理及其编程技术,涉及安全领域的各个方面和Windows系统的进程管理和底层机制;实战性强,以案例驱动的方式讲解了WindowsPE文件格式在加密与解密、软件汉化、逆向工程...立即去当当网订购

上一小节,详细介绍了汇编语言环境的安装与设置。本小节将利用上面建立的环境开发一个简单的汇编语言程序HelloWorld.asm,程序运行后会在屏幕上弹出一个提示窗口并显示“HelloWorld”,具体步骤如下。

首先,打开记事本程序,在其中输入以下内容,如代码清单1-1所示(行号去掉)。

代码清单1-1 第一个汇编源程序(chapter1\HelloWorld.asm)
1;--------------------------------
2;功能:我的第一个基于Win32的汇编程序
3;作者:戚利
4;编写日期:2010.6.28
5;--------------------------------
6
7.386
8.modelflat,stdcall
9optioncasemap:none
10
11includewindows.inc
12includeuser32.inc
13includelibuser32.lib
14includekernel32.inc
15includelibkernel32.lib
16
17;数据段
18.data
19szTextdb'HelloWorld',0
20;代码段
21.code
22start:
23invokeMessageBox,NULL,offsetszText,NULL,MB_OK
24invokeExitProcess,NULL
25endstart

输入完毕后,在文件菜单中单击“保存”,选择保存位置为“D:\masm32\source\chapter1”,在文件名处输入“HelloWorld.asm”,如图1-6所示。

 

注意 chapter1是D:\masm32\source下的子目录,需要事先建立。文件名前后的英文双引号不要遗漏。

这是一个最简单的图形用户界面(GraphicalUserGuide,GUI)程序。

注意 笔者尽量遵循开发商业程序的原则,使每个程序更容易让别人看懂,所以你可能会在一个不大的程序里看到很多的注释。

1~6行是程序的注释;7~10行定义了该汇编程序支持的基本特性;11~16行引入了外部的动态链接库,在这些动态链接库里有程序需要的函数调用,这种调用方式符合程序代码重用的原则;17~19行定义了这个程序中用到的数据;20~25行则是程序的代码段,25行的伪指令“endstart”告诉操作系统代码入口;最有用的代码行只有23行和24行,分别调用了user32.dll动态链接库中的MessageBoxA函数和kernel32.dll动态链接库中的ExitProcess
函数。

扩展阅读 
在描述代码的语句中,使用了MessageBoxA函数,但在源代码里出现的却是MessageBox,两个函数相差了一个字母“A”。谈到这里,不能不说一说Win32API函数的命名问题了。Win32API中有名字的函数一般都有两个版本,其后缀分别以“A”和“W”结束,如创建文件的函数CreateFileA和CreateFileW(当然也有例外,如前面的ExitProcess函数)。A和W表示这个函数使用的字符集,A代表ANSI字符集,W表示宽字符,即Unicode字符集,在Windows中的Unicode字符一般是使用UCS2的UTF16-LE编码。查看user32.dll的导出表,你会发现user32.dll中存在MessageBoxA和MessageBoxW两个函数,代码清单1-1中的MessageBox为什么没有添加任何后缀呢?答案可以在MASM32提供的包含文件里找到,如下所示:
MessageBoxAPROTO:DWORD,:DWORD,:DWORD,:DWORD
MessageBoxequ<MessageBoxA>

以上定义来自user32.inc文件(在文件夹D:\masm32\include中),通过equ伪指令符把MessageBox等价成了MessageBoxA。所以,如果以后大家再看到代码中出现MessageBox,就知道指的是MessageBoxA函数了。

汇编语言的基本语法本书将不做讲解,我们假设你已经掌握了MASM32编程的基本知识。

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站