Помощь - Поиск - Пользователи - Календарь
Полная версия: Ввод последовательности символов
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ассемблер
18192123
Мною ранее была затронута тема "Сортировка в соответствии с ASCII кодом". Хотелось бы улучшить программку, добавив возможность ввода произвольной последовательности символов. Покажите пожалуста, как это реализовывается средствами языка Assembler.
andriano
В языке Ассемблера нет средств для ввода символов. Надо пользоваться средствами BIOS.
18192123
Цитата(andriano @ 25.03.2008 20:12) *

В языке Ассемблера нет средств для ввода символов. Надо пользоваться средствами BIOS.


Но можно же использовать функции MS-DOS в Ассемблере...Я это подразумевала...
spill
Функция 01h 21h прерывания

mov AH, 01h
int 21h


Читать (ожидать) символ со стандартного входного устройства. Результат помещает в AL
Также можно по-другому:
Функция 00h 16h прерывания (Выход - AL - ASCII код, AH - Сканкод или расширенный код ASCII)
Еще можно вводить строку таким образом. Через прерывание 21h, Функция 0Ah:
Вход:
AH = 0Ah
DS:DX -> Адрес входного буфера (см. ниже)
Выход:
Нет. Буфер содержит ввод, заканчивающийся символом CR (ASCII 0Dh)

При входе буфер по адресу DS:DX должен быть оформлен так:
MAX ? ? ? ? ? ? ...
MAX - Максимально допустимая длина ввода (от 1 до 254)
При выходе буфер заполнен данными следующим образом:
max len T E X T 0Dh
LEN - Действительная длина строки (без завершающего CR)
Символы считываются до тех пор, пока не будет введен возврат каретки CR (нажатие ENTER). Если достигут предел ввода MAX, то включается консольный звонок для каждого очередного символа.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.