Задание на курсовое проектирование. Анализ технического задания. Разработка принципиальной схемы МПС, страница 7

Процедура INTRRUPT_PROC производит основные операции по считыванию состояния компаратора, инкремента (если на компараторе логическая единица) счетчика al, проверки счетчика отсчетов cl и, по достижении им нуля, вызов подпрограммы индикации display. В теле процедуры display происходит инициализация контроллера клавиатуры и индикации на работу в режиме ввода справа со сдвигом, 4 разряда на символ, с внешней дешифрацией. Среднее по N отсчетам время нахождения сигнала ниже заданного уровня (al/cl) индицируется путем выделения десятичных разрядов остатка и делимого, их вывода в ОЗУ отображения с инициализацией старшей тетрады строки единицей при переходе от индикации остатка к индикации частного – для засветки десятичной точки. После выполнения процедуры display (один раз на десять отсчетов) вся программа начинается с начала (метка globalbegin) c реинициализацией всех регистров.  

Исходный текст микропрограммы системы анализа характеристик случайных сигналов:

8800h:  main proc                                         ; начало процедуры main

nТ

globalbegin:                                     ; пользовательская метка globalbegin

2                            CLI                                                     ; маскирование флага прерываний IF

4                            mov       cl,10                                    ; инициализация счетчика отсчетов в младшем байте cx

4                            mov       ch,10                                   ; инициализация счетчика отсчетов в старшем байте cx

4                            mov       al,204                                 ; инициализация младшего байта регистра ax числом 204

10                         out         111111111 11 111 0 1b, al              ;           запись в ЦАП: 204d=11001100b+00b ->

-> 1100110000b=816d -> 816-й уровень напряжения = 4.000 В

4                           mov       al,00101100b                    ; инициализация младшего байта регистра ax числом 44

10                         out         111111111 11 110 0 0b, al               ;          инициализация интервального таймера -> канал 0, чтение запись/младшего байта, режим 2, двоичный счет

4                           mov       al, 30                                   ; инициализация младшего байта регистра ax числом 30

10                         out         111111111 11 000 0 0b, al              ;           запись константы пересчета = 30

4                           mov       ax,0                                     ; инициализация счетчика «низкого уровня» в регистре bx

2                            STI                                                                 ;     размаскирование флага прерываний IF

3                           WAIT                                                             ;    ожидание запроса прерывания

8400h:  INTERRUPT_PROC                        ; начало процедуры обработки прерывания

10                         in           ax,111111111 11 111 1 0b               ;          считывание состояния компаратора по младшему разряду на ШД

4                            cmp       ax,1                                     ; сравнение вида ax=1, и если true, то...

4                            jne         endcheck                           ; ...переход на метку lowlevel...

2                            inc         ax                                        ; увеличение счетчика «низкого уровня» на единицу

endcheck:                                         ; пользовательская метка endcheck

2                            dec         cl                                         ; уменьшение общего счетчика отсчетов на единицу

4                            cmp       cl,0                                      ; сравнение вида cl=0, и если true, то...

4                            jne         toendproc                          ; ...переход на метку indicate...

11                         call        display                               ; вызов процедуры display