Обратите внимание, что первая команда,
клавиатуры. Обратите внимание, что первая команда, которую должна
выполнить эта программа, сохраняет содержимое регистра AX в стеке.
Это делается потому, что программа изменяет содержимое регистра AX.
Если обработчик прерываний не восстановит первоначальное значение
этого регистра перед возвратом в прерванную программу, возникнет
ошибка выполнения. Это ведь очень трудно - писать верно работающие
программы, если во время их выполнения содержимое регистров будет
произвольно изменяться другими программами. Если обработчику
прерывания потребуется больше регистров, то он должен все их
сохранить, а затем восстановить.
Microsoft (R) Macro Assembler Version 5.00 1/1/80 04:05:14
Фиг. 8.4 Управление клавиатурой Page 1-1
PAGE ,132
TITLE Фиг. 8.4 Управление клавиатурой
0000 CODE SEGMENT
ASSUME CS:CODE
0000 KEYBOARD_INTERRUPT PROC FAR
0000 50 PUSH AX ; Сохранение регистра AX
0001 E4 60 IN AL, 60H ; Выборка номера клавиши
0003 50 PUSH AX ; Сохранение номера клавиши
0004 E4 61 IN AL, 61H
0006 8A E0 MOV AH, AL ; Сохранение текущего значения регистра AL
0008 0C 80 OR AL, 80H
000A E6 61 OUT 61H, AL ; Сигнал об успешном получении символа
000C 8A C4 MOV AL, AH
000E E6 61 OUT 61H, AL ; Возврат Клавиатуры в нормальный режим
0010 58 POP AX
Содержание Назад Вперед