K_7: cmp BL, 00111000b; 7
jne K_8;
mov BL, 07h; код кнопки - ее значени
jmp Input; уходим на ввод в нужную позицию
K_8: cmp BL, 00000001b; 8
jne K_9;
mov BL, 08h; код кнопки - ее значени
jmp Input; уходим на ввод в нужную позицию
K_9: cmp BL, 00001001b; 9
jne K_A;
mov BL, 09h; код кнопки - ее значени
jmp Input; уходим на ввод в нужную позицию
K_A: cmp BL, 00010001b; A
jne K_B;
mov BL, 0Ah; код кнопки - ее значени
jmp Input; уходим на ввод в нужную позицию
K_B: cmp BL, 00011001b; B
jne K_C;
mov BL, 0Bh; код кнопки - ее значени
jmp Input; уходим на ввод в нужную позицию
K_C: cmp BL, 00100001b;
jne K_D;
mov BL, 0Ch; код кнопки - ее значени
jmp Input; уходим на ввод в нужную позицию
K_D: cmp BL, 00101001b;
jne K_E;
mov BL, 0Dh; код кнопки - ее значени
jmp Input; уходим на ввод в нужную позицию
K_E: cmp BL, 00110001b;
jne K_F;
mov BL, 0Eh; код кнопки - ее значени
jmp Input; уходим на ввод в нужную позицию
K_F: cmp BL, 00111001b; F
jne K_Ap;
mov BL, 0Fh; код кнопки - ее значени
jmp Input; уходим на ввод в нужную позицию
K_Ap: cmp BL, 00000010b; ADRES
je K_adr;
cmp BL, 00001010b; A+
je K_Aplus;
cmp BL, 00010010b; A-
je K_Amin;
cmp BL, 00011010b; DATA
je K_data;
ret;
При нажатии на кнопку «инкремент адреса» происходит увеличение текущего адреса, сравнение его с 999 – чтобы не выйти за диапазон и происходит обновление индикатора:
;#######################################################################
; кнопка увеличения адреса и ввода данных данных
;#######################################################################
K_Aplus:
inc AX; декремент текущего адреса
cmp AX, 999; проверка на количество 1000
jnge vse_ok1; если не больше или равно то дальше
mov AX, 999; иначе пишим макс допустимое значени
vse_ok1:
call Indic; отображаем то что по этому адресу
ret;
При нажатии на кнопку «декремент адреса» происходит уменьшение текущего адреса, сравнение его с 0 – чтобы не выйти за диапазон и происходит обновление индикатора:
;#######################################################################
; кнопка уменьшения адреса и ввода данных данных
;#######################################################################
K_Amin:
dec AX; декремент текущего адреса
cmp AX, 999; проверка на количество 1000
jnge vse_ok2; если не больше или равно то дальше
mov AX, 999; иначе пишим макс допустимое значени
vse_ok2:
call Indic; отображаем то что по этому адресу
ret;
При нажатии кнопки перевода в режим прямого ввода адреса в счетчик ввода помещается число вводимых символов, и очищаем индикатор, выводом на него «_», на нем будут появляться введенные цифры:
;#######################################################################
; кнопка прямого ввода адреса
;#######################################################################
K_Adr:
mov count, 6; счетчик вводимых символов 6 = 4(адрес) + 2(данные)
; все разряды - нижнее подчеркивание _
; команда записи в ОЗУ отображения
mov BL, 10010000; устанавливаем 0й адрес ОЗУ отображения с автоинкрементированием
mov KKD_RU, BL;
mov CX, 8;
K_Adr_1:
mov KKD_D, 00001000b; запись в ОЗУ отображения _
dec cx;
jnz K_Adr_1;
ret;
При нажатии кнопки ввода данных по текущему адресу активируется редим ввода данных, на индикаторе разряды в которых отображаются данные заменяются на «_» и в счетчик вводимых цифр записывается 2:
;#######################################################################
; кнопка ввода данных по текущему адресу
;#######################################################################
K_data:
mov count, 2; счетчик вводимых символов 2(данные)
; все разряды данных (2 младших) - нижнее подчеркивание _
; команда записи в ОЗУ отображения
mov BL, 10010000; устанавливаем 0й адрес ОЗУ отображения с автоинкрементированием
mov KKD_RU, BL;
mov CX, 2;
K_Amin_1:
mov KKD_D, 00001000b; запись в ОЗУ отображения _
dec cx;
jnz K_Amin_1;
ret;
При нажатии кнопок цифр осуществляется ввод в текущую позицию (она определяется счетчиком позиции) и обновляется индикатор. Если счетчик позиции содержит 0, то нажатия этих кнопок игнорируются:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.