Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ассемблер _ Ввод последовательности символов

Автор: 18192123 25.03.2008 20:06

Мною ранее была затронута тема "Сортировка в соответствии с ASCII кодом". Хотелось бы улучшить программку, добавив возможность ввода произвольной последовательности символов. Покажите пожалуста, как это реализовывается средствами языка Assembler.

Автор: andriano 26.03.2008 0:12

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

Автор: 18192123 26.03.2008 0:56

Цитата(andriano @ 25.03.2008 20:12) *

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


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

Автор: spill 26.03.2008 15:10

Функция 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, то включается консольный звонок для каждого очередного символа.