Win32汇编源程序的结构

.386    ;指定使用的指令集
.model flat, stdcall    ;定义工作模式,其中flat是Win32程序使用的模式,代码和数据段使用同一个4GB段
option casemap:none    ;定义了程序中的变量和子程序名是否对大小写敏感,因为Win32 API名称是区分大小写的,所以必须指定这个选项。
;
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;
Include文件定义
;
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include    windows.inc
include user32.
inc
include user32.lib
include kernel32.
inc
include kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;
数据段,在PE中,一般放在PE的_DATA节区内。
;
数据段定义一般可以归纳为3类:1.已定义的变量,也即在源程序中已经被定义了初始值。2.未定义的变量,一般是当做缓冲区或者在程序执行后才开始使用,一般放在.data?段中,只会在程序运行时去分配的。3.常量,一般放在.const段中,小程序中常常把常量一起定义到.data段中。
;
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    .data
szCaption    db    
'A MessageBox!'0
szText        db    
'Hello,World!'0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;
代码段,在PE文件里,一般放在_TEXT里。

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    .code
start:
    invoke MessageBox,NULL,offset szText,\    
;\表示换行,invoke是伪指令,它意思是call,并且还能帮助报错,当发现参数个数不对时。格式:invoke 函数名 ,参数1 ,参数2,
           offset szCaption,MB_OK
    invoke ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    end    start
;end     [开始地址],表示程序从开始地址这个标号开始执行。
posted @ 2009-04-02 15:00  小试锋芒  阅读(260)  评论(0编辑  收藏  举报