Световая реклама (курсовая по ассемблеру), страница 6

              MVI        A,8

              OUT        PORTA

              MVI        A,64

              OUT        PORTB

              CALL       ZADER

              MVI        A,16

              OUT        PORTA

              MVI        A,128

              OUT        PORTB

              CALL       ZADER

ASD1:         IN         PORTC      ;опрос клавиатуры

              ANI        KODKL1     ;проверка нажаты остановка или установка режима

              JZ         NADO       ;нажато что-то др., продолжаем выполнять режим 3

;нажата остановка или установка режима, выполняем защиту от дребезга                                         

              MVI        C,PVSD     ;загрузка кол. повторов при защите от дребезга

              JMP        ZXC        ;переходим к защите от дребезга

;выполнение запуска рекламы

PUSK:         LXI        H,RAB      ;установка режима работы

              MVI        M,1

              LXI        H,REJIM    ;проверка на каком режиме остановилась работа

              MOV        A,M

              ANA        A          ;проверка в каком режиме выполнять работу

              JZ         DRNADO     ;переход на режим 4    

              JMP        NADO       ;переход на режим 3

;***************подпрограммы**********************************************

;подпрограмма задержки на 2 секунды с опросом клавиатуры

ZADER:        LXI        H,PVS      ;(*10)загрузка пост. вр. для реализации зад. на 1 сек

ZADER1:       IN         PORTC      ;(**10)опрос клавиатуры

ANI        KODKL1     ;(**7)проверка нажаты ост. или установка режима                JZ         ZADER2     ;(**10)не нажата, продолжаем выполнять вр. задер

              MVI        C,PVSD     ;загрузка кол. повторов при защите от дребезга

ZADER3:       IN         PORTC      ;опрос клавиатуры

              ANI        KODKL1     ;проверка нажаты остановка или установка режима

              JZ         ZADER2     ;дребезг или помеха - продолжаем врем. задержку

              DCR        C          ;уменьшаем счетчик повторов для защ. от дребезга

              JNZ        ZADER3     ;дребезг еще не окончен

              PUSH       H          ;сохранение кода нажатой клавиши

              IN         PORTC     

              LXI        H,KLAV

              MOV        M,A

              POP        H

ZADER4:       MVI        C,PVSD     ;загрузка кол. повторов при защите от дребезга 

ZADER5:       IN         PORTC      ;опрос клавиатуры

              ANA        A          ;проверка нажата ли клавиша

              JNZ        ZADER4     ;клавиша нажата

              DCR        C          ;уменьшаем счетчик повторов для защ. от дребезга

              JNZ        ZADER5     ;дребезг еще не окончен

              POP        H          ;коррекция указ. стека перед “аварийным” выходом из ПП

              LXI        H,KLAV     ;занесение в пару h адреса ячейки памяти

              MOV        A,M        ;пересылка кода нажатой клавиши в ячейку памяти

              ANI        2          ;проверка нажата ли клавиша “1”-остановка

              JNZ        OST        ;нажата остановка

              LXI        H,KLAV     ;пересылка кода нажатой клавиши в ячейку памяти

              MOV        A,M        ;пересылка кода нажатой клавиши в ячейку памяти

              JMP        REG        ;переход на выполнение режима

OST:          LXI        H,RAB      ;установка режима “остановка”

              MVI        M,0           

              JMP        ASDF       ;переход на начало

ZADER2:       SHLD       PUST       ;символы, обеспечивающие задержку на 2 сек