Как передать непечатаемый байт ASCII в дескриптор файла STDIN в ассемблере x86_64 (yasm)

Проблема

Предположим, у меня есть программа на x86_64 ассемблере yasm (см. ниже), которая в какой-то момент запрашивает ввод данных от пользователя через системную службу SYS_read. Этот вывод обрабатывается далее в программе как номер байта. Пользователь может легко указать все числа, соответствующие печатным символам ASCII, то есть от 0x20 до 0x7f (может быть, и больше). Но как обеспечить 0x90 например?

Возможное решение для нескольких персонажей

Я мог бы использовать следующую комбинацию, чтобы указать желаемое число:

<C-S-u> 0 0 9 0

Но это решение может быть утомительным, когда необходимо ввести много символов.

Фрагмент программы

Вот та часть программы, которая отвечает за чтение из STDIN.

readChar:
    mov     rax, SYS_read
    mov     rdi, STDIN
    lea     rsi, byte [rbp - 1] 
    mov     rdx, 1
    syscall

person LRDPRDX    schedule 20.03.2018    source источник
comment
Перенаправление ввода из файла, который вы создаете с помощью шестнадцатеричного редактора. Или с bash printf '\x90\x91' | ./my_program. Попробуйте что-нибудь с printf '\x90' | hexdump -C, чтобы проверить, какие байты вы печатаете.   -  person Peter Cordes    schedule 21.03.2018
comment
Это дает ошибку сегментации.   -  person LRDPRDX    schedule 21.03.2018
comment
Тогда в вашей программе есть ошибка, и вы должны отладить ее с помощью GDB и strace. См. нижнюю часть stackoverflow.com/tags/x86/info.   -  person Peter Cordes    schedule 21.03.2018
comment
Отправка двоичных данных через TTY сложна, поэтому передача ввода из чего-то другого является нормальным явлением. Но если вы действительно хотите использовать TTY, см. Записывайте не-ASCII-символы в стандартный ввод программы на tty (через ssh) для обходных путей, которые могут работать и для вас (например, добавляйте ^V перед каждым байтом вставляемого файла)   -  person Peter Cordes    schedule 21.03.2018
comment
@PeterCordes, кажется, ты прав насчет ошибки. Я попробовал это с минимальным примером, и это сработало.   -  person LRDPRDX    schedule 21.03.2018
comment
О, я должен включить символ новой строки \n в конце строки, иначе получится бесконечный цикл :)   -  person LRDPRDX    schedule 21.03.2018