📄 asm32.asm
字号:
;****************************************
;文件:ASM32.ASM *
;功能:显示一个对话框 *
;****************************************
IDC_EDITTEXT = 100 ;EDIT控制的ID
.386p
.model flat,stdcall ;平坦内存模式,标准调用约定
include win32.inc ;包含有WIN32部分常量定义的文件
extrn MessageBoxA:proc
extrn ExitProcess:proc
extrn GetModuleHandleA:proc
extrn DialogBoxParamA:proc
extrn EndDialog:Proc
extrn SetDlgItemTextA:proc
.data
DialogName db 'MyDialog',0
CaptionFail db '失败!',0
TextFail db 'API:DialogBoxParamA调用失败!',0
TEXT db '热烈欢迎',0
.code
;主过程
Start:
call GetModuleHandleA,0 ;取得模块句柄,返回结果在eax中
;调用DialogBoxParamA显示对话框
call DialogBoxParamA,eax,offset DialogName,0,offset DialogProc,0
cmp eax,0 ;成功否?
jnz Exit ;成功则退出
;显示出错信息
call MessageBoxA,0,offset TextFail,offset CaptionFail,MB_OK
Exit:
call ExitProcess,0 ;退出进程
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++
;对话框消息处理过程
DialogProc proc uses ebx edi esi, hWnd:DWORD, wMsg:DWORD, wParam:DWORD, lParam:DWORD
cmp wMsg,WM_INITDIALOG
jz WmInitDialog
cmp wMsg,WM_CLOSE
jz WmClose
cmp wMsg,WM_COMMAND
jz WmCommand
jmp ExitProc
WmInitDialog: ;对话框初始化处理
call SetDlgItemTextA,hWnd,IDC_EDITTEXT,offset TEXT
jmp ExitProc
WmClose: ;用户按下了Alt-F4或单击右上角X按扭
call EndDialog,hWnd,1 ;关闭对话框
jmp ExitProc
WmCommand:
mov ebx,wParam
cmp bx,IDOK ;是按下了“退出”键?
jnz ExitProc
call EndDialog,hWnd,1 ;关闭对话框
jmp ExitProc
ExitProc: ;退出消息处理
xor eax,eax
ret
DialogProc endp
end Start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -