Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
68
Добавлен:
15.06.2014
Размер:
163.33 Кб
Скачать

10

Лабораторная работа № 3 Ввод и вывод данных Цель работы

Целью работы является знакомство с возможностями ввода-вывода при обмене с системной консолью и их применение в программах, создаваемых на языке Ассемблера.

Введение

Любая программа должна принимать данные и выдавать данные. Стандартным устройством для обмена данными является системная консоль(system console), которая имеет имя устройства «con» вMS DOS. Системная консоль как устройство ввода представленаклавиатурой(keyboard), а как устройство вывода –экраноммонитора (screen) в текстовом режиме. Поскольку все программы выполняют обмен с консолью одинаково, то эти функции введены в сервисBIOSиDOS.

В BIOSприем данных с клавиатуры выполняется функциями прерыванияint 16h, а вывод символьной информации на экран – функциями прерыванияint 10h. ВMS DOSфункции символьного ввода-вывода входят в состав сервиса «двадцать первого прерывания»int 21h.

Системная консоль при выводе на экран выводит символы в текстовом режиме. Стандартно это 25 строк по 80 колонок. Системная консоль при вводе с клавиатуры принимает коды, соответствующие нажатым клавишам. В перечисленных выше функцияхDOSиBIOSиспользуется кодирование символов в соответствии с таблицейASCII(American Standard Code for Information Interchange).

Вызов функций DOSиBIOS выполняется по одинаковому соглашению: в регистрAHзаписывается номер функции. Если конкретная функция требует загрузки других регистров, то это также делается до вызова прерывания.

Символьный ввод-вывод dos

Функция 02h – выдать один символ

В DL загрузить код символа.

Функция 09h – выдать строку символов

В DS:DX загрузить адрес строки. Строка должна заканчиваться символом ‘$’ (24h).

Функция 06h – консольный ввод и вывод

В DL загрузить код символа (от 00h до 0FEh) – для вывода символа.

В DL загрузить код 0FFh для ввода символа с клавиатуры. Выполняется ввод символа «без ожидания» с установкой флага ZF, если символа нет, либо сбросом флага ZF, если символ есть. В последнем случае код символа находится в AL. Эта функция при вводе не фильтрует символы (см. далее описание функции 07h).

Функция 01h – ввод с клавиатуры

Выполняется ввод символа с «ожиданием» и «эхом», т.е. введенный символ отображается на экране. Код символа находится в AL.

Функция 08h – ввод с клавиатуры без эха

Выполняется ввод символа с «ожиданием» но без «эха», т.е. введенный символ не отображается на экране. Код символа находится в AL.

Функция 07h – нефильтрующий ввод с клавиатуры без эха

Выполняется ввод символа с «ожиданием» без «эха». Код символа находится в AL. Отличается от предыдущих функций ввода тем, что не фильтрует, т.е. не проверяет входные символы на Ctrl-Break, не выполняя соответствующей реакции (int 23h – прерывание DOS). Обычная системная обработка Ctrl-Break вызывает немедленное снятие программы. При вводе символа функцией 07h программа должна сама распознать и обработать Ctrl-Break.

Функция 0Ah – ввод строки в буфер

До вызова этой функции необходимо подготовить буфер ввода, в котором первый байт содержит число MAX (максимальная длина вводимой строки), второй байт предназначен для счетчика, а последующие байты – для вводимой строки (включая завершающий байт для символа CR – возврат каретки, который соответствует нажатию клавиши «Enter»).

Символы считываются со стандартного ввода вплоть до CR (ASCII 0Dh) или до достижения длины MAX-1. Если достигнут MAX-1, включается консольный звонок для каждого очередного символа, пока не будет введен возврат каретки CR. При вводе работают клавиши редактирования строки, а также «F5», «F3», «Esc». Символы в буфере используются как шаблон.

После окончания ввода строки функция возвращает в буфере количество символов (без CR) во втором байте и введенный текст, начиная с третьего байта (в т.ч. и символ CR).

Соседние файлы в папке Лаба Лаб_1-5 Методички