Автор: lonesome TSH/Digital Daemons
Дата: .02.2003
Раздел: Низкоуровневое программирование в Linux
Системный вызов Linux "read" (#3) предназначен для чтения из файла с текущей позиции. Также он может быть использован для чтения данных введенных с клавиатуры (используется файловый дескриптор 02 - stdin).
Ниже приведена программа, которая выведет введенные с клавиатуры символы на экран.
global _start _start: mov eax, 3 ;Вызов #3 mov ebx, 2 ;Дескриптор stdin mov ecx, buffer ;Адрес буфера для хранения введенных данных mov edx, 10 ;Максимальная длина ввода int 0x80 ;Прерывание - системный вызов mov eax, 4 ;Вызов #4 (write) mov ebx, 1 ;Дескриптор stdout ;Системный вызов не изменил содержимое регистров ECX и EDX ; поэтому следующие две строчки не нужны ;mov ecx, buffer;Адрес строки для вывода ;mov edx, 10 ;Длина выводимых данных int 0x80 ;Системный вызов xor eax, eax ;Обнуление регистра EAX inc eax ;Инкремент - увеличение на единицу int 0x80 ;Системный вызов section .data ;Начало сегмента данных buffer: resb 10Директива ассемблера resb 10 предназначена для резервирования указанного количества байт. Содержимое этих байт не определено, но поскольку они находятся в сегменте данных, то их содержимое будет равно нулю.