Assembler для начинающих


         

Обратите внимание, что первая команда,


    клавиатуры. Обратите внимание, что первая команда, которую должна
    выполнить эта программа, сохраняет содержимое регистра 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

Содержание  Назад  Вперед