_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
X3N0cmxlbjoKCQoJcHVzaCByZHgKCXhvciByZHgscmR4Cglfc3RybGVuX2xvb3Bfc3RhcnQ6CgoJCWNtcCAgW3JheCtyZHhdICxieXRlICAwCgkJamUgX3N0cmxlbl9sb29wX2VuZAoJCWluYyByZHgKCQlqbXAgX3N0cmxlbl9sb29wX3N0YXJ0CgoJX3N0cmxlbl9sb29wX2VuZDoKCQltb3YgcmF4LHJkeAoJCXBvcCByZHgKCQlyZXQKCgoKX3ByaW50OgoKCXB1c2ggcmF4CglwdXNoIHJieAoJcHVzaCByY3gKCXB1c2ggcmR4Cgltb3YgcmN4LCByYXgKCQoJY2FsbCBfc3RybGVuCgkKCW1vdiByZHgscmF4Cgltb3YgcmF4LDQKCW1vdiByYngsMQoJaW50IDgwaAoKCXBvcCByZHgKCXBvcCByY3gKCXBvcCByYngKCXBvcCByYXgKCXJldAoKc2VnbWVudCAudGV4dAoJZ2xvYmFsIF9zdGFydCAKc2VnbWVudCAuZGF0YQoJaGVsbDogZGIgICdoZWxsIScsIDB4QSAsMAoKX3N0YXJ0OgoJCgltb3YgcmF4LGhlbGwKCWNhbGwgX3ByaW50CgoJbW92IHJheCwxCgltb3YgcmJ4LDAgCglpbnQgMHg4MA==