Инициализация сегмента данных, контроллера клавиатуры и дисплея. Ожидание первого символа, страница 2

M5:

ADD AL, 12h

JMP M12

M6:

ADD AL, 1Bh

JMP M12

M7:

ADD AL, 24h

JMP M12

M8:

ADD AL, 2Dh

JMP M12

M9:

ADD AL, 36h

JMP M12

M10:

ADD AL, 3Fh

JMP M12

M11:

ADD AL, 48h

M12:

ADD DX, AX

XOR AX, AX

Klav3:                             ;  93Ch                    ; работа с третьим символом

IN AL, 03h                         ; считывание слова состояния ККД

AND AL,07h                     ; определение кол-ва символов в ОЗУ клав-ры

CMP AL, 3h                       ;ожидание ТРЕТЬЕГО символа

JNE Klav3                         ; переход на Klav3, если в буфере трёх символов

MOV AL, 43h                  

OUT 03h, AL                 

IN AL, 02h                         ; чтение символа из ОЗУ клавиатуры             

MOV BL, AL                     ; ПРЕОБРАЗОВАНИЕ РЕЗУЛЬТАТА В 16-РИЧНУЮ ФОРМУ

MOV BH, 00h

AND AL, 07h                    ; в AL – номер строки

AND BL, 38h                    ;3 в BL – номер столбца

MUL [DI+10H]                 ;3 номер строки умножается на 4

ADD BX, AX                    ; к результату добавляется номер столбца

ADD BX, 80Bh                 ;4 и адрес начала таблицы

MOV AL, [BX]                 ; по полученному адресу считывается число,

;96Ah    соответствующее нажатой клавише

MOV AH,AL     

SUB BX, 0Bh                    ;3 ПРЕОБРАЗОВАНИЕ СИМВОЛА В КОД

MOV AL, 93h                   ; команда для вывода символа на индикатор

OUT 03h, AL

MOV AL, AH

XOR AH, AH          

ADD BX, AX

MOV AH, AL      

MOV AL, [BX]                 ; считывание кода из таблицы

OUT 02h, AL                   ; вывод символа на индикатор            

MOV AL, AH

XOR AH, AH     

ADD DX,AX

MOV [DI+4], DX              ;3заносим в ОЗУ напряжение

XOR AX,AX

XOR DX,DX

Klav4:                                ;998h     ;работа с четвёртым числом      

IN AL, 03h                         ; считывание слова состояния ККД

AND AL,07h                     ; определение кол-ва символов в ОЗУ клав-ры

CMP AL, 4h                       ;ожидание ЧЕТВЁРТОГО символа

JNE Klav4                         ; переход на Klav4, если в буфере нет  четырёх символов

MOV AL, 44h                   ; чтение символа из ОЗУ клавиатуры

OUT 03h, AL                    

IN AL, 02h       

MOV BL, AL                     ; ПРЕОБРАЗОВАНИЕ РЕЗУЛЬТАТА В 16-РИЧНУЮ ФОРМУ

MOV BH, 00h

AND AL, 07h                    ; в AL – номер строки

AND BL, 38h                    ;3 в BL – номер столбца

MUL [DI+10h]                 ;3 номер строки умножается на 4

ADD BX, AX                    ; к результату добавляется номер столбца

ADD BX, 80Bh                 ;4 и адрес начала таблицы

MOV AL, [BX]                 ; по полученному адресу считывается число,

; соответствующее нажатой клавише

CMP AL, 1h

JA Res                                  ; если больше то на Res

MOV AH, AL    

SUB BX, 0Bh                    ;3 ПР-НИЕ СИМВОЛА В КОД

MOV AL, 94h                    ; команда для вывода символа на индикатор

OUT 03h, AL

MOV AL, AH

XOR AH, AH     

ADD BX, AX            

MOV AL, [BX]                   ; считывание кода из таблицы

OUT 02h, AL                      ; вывод символа на индикатор             

MOV AL, AH                   

CMP AL,0h

JE M13

ADD AL,63h

JMP M14

M13:

ADD AL,0h

M14:

MOV DX,AL

XOR AX,AX

Klav5:                              ;A05h     ; работа с пятым символом