call zader
mvi d,1000111b ; 18196 -
mvi e,00010100b
call zader
dcr b
jnz ob0_b
;
;-----------выход
exit: ret
;
;--------------------подпрограмма задержки на N милисекунд----------------------------------
;
; значение в паре d определяет задержку
zader: in portc ; time*[10 тактов] опрос клавиатуры.
mov c,a ; time*[5 тактов] сохранение аккумулятора.
dcx d ; time*[5 тактов] уменьшение регистровой пары d
mov a,e ; time*[5 тактов] в аккумулятор записывается содержимое
; регистра е для сравнения с регистром d
ora d ; time*[4 тактов] если оба регистра равны нулю, то
;формируется флаг нуля. Выход из подпрограммы задержки.
jz escape ; time*[10 тактов]
mov a,c ; time*[5 тактов] восстановление кода, полученного с клавиатуры
ani kodkl ; time*[7 тактов] нажато 0,3 или 5?
jz zader ; time*[10 тактов] если нужные клавиши не нажаты, то переход
; переход по метке zader.
pop h ; двойная коррекция стека перед "аварийным" выходом из
; подпрограммы (в случае нажатия нужной клавиши).
pop h ;
call enter ; переход к вводу.
jmp varianty
escape: ret ; [10 тактов] выход из подпрограммы.
;
;----------------------------------------------------------------------------------
;--------------------подпрограмма состояния 1----------------------------------
;
sost1: mvi a,0c7h
out porta
mvi a,3ah
out portb
ret
;
;--------------------подпрограмма состояния 2----------------------------------
;
sost2: mvi a,3ah
out porta
mvi a,0c7h
out portb
ret
;
;----------------------------------------------------------------------------------
;
klav: db 0 ; ячейка памяти, в которой временно хранится код
; нажатой клавиши клавиатуры
conddv: db 11H ; ячейка памяти, в которой временно хранится код
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.