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

                                                 4.8                                                                    4.9

                             нет                                                              нет                                                              

да    4.10                                                      да       4.11     

4.12                                                                             4.13 

 нет

да  

                                                        4.14

                                                          4.15

4.16

 H

     

H

4.17

4.18

ZADER4              4.19

ZADER5              4.20 

4.21

да

нет

                                                           4.22

4.23 

                                                                     нет   

 да        4.24    

4.25

4.26

да

4.28

нет     4.27

                                          FG

2. Текст программы на языке ассемблера

PORTA         EQU        80H        ;адрес первого индикатора

PORTB         EQU        81H        ;адрес второго индикатора

PORTC         EQU        82H        ;адрес клавиатуры

PORCRL        EQU        83H        ;адрес порта управления внеш. устройствами

PVS           EQU        43528      ;постоянная времени зад. на 1 сек.

PVSD          EQU        254        ;постоянная времени защиты от дребезга

KODKL         EQU        25         ;код пуска и установки режима 00011001

KODKL1        EQU        26         ;код остановки и установки режима 00011010

;---------------------------------

              ORG        800H       ;стартовый адрес программы в ОЗУ стенда

;инициализация

              LXI        SP,970H    ;инициализация указателя стека

              MVI        A,89H      ;загрузка управляющего байта внеш. устройств                              OUT        PORCRL     ;вывод управляющего байта в порт управления

              MVI        E,0

;ожидание пуска или смены режима

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

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

              ANI        KODKL      ;проверка нажат ли “пуск” или “уст. режима”

              JZ         ASDF       ;нужная клавиша  не нажата

;защита от дребезга при нажатии

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

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

;дребезг при нажатии окончен, сохраняем код нажатой клавиши

              IN         PORTC      ;чтение кода нажатой клавиши

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

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

;ожидание отпускания клавиши

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

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

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

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