gpt4 book ai didi

windows - NASM 教程使用 int 80h,但这不适用于 Windows

转载 作者:可可西里 更新时间:2023-11-01 09:42:03 24 4
gpt4 key购买 nike

我在完成 FASM 后开始使用 NASM Assembler。我在 Windows 操作系统中对此进行编码。我的代码如下:

section.data ;Constant
msg: db "Hello World!"
msg_L: equ $-msg ; Current - msg1

section.bss ;Varialble

section.text ; Code
global _WinMain@16

_WinMain@16:
mov eax,4
mov ebx,1; Where to wrte it out. Terminal
mov ecx, msg
mov edx, msg_L
int 80h

mov eax, 1 ; EXIT COMMAND
mov ebx,0 ; No Eror
int 80h

为了编译和执行我使用:

nasm -f win32 test.asm -o test.o
ld test.o -o test.exe

我目前正在观看有关 NASM 教程的视频。我把启动改为WIN32,但是当我执行它时,它就卡住了,无法运行...这有什么问题吗?

最佳答案

您正在尝试在 Windows 操作系统上进行 Linux 系统调用 (int 80h)。

这是行不通的。您需要调用 Windows API 函数。例如,MessageBox将在屏幕上显示一个消息框。

section .rdata   ; read-only Constant data
msg: db "Hello World!"
msg_L: equ $-msg ; Current - msg1

section .text ; Code
global _WinMain@16
extern _MessageBoxA@16

_WinMain@16:
; Display a message box
push 40h ; information icon
push 0
push msg
push 0
call _MessageBoxA@16

; End the program
xor eax, eax
ret

确保您正在阅读的书籍/教程是关于使用 NASM 进行Windows编程的,而不是 Linux 编程!

关于windows - NASM 教程使用 int 80h,但这不适用于 Windows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38269269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com