Here is my code which takes in two variables and sums them and subtracts them. Then, it prints the output. I have removed some of the functions to keep it simple:
_start:
    call _printfirstmsg
    call _getvar1
    call _printsecondmsg
    call _getvar2
    call _addvar1var2
    call _printsum
    call _subvar1var2
    call _printdiff
    call _dispvar1
    call _dispvar2
    
    mov rax, 60
    mov rdi, 0
    syscall
    
_printsum:
    mov rax, 1
    mov rdi, 1
    mov rsi,addi
    mov rdx, 4
    syscall
    
    ret
    
    
 _printdiff:
    mov rax, 1
    mov rdi, 1
    mov rsi,subt
    mov rdx, 4
    
    
    syscall
    ret
    
_addvar1var2:
   mov rax, [var1]
   add rax, [var2]
   mov [addi], rax
   syscall
   ret
 
_subvar1var2:
  mov rbx, [var1]
  sub rbx, [var2]
  mov [subt], rbx
  syscall
  ret
  
When I run the function, instead of returning the values of _printsum and _printdiff, it shows some unknown characters as outputs. Please tell me where I am mistaken.
 
     
    