81A8 FE C5 inc CH ;увеличение номера столбца
81AA EB F8 jmp Next1 ;переход к следующему сдвигу
81AC Find1:
;номер строки - в CL, номер столбца - в СН
81AC 22 C9 and CL,CL ;нулевая ли строка?
81AE 75 23 jnz Next2
;если нулевая:
81B0 80 FD 00 cmp CH,0
81B3 75 0C jne Next2_1
;реакция на клавишу "УСТАВКА"
81B5 26: A0 0400 mov AL,ES:[0400H] ;установка признака уставки
81B9 0C 80 or AL,10000000B
81BB 26: A2 0400 mov ES:[0400H],AL
81BF EB 61 jmp Exit1
81C1 Next2_1:
81C1 80 FD 01 cmp CH,1
81C4 75 05 jne Next3_1
;реакция на клавишу "ВЫВОД"
81C6 E8 0064 call Output_Ind ;вывод на индикаторы текущего состояния МПС
81C9 EB 57 jmp Exit1
81CB Next3_1:
81CB 80 FD 02 cmp CH,2
81CE 75 52 jne Exit1 ;нажата клавиша без реакции
;реакция на клавишу "ОСТАНОВ"
81D0 F4 hlt ;останов системы
81D1 EB 4F jmp Exit1
81D3 Next2:
;Строка не нулевая, то есть нажата цифровая клавиша
;Определяем - находится ли система в режиме уставки
81D3 26: 8A 1E 0401 mov BL,ES:[0401H]
81D8 F6 C3 80 test BL,10000000B ;проверка старшего разряда
81DB 74 45 jz Exit1 ;если не уставка, то реагируем на цифровую клавишу
81DD 80 E3 03 and BL,00000011B ;теперь в BL номер вводимой цифры
;Определение вводимой цифры
81E0 8A C1 mov AL,CL
81E2 FE C8 dec AL
81E4 B4 04 mov AH,4
81E6 F6 E4 mul AH
81E8 02 C5 add AL,CH ;в AL теперь будет код вводимой цифры
;(младшие 4 разряда)
81EA 32 FF xor BH,BH ;в ВХ - номер вводимой цифры
81EC 8A F3 mov DH,BL ;номер цифры - в DH
81EE D1 EB shr BX,1 ;определение номера байта, в который
;пойдет информация
81F0 72 04 jc Next3
;загрузка в старшие 4 разряда
81F2 B1 04 mov CL,4
81F4 D2 E8 shr AL,CL
81F6 Next3:
81F6 26: 8A 97 0300 mov DL,ES:[0300H+BX]
81FB 0A D0 or DL,AL ;заполнение промежуточной уставки
81FD 26: 88 97 0300 mov ES:[0300H+BX],DL
8202 80 FE 02 cmp DH,2 ;проверка на окончание ввода
8205 75 16 jnz Next4
;завершение ввода уставки
8207 26: C6 06 0401 00 mov byte ptr ES:[0401H],0
820D 26: A0 0300 mov AL,byte ptr ES:[0300H] ;установка новой уставки
8211 26: A2 0400 mov byte ptr ES:[0400H],AL
8215 26: C6 06 0300 00 mov byte ptr ES:[0300H],0
821B EB 05 jmp Exit1
821D Next4:
821D 26: FE 06 0191 inc byte ptr ES:[0401] ;увеличение счетчика цифр
8222 Exit1: ;Завершение прерывающей программы
8222 E4 02 in AL,02H ;сброс триггера запроса прерывания от клавиатуры
8224 0C 20 or AL,00100000B ;прерывания в клавиатуре
8226 E6 02 out 02H,AL
;Обычное завершение прерывания
;Команда СКО2
8228 B0 20 mov AL,00100000B
822A E6 60 out 60H,AL
822C CF iret ;возврат из прерывающей программы
822D Input_Keyb endp
822D Output_Ind proc near
;Данную процедуру по заданию реализовывать не нужно
822D Output_Ind endp
end Start
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.