windows 10 masm 中未显示消息框
messagebox not showing up in windows 10 masm
我正在尝试使用 masm32 进入 asm,但教程中的简单示例代码不起作用
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib
.data
BUFFER_LENGTH EQU 1024
szMessageBoxFormat BYTE "The resul is %d", 0
szMessageBoxText BYTE 0 dup(BUFFER_LENGTH)
.code
start:
main proc
push 3
call display_number_in_message_box
ret
main endp
display_number_in_message_box proc
;Create a string representation of the number
mov eax, [esp + 4]
invoke wsprintf, ADDR szMessageBoxText, szMessageBoxFormat, eax
;Display that string in a message box
invoke MessageBoxA, NULL, ADDR szMessageBoxText, NULL, MB_OK
ret 4
display_number_in_message_box endp
end start
我正在使用 C:\masm32\bin\ml.exe /c /coff /Cp ex0.asm
和 C:\masm32\bin\link.exe /SUBSYSTEM:WINDOWS /LIBPATH:C:\masm32\lib ex0.obj
创建一个 exe,但是当 运行 没有任何反应,有什么想法吗?
您在调用 wsprintf
时忘记了 szMessageBoxFormat
之前的 ADDR
,因此您最终传递了一个无效地址(可能是 20656854h
,即 "The "
解释为 DWORD
).
我正在尝试使用 masm32 进入 asm,但教程中的简单示例代码不起作用
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib
.data
BUFFER_LENGTH EQU 1024
szMessageBoxFormat BYTE "The resul is %d", 0
szMessageBoxText BYTE 0 dup(BUFFER_LENGTH)
.code
start:
main proc
push 3
call display_number_in_message_box
ret
main endp
display_number_in_message_box proc
;Create a string representation of the number
mov eax, [esp + 4]
invoke wsprintf, ADDR szMessageBoxText, szMessageBoxFormat, eax
;Display that string in a message box
invoke MessageBoxA, NULL, ADDR szMessageBoxText, NULL, MB_OK
ret 4
display_number_in_message_box endp
end start
我正在使用 C:\masm32\bin\ml.exe /c /coff /Cp ex0.asm
和 C:\masm32\bin\link.exe /SUBSYSTEM:WINDOWS /LIBPATH:C:\masm32\lib ex0.obj
创建一个 exe,但是当 运行 没有任何反应,有什么想法吗?
您在调用 wsprintf
时忘记了 szMessageBoxFormat
之前的 ADDR
,因此您最终传递了一个无效地址(可能是 20656854h
,即 "The "
解释为 DWORD
).