Вводятся, но не выводятся данные, 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

→ Ссылка