Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОТВЕТЫ ЗЫКОВ.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
678.4 Кб
Скачать

0, То получен расширенный код. Повторите прерывание и в al поя-

вится второй байт расширенного кода.

;---получаем введенный символ

MOV AH,7 ;номер функции

Int 21h ;ожидаем ввод символа

CMP AL,0 ;проверка на расширенный код

JE EXTENDED_CODE ;если да, то на особую процедуру

. ;иначе, код символа в AL

;---процедура обработки расширенных кодов

EXTENDED_CODE: INT 21H ;берем второй байт кода

CMP AL,75 ;проверяем на "стрелку-влево"

JNE C_R ;если нет, то след. проверка

JMP CURSOR_LEFT;если да, то на процедуру

C_R: CMP AL,77 ;сравниваем дальше и т.д.

BIOS обеспечивает процедуру, которая предоставляет те же воз-

можности, что и функции MS DOS. Поместите 0 в AH и вызовите пре-

рывание 16H. Функция ожидает ввода символа и возвращает его в AL.

В этом случае и расширенные коды обрабатываются за одно прерыва-

ние. Если в AL содержится 0, то в AH будет содержаться номер

расширенного кода. При это не обрабатывается Ctrl-Break.

;---ждем нажатия клавиши

MOV AH,0 ;номер функции ожидания ввода

Int 16h ;получаем введенный код

CMP AL,0 ;проверка на расширенный код

JE EXTENDED_CODE ;если да, то на спец. процедуру

. ;иначе символ в AL

;---процедура обработки расширенного кода

EXTENDED_CODE: CMP AH,75 ;берем расширенный код из AH

;и т.д.

6.Прием символов с клавиатуры. Проверка/установка статуса клавиш-переключателей.

3.1.5 Прием символа без ожидания.

Некоторые программы, работающие в реальном времени не могут

останавливаться и ждать нажатия клавиши; они принимают символ из

буфера клавиатуры только в те моменты, когда это удобно для прог-

раммы. Например, бездействие процессора во время ожидания ввода с

клавиатуры остановило бы все действия на экране в игровой прог-

рамме. Напомним, что легко проверить пуст или нет буфер клавиату-

ры, используя методы, описанные в [3.1.2].

Высокий уровень.

Надо просто использовать INKEY$, не помещая его в цикл:

100 C$=INKEY$ 'получение символа

110 IF C$ <> "" THEN...'если символ введен, то ...

120 ... 'Иначе нет символа в буфере

Средний уровень.

Функция 6 прерывания 21H - это единственный способ получить

введенный символ без ожидания. Эта функция не дает эха на экран и

не распознает Ctrl-Break. Перед вызовом прерывания в DL должно

быть помещено 0FFH. В противном случае функция 6 служит совершен-

но противоположной цели - печатает в текущей позиции курсора

символ, находящийся в DL. Флаг нуля устанавливается в 1, если

буфер клавиатуры пуст. Если символ принят, то он помещается в AL.

Код ASCII 0 индицирует расширенный код и для получения номера

кода прерывание должно быть повторено.

MOV AH,6 ;номер функции DOS

MOV DL,0FFH ;запрос ввода с клавиатуры