Разработка микропроцессорной централизации малой станции. Разработка структурной схемы МПС. Блок центрального процессора, страница 17

03C8  FE 08      M12:      CPI   08H      ;

03CA  C2 D3 03             JNZ   EXIT_CH  ; не 12 маршрут - выход

03CD  21 0B 20             LXI   H,200Bh  ;

03D0  C3 D6 03             JMP   OPER     ;

03D3  C3 19 05   EXIT_CH:  JMP   IDLE     ;


 


03D6  3A 11 20   OPER:     LDA   COMMAND2 ; выбор требуемой операции

03D9  47                   MOV   B,A      ;

03DA  7E                   MOV   A,M      ;

03DB  80                   ADD   B        ; складываем команду и состояние маршрута

03DC  FE 00                CPI   00H      ; проверяем на возможные вариации

03DE  CA EE 03             JZ    USTANOV  ; состояние: нулевое - установить

03E1  FE 49                CPI   49H      ;

03E3  CA BA 04             JZ    RAZDEL   ; установлен и идет размыкание - разделать

03E6  FE 21                CPI   21H      ;

03E8  CA C3 04             JZ    OTMEN    ; установлен - отменить

03EB  C3 5F 05             JMP   ERROR    ; вариантов нет - выдать ошибку на индикатор

03EE  E5         USTANOV:  PUSH  H        ; сохраняем адрес маршрута

03EF  CD 1D 04             CALL  ADRES    ; вычисляем косвенный адрес для других таблиц

03F2  EB                   XCHG           ; меняем DE и HL

03F3  E5                   PUSH  H        ;

03F4  E5                   PUSH  H        ;

03F5  26 13                MVI   H,13H    ; переход на таблицу враждебности

03F7  CD 30 04             CALL  VRAJDEB  ; проверка на враждебность установленным маршр.

03FA  7B                   MOV   A,E      ;

03FB  FE FF                CPI   FFH      ; есть ли враждебные?

03FD  C2 1A 04             JNZ   EXIT_U   ; есть - выход

0400  E1                   POP   H        ;

0401  26 12                MVI   H,12H    ; переход на таблицу свободности

0403  CD 61 04             CALL  SVOBOD   ; проверка на свободность секций

0406  7B                   MOV   A,E      ;

0407  FE FF                CPI   FFH      ; свободны ли секции?

0409  C2 1A 04             JNZ   EXIT_U   ; заняты - выход

040C  E1                   POP   H        ;

040D  26 15                MVI   H,15H    ; переходим на таблицу выходных воздействий

040F  CD 7D 04             CALL  OUTTHE   ; формируем выходные воздействия

0412  E1                   POP   H        ;

0413  7E                   MOV   A,M      ;

0414  F6 20                ORI   20H      ; маршрут "устанавливается" - смена сосояния

0416  77                   MOV   M,A      ;

0417  CD 99 04             CALL  STRELKA  ; перевод стрелок, открытие сигналов

041A  C3 19 05   EXIT_U:   JMP   IDLE     ; выход из установки

; определение косвенного адреса в таблицах

041D  1E 10      ADRES:    MVI   E,10H    ; начальный адрес в таблицах

041F  45                   MOV   B,L      ;

0420  78         MMM3:     MOV   A,B      ; пока младший байт адреса маршрута

0421  FE 00                CPI   00H      ; не станет нулевым - декрементируем

0423  CA 2F 04             JZ    EXIT_AD  ;

0426  3D                   DCR   A        ;

0427  47                   MOV   B,A      ;

0428  7B                   MOV   A,E      ; и увеличиваем младший косвенный адрес

0429  C6 05                ADI   05H      ; на 05H

042B  5F                   MOV   E,A      ;

042C  C3 20 04             JMP   MMM3     ;

042F  C9         EXIT_AD:  RET            ; выход

0430  3A 40 20   VRAJDEB:  LDA   MDM_OUTB1; проверяем, установлено ли 2 маршрута?

0433  E6 F0                ANI   F0H      ;

0435  CA 3A 04             JZ    CLEAR1   ; если уже 2 установлено - выход, враждебность

0438  1E 00                MVI   E,00H    ;

043A  3A 40 20   CLEAR1:   LDA   MDM_OUTB1;

043D  FE 00                CPI   00H      ; если нет установленных - выход, не враждебен

043F  C2 44 04             JNZ   CLEAR2   ;

0442  1E FF                MVI   E,FFH    ;

0444  3A 40 20   CLEAR2:   LDA   MDM_OUTB1; установлен 1, А = его номеру в HEX

0447  47                   MOV   B,A      ;

0448  CD 55 04             CALL  FIND     ;