我是新來的ASM,我試圖創建一個基本的Hello World程序,使用函數:ASM x86_64的Hello World程序
section .text
global main
print_msg:
push rbp
mov rbp, rsp
mov rax, 1
mov rdi, 1
mov rsi, Buffer ;to change
mov rdx, BufferSize ;to change
syscall
mov rsp, rbp
pop rbp
ret
main:
mov rdi, Buffer
mov rsi, BufferSize
call print_msg
mov rax, 60
mov rdi, 0
syscall
section .rodata
Buffer: db 'Hello, world !', 0x0A
BufferSize: equ $-Buffer
此代碼實際工作,但僅僅是因爲我直接複製緩衝區在RDX RSI及緩衝區大小,在我的「print_msg」的功能,但我想接收arguements於這兩個寄存器複製,我看到的東西,如:
mov rsi, [rsp + 8]
mov rdx, [rsp + 12]
但它不會在這裏工作。