Используя 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
Собрано
nasm -f win64 test.asm
gcc -s -o test.exe test.obj
WriteFile
, и увидеть ее дизассемблирование в 64-битной сборке? - person Alex F   schedule 23.07.2014