Find length of string and concatenate two string
section .data
str1 db "Hello, ",0
str2 db "World!", 0
section .bss
result resb 50
section .text
global _start
_start:
lea rdi, [str1]
call string_length
mov rsi, rax
call print_length
lea rdi, [str1]
lea rsi, [str2]
lea rdx, [result]
call string_concat
lea rsi, [result]
call print_string
mov rax, 60
xor rdi, rdi
syscall
string_length:
xor rax, rax
.loop:
mov al, [rdi + rax]
cmp al, 0
je .done
inc rax
jmp .loop
.done:
ret
print_length:
mov rdi, 1
mov rdx, 1
mov rax, 0x1
syscall
ret
string_concat:
mov rcx, 0
.copy_str1:
mov al, [rdi + rcx]
mov [rdx + rcx], al
inc rcx
test al, al
jnz .copy_str1
dec rcx
.copy_str2:
mov al, [rsi]
mov [rdx + rcx],al
inc rsi
inc rcx
test al, al
jnz .copy_str2
ret
print_string:
mov rdi, 1
mov rdx, 50
mov rax, 0x1
syscall
ret