ama*_*el2 2 windows x86 assembly winapi nasm
我在完成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
Run Code Online (Sandbox Code Playgroud)
要编译它并执行我使用:
nasm -f win32 test.asm -o test.o
ld test.o -o test.exe
Run Code Online (Sandbox Code Playgroud)
我目前正在关注NASM教程的视频.我把开始改为WIN32,但是当我执行它时,它就会卡住并且不会运行......这有什么问题吗?
您正尝试int 80h在Windows操作系统上进行Linux系统调用().
这不行.您需要调用Windows API函数.例如,MessageBox将在屏幕上显示一个消息框.
section.data ;Constant
msg: db "Hello World!"
msg_L: equ $-msg ; Current - msg1
section.bss ;Varialble
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
Run Code Online (Sandbox Code Playgroud)
确保您正在阅读的书籍/教程是关于使用NASM进行Windows编程,而不是Linux编程!
| 归档时间: |
|
| 查看次数: |
1635 次 |
| 最近记录: |