【问题标题】:messagebox not showing up in windows 10 masm消息框未显示在 Windows 10 masm 中
【发布时间】:2019-11-26 10:45:21
【问题描述】:

我正在尝试使用 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.asmC:\masm32\bin\link.exe /SUBSYSTEM:WINDOWS /LIBPATH:C:\masm32\lib ex0.obj 创建一个exe,但是运行它时没有任何反应,有什么想法吗?

【问题讨论】:

    标签: assembly masm messagebox masm32


    【解决方案1】:

    当您调用wsprintf 时,您忘记了szMessageBoxFormat 之前的ADDR,因此您最终传递了一个无效地址(可能是20656854h,即"The " 被解释为DWORD)。

    【讨论】:

      猜你喜欢
      • 2021-05-29
      • 2018-01-25
      • 1970-01-01
      • 2021-12-10
      • 2019-09-22
      • 1970-01-01
      • 1970-01-01
      • 2019-08-10
      • 1970-01-01
      相关资源
      最近更新 更多