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

Страницы работы

Содержание работы

800h:    

3Fh      ; 0                           Таблица преобразования 16-тиричного числа

06h      ; 1                           в код для вывода на 7-сегментный индикатор  

5Bh     ; 2

4Fh      ; 3

66h      ; 4

6Dh     ; 5

7Dh     ; 6

07h      ; 7

7Fh      ; 8

6Fh      ; 9 

80Bh:   

00h                                      ; таблица для определения 16-ричного числа, соответствующего

01h                                      ; нажатой клавише

02h                      

03h                      

04h                      

05h                      

06h                      

07h                      

08h       

09h                      

815h:                                                  ;  начало основной программы

MOV DI, 900h                  ;3

MOV AX, 0000h              ;3 инициализация сегмента данных

MOV DS, AX                   

MOV DX, 0000h              ;3

MOV BX, 0000h                             ;3

MOV CX, 0000h                             ;3

MOV AL, 00h                    ; инициализация контроллера клавиатуры и

OUT 03h, AL                     ; дисплея

MOV AL, 39h                    ; инициализация опорной частоты ККД

OUT 03h, AL                     ;

Res:                                     ;82Eh

MOV AL, С1h                   ; сброс ККД

OUT 03h, AL                     ;

Klav1:                                 ;832h

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

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

CMP AL, 1h                       ; ожидание первого символа

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

MOV AL, 41h                   ;

OUT 03h , AL                  ;

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

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

MOV BH, 00h

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

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

MOV [DI +10h], 04h       ;4          

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, 91h                   ; команда для вывода символа на индикатор

OUT 03h, AL                   

ADD BL, AH                    

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

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

MOV AL, AH                   

CMP AL, 0h                      

JE M1                                

ADD AL, 63h                   

JMP M2                                           

M1:                                      ;88Dh

ADD AL, 0h                     

M2:

XOR DX, DX                    

MOV DX, AL                   

XOR AX, AX                    

Klav2:                                 ;895h     ; работа со вторым символом

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

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

CMP AL, 2h                       ; ожидание второго символа

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

MOV AL, 42h                  

OUT 03h, AL                  

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

;8A3h

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]                 ; по полученному адресу считывается число,

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

MOV AH, AL                     ;

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

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

OUT 03h, AL                     ;

MOV AL, AH                     ;

XOR AH, AH                     ;

ADD BX, AX                     ;

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

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

;8CAh

CMP AL, 0h

JE M3

CMP AL, 1h

JE M4

CMP AL, 2h

JE M5

CMP AL, 3h

JE M6

CMP AL, 4h

JE M7

CMP AL, 5h

JE M8

CMP AL, 6h

JE M9

CMP AL, 7h

JE M10

CMP AL, 8h

JE M11

ADD AL, 51h                  

JMP M12

M3:                                     ;90Ah

ADD AL, 0h

JMP M12

M4:

ADD AL,9h

JMP M12

Похожие материалы

Информация о работе

Тип:
Задания на курсовые работы
Размер файла:
91 Kb
Скачали:
0