Hello, World !
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.386 ;指定使用的指令集
.model flat,stdcall ;定义程序的工作模式
option casemap:none ;程序中的变量和子程序名是否对大小写敏感
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include windows.inc ;Include 文件定义
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.data ;数据段 用来存放一些字符串、变量定义
szCaption db 'A MessageBox !',0
szText db 'Hello, World !',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code ;代码段
start: ;开始标号
invoke MessageBox,NULL,offset szText,offset szCaption,MB_OK
invoke ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end start ;指定程序的结束和程序入口
不同类型的段 用来存放不同类型的数据
例如全部段
.386
.model flat,stdcall
option casemap:none
<一些include语句>
.stack [堆栈段的大小]
.data
<一些初始化过的变量定义>
.data?
<一些没有初始化过的变量定义>
.const
<一些常量定义>
.code
<代码>
<开始标号>
<其他语句>
end 开始标号
win32中只有代码和数据以及堆栈段之分 另外程序中不必定义堆栈段,系统会自动分配堆栈空间
.data .data? .const
第一类为可读写已定义的变量
第二类为可读写未定义的变量
第三类数据为一些常量 只可读 不可写入 .const为常量段