ctool/lang/asem.s
2025-04-08 01:15:51 +02:00

50 lines
744 B
ArmAsm

%define DEF_BUFFER_LEN 4096
%define INPUT_LENGTH 64
; rax -- syscall
; type widths
section .data
message: db "Hello World!", 0xA, 0 ; hello
message_length: equ $-message
section .bss
arr: resb DEF_BUFFER_LEN
section .text
global _start
print_string:
push rbp
push rdx
mov rbp, rsp ; set up stack frame
mov rax, 1 ; sys_write
pop rdx
pop rbp
exit:
mov rax, 60
syscall
strlen:
push rcx
xor rcx, rcx
.loop:
cmp byte [rdi + rcx], 0
jz .done
inc rcx
jmp .loop
.done:
mov rax, rcx
pop rcx
ret
_start:
mov rdi, message ; prepare first arg -> string addr to rdi
call strlen
mov rdi, rax
call exit