Вводятся, но не выводятся данные, assembler
format ELF64
public _start
section '.data' writable
userMsg db 'Please enter the number: '
lenUserMsg = $-userMsg
dispMsg db 'You have entered: '
lenDispMsg = $-dispMsg
section '.bss' writable
num db 5
section '.text' executable
_start:
; print 'Please enter the number: '
mov rcx, userMsg
mov rdx, lenUserMsg
call _print_string
; input number of user
mov rcx, num
mov rdx, 5
call _read_msg
; output 'You have entered: '
mov rcx, dispMsg
mov rdx, lenDispMsg
call _print_string
; output user's number
mov rcx, num
mov rdx, 5
call _print_string
call _close
_print_string:
push rax
push rbx
mov rax, 4 ; sys_write
mov rbx, 1 ; std_out
int 0x80
pop rbx
pop rax
_read_msg:
push rax
push rbx
mov rax, 3 ; sys_read
mov rbx, 2 ; std_in
int 0x80
pop rbx
pop rax
_close:
mov rax, 1
mov rbx, 0
int 0x80
Сообщение вводится, но не выводится. Компилирую с помощью fasm
Ответы (1 шт):
Автор решения: Volzock
→ Ссылка
Вся ошибка заключалась в том, что я не ставил ret после окончания функций, поэтому выполнение как-бы проваливалось вниз, и не давало продолжится коду из main, заранее спасибо всем тем, кто взглянул на мой код :3