Устройство управления двухтактным двигателем внутреннего сгорания, страница 6

                   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                       ; ячейка памяти, в которой временно хранится код