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

AMD Ryzen 5 5600H+Win11环境下汇编入门求助:验证代码可行性

Windows 11 下 x86/x64 汇编入门问题解答

你的代码无法运行的原因

  • 你使用的int 10h是DOS实模式下的BIOS视频中断,Windows 11是64位保护模式操作系统,完全不支持这类实模式中断调用,代码从根本上不适配当前系统。
  • 此外,Windows平台的汇编程序需要遵循PE(可移植可执行文件)格式规范,你的代码没有处理程序入口的系统调用逻辑,也未链接必要的系统库,无法被系统正确加载执行。

适配Windows 11的64位汇编入门示例(控制台输出)

以下是基于NASM编写的64位汇编代码,通过调用Windows API实现控制台文本输出,可直接在Windows 11下编译运行:

section .data
    msg db 'Hello, Windows 11!', 0xA, 0  ; 输出字符串,包含换行符与终止符
    msg_len equ $ - msg - 1              ; 计算字符串长度(不含终止符)

section .text
    global main
    ; 声明需要调用的Windows API函数
    extern WriteConsoleA, GetStdHandle, ExitProcess

main:
    ; 1. 获取标准输出句柄
    mov rcx, -11                         ; STD_OUTPUT_HANDLE的常量值
    call GetStdHandle
    mov rbx, rax                         ; 保存句柄到rbx寄存器

    ; 2. 调用WriteConsoleA输出字符串
    mov rcx, rbx                         ; 参数1:标准输出句柄
    mov rdx, msg                         ; 参数2:字符串指针
    mov r8, msg_len                      ; 参数3:要输出的字符数
    mov r9, 0                            ; 参数4:接收实际输出字符数的指针(忽略)
    push 0                               ; 参数5:保留参数,设为0
    call WriteConsoleA

    ; 3. 退出程序
    mov rcx, 0                           ; 退出码为0
    call ExitProcess

编译链接步骤

假设你已安装NASM汇编器和MSVC链接器:

  1. 编译成目标文件:nasm -f win64 hello.asm -o hello.obj
  2. 链接生成可执行文件:link hello.obj kernel32.lib /subsystem:console /entry:main

运行生成的hello.exe,如果控制台成功输出Hello, Windows 11!,说明你的汇编与链接流程完全正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 00:17:05