_strlen:
	
	push rdx
	xor rdx,rdx
	_strlen_loop_start:

		cmp  [rax+rdx] ,byte  0
		je _strlen_loop_end
		inc rdx
		jmp _strlen_loop_start

	_strlen_loop_end:
		mov rax,rdx
		pop rdx
		ret



_print:

	push rax
	push rbx
	push rcx
	push rdx
	mov rcx, rax
	
	call _strlen
	
	mov rdx,rax
	mov rax,4
	mov rbx,1
	int 80h

	pop rdx
	pop rcx
	pop rbx
	pop rax
	ret

segment .text
	global _start 
segment .data
	hell: db  'hell!', 0xA ,0

_start:
	
	mov rax,hell
	call _print

	mov rax,1
	mov rbx,0 
	int 0x80