812C 04 2B add AL,00101011B ;получим Q4=A0+A1*N7
;Выдача Q4 на ЦАП для преобразования в Y4
812E E7 07 out 07H,AX
8130 5A pop DX
8131 5B pop BX
8132 58 pop AX
8133 C3 ret
8134 Input_X7 endp
;Подпрограммы обработки прерываний
;Реакция на IRQ0
8134 Avar proc far
8134 E4 02 in AL,02H ;включение аварийного сигнала
8136 0C 01 or AL,00000001B
8138 E6 02 out 02H,AL
;вывод текущего состояния на индикаторы
813A E8 00F0 call Output_Ind
813D FA cli ;запрет прерываний
813E F4 hlt
813F CF iret ;возврат
8140 Avar endp
;Реакция на IRQ1
8140 Power proc far
8140 50 push AX
8141 B8 0000 mov AX,0 ;настройка сегмента данных
8144 8E D8 mov DS,AX
8146 58 pop AX
;сохранение регистров в энергонезависимом ОЗУ
8147 A3 0480 mov DS:[0480H],AX
814A 89 1E 0482 mov DS:[0482H],BX
814E 89 0E 0484 mov DS:[0484H],CX
8152 89 16 0486 mov DS:[0486H],DX
8156 50 push AX
8157 8C C8 mov AX,CS
8159 A3 0488 mov DS:[0488H],AX
815C 8C D8 mov AX,DS
815E A3 048A mov DS:[048AH],AX
8161 8C D0 mov AX,SS
8163 A3 048C mov DS:[048CH],AX
8166 8C C0 mov AX,ES
8168 A3 048E mov DS:[048EH],AX
816B 8B C5 mov AX,BP
816D A3 0490 mov DS:[0490H],AX
8170 8B C4 mov AX,SP
8172 A3 0492 mov DS:[0492H],AX
8175 8B C7 mov AX,DI
8177 A3 0494 mov DS:[0494H],AX
817A 8B C6 mov AX,SI
817C A3 0496 mov DS:[0496H],AX
;обычный конец прерывания
;на контроллер прерываний - команда СКО2
817F B0 20 mov AL,00100000B
8181 E6 60 out 60H,AL ;отсылка команды СКО2
8183 58 pop AX
8184 CF iret ;конец подпрограммы обслуживания прерывания
8185 Power endp
;Модуль ввода с клавиатуры
;Реакция на IRQ2
8185 Input_Keyb proc far
8185 32 C9 xor CL,CL ;обнуление счетчика строк
8187 B4 FE mov AH,11111110B
8189 Next:
8189 8A C4 mov AL,AH ;сканирование строки
818B E6 30 out 30H,AL
;прием кода столбцов
818D E4 31 in AL,31H
818F F6 D0 not AL ;проверка текущей строки
8191 74 0F jz Find
8193 FE C1 inc CL ;увеличение счетчика строк
8195 D0 E4 shl AH,1 ;сдвиг кода в АН
8197 80 CC 01 or AH,00000001B ;поправка младшего разряда
819A 80 F9 04 cmp CL,4 ;проверка на полноту тестирования
819D 75 EA jne Next
819F E9 0080 jmp Exit1 ;на выход из программы:
;в АН-код для строк, в AL-столбцов,
;в CL-номер текущей строки
81A2 Find:
;сканирование прошло успешно
81A2 32 ED xor CH,CH ;обнуление счетчика столбцов
81A4 Next1:
81A4 D0 E8 shr AL,1 ;сдвиг регистра столбцов
81A6 72 04 jc Find1
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.