win32汇编MessageBox
32位处理器环境的段寄存器:内存描述符表的段选择子
简单的代码:
.386 ;使用的指令集
.model flat, stdcall ;内存模型和默认的函数调用约定,后续proc和proto如果没写约定,就用此处默认的
option casemap:none ;大小写敏感
MessageBox equ MessageBoxA
MessageBoxA proto : DWORD, : DWORD, : DWORD, : DWORD ;声明要调用的函数,链接时要加user32.lib选项
.data ;数据段,可读可写
.const ;只读数据段,只读
g_szHello db 'Hello World', 0
g_szTitle db 'The Title', 0
.data? ;未初始化数据段,可读可写
.code ;代码段,可读可执行
start:
push 0
push offset g_szTitle
push offset g_szHello
push 0
call MessageBox
ret
end start
编译:ml /c /coff main.asm
链接:link32 /subsystem:windows main.obj user32.lib
简化版:
.386 ;使用的指令集
.model flat, stdcall ;内存模型和默认的函数调用约定,后续proc和proto如果没写约定,就用此处默认的
option casemap:none ;大小写敏感
include windows.inc
include user32.inc
includelib user32.lib
.data ;数据段,可读可写
.const ;只读数据段,只读
g_szHello db 'Hello World', 0
g_szTitle db 'The Title', 0
.data? ;未初始化数据段,可读可写
.code ;代码段,可读可执行
start:
invoke MessageBox, NULL, offset g_szHello, addr g_szTitle, MB_OK
ret
end start
OD:
查看-记录可以看记录