Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OSP / ОСП_2011 / Лабработа7 / Прерывания.doc
Скачиваний:
27
Добавлен:
11.04.2015
Размер:
124.42 Кб
Скачать

Int 21h ;Вызов dos для исполнения

Прямой вывод (06h)

Функция может читать из стандартного входного устройства или выводить на стандартное устройство, при этом исключает стандартная реакция системы на ввод <CTRL>-C. В случае вывода кодASCIIпередаваемого символа засылается в регистрDL, при вводеDL=FFh.

Пример.

mov AH, 6h ;Выбор функции 6

mov DL,’*’ ;Отображаемый символ

Int 21h ;Вызов dos для исполнения

Вывод строки (09h)

Функция передает строку символов на стандартное устройство вывода. В регистр DXпомещается смещение строки. Строка должна оканчиваться символом доллара ($). Управляющие символы (табуляция, возврат каретки) распознаются системойDOS. Если в процессе вывода сообщения на экран с клавиатуры поступает код <CTRL>-C, срабатывает стандартная процедура обработки этого прерывания и вывод прекращается (как и программа в целом)

Пример.

mov AH, 9h ;Выбор функции 9

mov DX,offset string ;Адресстроки

Int 21h ;ВызовDos

.DATA

string DB ‘Строка1’,0dh,0Ah,’$’

    1. Функции ввода

Рассмотрим некоторые функции DOS, которые используются для ввода символьной информации с клавиатуры. Далее указывается номер функции и описание функции с примером использования.

Фильтрующий ввод с дублированием на экране (01h)

Функция ожидает, пока символ будет считан с устройства ввода, посылает символ на стандартный выход (дисплей) и сохраняет его в регистре AL. Если символ уже находится в буфере клавиатуры, то оно сразу пересылается в регистрAL. Пользователь может прекратить ввод нажатием комбинации клавишCTRL+Break.

Пример.

mov AH, 1h ;Выбор функции 1

Int 21h ;ВызовDos

mov char, AL ;Сохранение символа

Прямой ввод без ожидания (06h)

Функция не ожидает поступления очередного символа, а сама обращается в стандартному входному буферу за следующим символом. Комбинация клавиш CTRL+Breakнеактивна. Перед вызовом прерывания в регистрDLнеобходимо поместить значение 0FFh. Если обнаружен символ во входном буфере, то он перемещается в регистрALи флагZFсбрасывается. Если символ не обнаружен, тоZF=1.

Пример.

mov AH, 6h ;Выбор функции 6

mov DL, 0FFh

Int 21h ;ВызовDos

Прямой ввод с неактивной CTRL+Break (07h)

Функция ожидает нефильтрованный символ со стандартного входа без эхо-символа. Комбинация клавиш CTRL+Breakнеактивна. РегистрALсодержит вводимый символ.

Пример.

mov AH, 7h ;Выбор функции 7

Int 21h ;ВызовDos

Прямой ввод с активной CTRL+Break (08h)

Функция ожидает нефильтрованный символ со стандартного входа без эхо-символа. Комбинация клавиш CTRL+Breakактивна. РегистрALсодержит вводимый символ.

Буферизованный ввод (0Аh)

Функция 0Аhсчитывает строку символов размером до 255 символов со стандартного входа и сохраняет ее в буфере. Клавиша <BackSpace> может использоваться для стирания символов и возврата курсора. Пользователь может прервать ввод нажатием клавиши <Enter>. Все вводимые символы отображаются на экране. Не пропускаются нажатие клавиш, которые не создают символыASCII. Байт со смещением 0 содержит максимальное число символов, которое можно ввести, включая клавишу <Enter>. В байте со смещением 1 сохраняется количество введенных символов. Сами символы будут размещены в буфере со смещением 2.

Пример.

.DATA

keyboard LABEL BYTE

maxkeys DB 32

charsinput DB ?

buffer DB 32 dup (0)

.CODE

mov DX,offset keyboard

mov AH, 0Ah ;Выбор ввода с консоли

Соседние файлы в папке Лабработа7