You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求Windows平台最简MASM与NASM版MessageBox汇编程序

Windows平台下MASM与NASM的最简MessageBox汇编示例

MASM版本代码

.386
.model flat, stdcall
option casemap :none

include windows.inc
include user32.inc
includelib user32.lib

.code
start:
    invoke MessageBox, NULL, addr MsgText, addr MsgTitle, MB_OK
    invoke ExitProcess, NULL

.data
MsgTitle db "MASM Demo", 0
MsgText  db "Hello from MASM!", 0
end start

编译运行步骤

  1. 使用MASM编译器ml.exe编译生成目标文件:
    ml /c /coff masm_demo.asm
    
  2. 通过link.exe链接生成可执行文件:
    link /subsystem:windows masm_demo.obj user32.lib kernel32.lib
    

NASM版本代码

bits 32
extern _MessageBoxA@16
extern _ExitProcess@4

section .data
    msg_title db 'NASM Demo', 0
    msg_text  db 'Hello from NASM!', 0

section .text
global _main
_main:
    push 0                  ; MB_OK 参数
    push msg_title          ; 标题字符串地址
    push msg_text           ; 内容字符串地址
    push 0                  ; 父窗口句柄NULL
    call _MessageBoxA@16
    push 0                  ; 退出码0
    call _ExitProcess@4

编译运行步骤

  1. 使用NASM编译器nasm.exe编译生成目标文件:
    nasm -f win32 nasm_demo.asm -o nasm_demo.obj
    
  2. 通过link.exe链接生成可执行文件:
    link /subsystem:windows nasm_demo.obj user32.lib kernel32.lib
    

核心差异对比

  • 调用语法:MASM提供invoke伪指令,自动处理stdcall调用的参数栈平衡;NASM需手动按从右到左顺序push参数,函数名需添加_前缀和@参数字节数的修饰符(32位stdcall规则)。
  • 段定义:MASM用.model、.code、.data伪指令划分段;NASM用section关键字显式声明段。
  • 头文件与库:MASM通过include引入Windows头文件、includelib链接库;NASM直接用extern声明外部函数,链接时手动指定库文件。

内容的提问来源于stack exchange,提问作者Darox99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 10:25:55