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
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.