I decided to make a function that prints a string in the EAX register to the console, works from a part by displaying a message first, then something
Code (NASM) :
newLine equ 0xa
section .data
msg db "Hello world!", newLine, 0
section .text
global _start
_start:
mov eax, msg
call printf
call exit
printf:
push eax
push ebx
push ecx
push edx
mov ecx, eax
call lenFind
mov edx, eax
mov eax, 4
mov ebx, 1
int 0x80
pop edx
pop ecx
pop ebx
pop eax
ret
lenFind:
push edx
mov edx, 0
.find:
cmp [eax+edx], byte 0
je .close
inc edx
jmp .find
.close:
pop edx
ret
exit:
mov eax, 1
mov ebx, 0
int 80h
Output:
Hello world!
.shstrtab.text.data
�J�
idk what it could be, but most likely the problem is that I'm using 32 bit registers