使用 NASM 和 Mingw-w64 我一直在尝试运行以下程序,该程序应该使用 Windows API 将消息打印到屏幕上。它运行,但控制台上没有显示任何内容,并导致对内存位置的无效访问(错误代码 0x3e6h)。为什么会这样,我怎样才能让程序正常运行?
global main
extern ExitProcess
extern GetStdHandle
extern WriteFile
section .text
main:
mov rcx, 0fffffff5h
call GetStdHandle
mov rcx, rax
mov rdx, NtlpBuffer
mov r8, NtnNBytesToWrite
mov r9, NtlpNBytesWritten
mov dword [rsp - 04h], 00h
call WriteFile
ExitProgram:
mov rcx, 00h
call ExitProcess
section .data
NtlpBuffer: db 'Hello, World!', 00h
NtnNBytesToWrite: dd 0eh
section .bss
NtlpNBytesWritten: resd 01h
Run Code Online (Sandbox Code Playgroud)
编译者
nasm -f win64 test.asm
gcc -s -o test.exe test.obj
Run Code Online (Sandbox Code Playgroud)