电脑爱好者,提供IT资讯信息及各类编程知识文章介绍,欢迎大家来本站学习电脑知识。 最近更新 | 联系我们 RSS订阅本站最新文章
电脑爱好者
站内搜索: 
当前位置:首页>> C++/VC>>一个最简单的WIN32汇编程序:

一个最简单的WIN32汇编程序

来源:远方网络 | 2005-3-7 22:23:21 | (有3913人读过)


作者:波波蛋儿
文章性质:根据有关资料整理

来源:www.ossh.org

这是一个编译通过的程序,运行后显示一个MessageBox。
;*****************************
;Hello.asm *
;功能:显示一个MessageBox框 *
;*****************************

NULL = 0 ;常量定义
MB_OK = 0 ;
.386p
.model flat ;平坦内存模式
extrn MessageBoxA:proc ;外部过程声明
extrn ExitProcess:proc ;

.data
Caption db 'Hello World!',0
Text db '欢迎来到Win32汇编的世界',0

.code
main:
push MB_OK ;MessageBoxA的参数入栈
push offset Caption ;
push offset Text ;
push NULL ;
call MessageBoxA
push 0 ;ExtiProcess的参数入栈
call ExitProcess

end main


以下是它的MAKE文件

NAME = Hello
OBJS = $(NAME).obj

IMPORT=$(MAKEDIR)\..\lib\import32.lib

$(NAME).EXE: $(OBJS) $(DEF)
tlink32 /Tpe /aa /c $(OBJS),$(NAME),, $(IMPORT),

.asm.obj:
tasm32 /ml $&.asm

这是一个最简单的WIN32汇编程序了,但是就是这最简单的程序其实还是有很多的地方需要解释。曾经,有一个程序员看了这个程序问我,“extrn MessageBoxA:proc ;外部过程声明”这是个外部过程,而没有见INCLUDE之类的包含语句,说这个MessageBoxA从那里来呀。我告诉他所有的包含在这里:IMPORT=$(MAKEDIR)\..\lib\import32.lib,这里包含了所有这个程序需要的外部过程。

拿这个例子给大家看,主要的目的不是说汇编很简单,相反用汇编写WINDOWS程序很麻烦(不是复杂),一个原因就是用于生成EXE文件的方法很多,那些在高级语言里屏蔽掉的特性全都被放出来了,你需要知道更多的东西。而且,为了达到同一个目的,可以使用很多中的方法。

其实,那个看这个程序的人,说的也没错,使用的不是TASM的话,有可能会在源程序里出现INCLUDE语句。开发工具变了,所以相应的语句也就变了。汇编语言有一个特性大家应该都知道,就是对硬件的依赖性非常大。还有一个特性就不是人人都知道了,就是对编译器和连接器也有很大的依赖性,在TASM下正确的程序,大部分都不一定适合其他环境。


参考资料:《Windows环境下汇编语言设计》
C++/VC热门文章排行
网站赞助商
购买此位置

 

关于我们 | 网站地图 | 文档一览 | 友情链接| 联系我们

Copyright © 2003-2024 电脑爱好者 版权所有 备案号:鲁ICP备09059398号