【发布时间】:2021-03-31 10:51:29
【问题描述】:
这是我的代码,它接受两个变量并将它们相加并减去它们。然后,它打印输出。为了简单起见,我删除了一些函数:
_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
当我运行该函数时,它没有返回_printsum 和_printdiff 的值,而是显示一些未知字符作为输出。请告诉我我错在哪里。
【问题讨论】:
标签: assembly x86-64 cpu-registers