section .data
msg db "Hello world!", 0ah
; len db 0
section .text
global _start
strlen:
xor rbx, rbx ; rbx=0; // reset counter
.loop: ; do{
cmp byte [rsi], 0 ; if (*s==0); // If zero, skip loop
je strlen.end ; break;
inc rbx ; rbx++; // increment counter
inc rsi ; s++; // advance to the next char
jmp strlen.loop ; }while(true);
.end:
; mov len, rbx
ret ; return rbx;
print:
mov rax, 1
mov rdi, 1
mov rsi, msg
call strlen
mov rsi, msg
mov rdx, rbx
syscall
mov rax, 60
mov rdi, 0
syscall
ret 0
_start:
call print