- •Прерывания
- •Команды прерывания
- •Функции вывода
- •Int 21h ;Вызов dos для исполнения
- •Int 21h ;Вызов dos для исполнения
- •Int 21h ;ВызовDos
- •Функции ввода
- •Int 21h ;ВызовDos
- •Int 21h ;ВызовDos
- •Int 21h ;ВызовDos
- •Int 21h ;ВызовDos
- •Int 21h ;ВызовDos
- •Int 21h ;ВызовDos
- •Int 21h ;Вызов dos для исполнения
- •Int 21h ;Вызов dos для исполнения
- •Int 21h ;Вызов dos для исполнения
- •Int 21h ;Вызов dos для исполнения
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,’$’
Функции ввода
Рассмотрим некоторые функции 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 ;Выбор ввода с консоли
