win32汇编MessageBox

32位处理器环境的段寄存器:内存描述符表的段选择子

 

简单的代码:

.386                    ;使用的指令集

.model flat, stdcall    ;内存模型和默认的函数调用约定,后续procproto如果没写约定,就用此处默认的

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    ;内存模型和默认的函数调用约定,后续procproto如果没写约定,就用此处默认的

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

查看-记录可以看记录

 

posted @ 2020-09-29 07:04  八转达人  阅读(669)  评论(0编辑  收藏  举报