Практические задания на экзамен по дисциплине "Цифровые и микропроцессорные устройства", страница 14

        IN      PB8155          ;ONLY FOR THE ACTIVATE INPUT FILE

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        EI

WAITBUFFER:

        LDA     FLGZGR

        ORA     A

        JNZ     WAITBUFFER       ;WAIT BUFFER

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        MVI     A,00001111B     ;MASK FROM ALL INTERRUPT

        SIM

                    LXI            H,BUF1

                    CALL        KONSUM

                    LXI            D,BUF2

                    MVI           A,1

                    STA           PASS1

LOOP1:

                    MOV         A,M

                    ORA          A

                    JZ              ENDTEXT

19.1.

                    CALL        CODING

                    STAX        D

                    INX            H

                    INX            D

                    JMP           LOOP1

ENDTEXT:

        STAX    D

                    LDA           PASS1

                    ORA          A

                    MVI           A,0

                    STA           PASS1

                    JZ              HALT

PRODOLJ:

                    LXI            H,BUF2

                    LXI            D,BUF3

                    JMP           LOOP1

;

HALT:

                    DI

        LXI     H,BUF3

        CALL    KONSUM

;       OUTPUT FROM THE PORT B

        LXI     H,BUF2

        MVI     B,TEXTSIZE-1

LOOPOUT:

        MOV     A,M

        OUT     PA8355

        INX     H

        DCR     B

        JNZ     LOOPOUT

                    HLT

CODING:

        ;SUBROUTINE

        CMA

                    RET

KONSUM: ;SUBROUTINE

                    RET

ENd

билет 24. Написать ППОП, которая читает

байт из порта 0FEh, инвертирующий биты B4, B3,

B1 и сохраняет результат в памяти по

адресу, находящемуся в ячейке POINT с

последующей модификацией этого адреса.

Вектор прерывания - RST6,5

SEG DATA

  POINT DS2        ; резерв. 2 байта под адрес

записи

...

; RST6,5 - 6,5*8 = 34h:

  JMP SUBR_65      ; запуск подпрограммы при

прирывании

...

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

  LXI SP, STACK0   ; инициализация стека

  MVI A, 00001101b ; RST6,5

  SIM              ; установка маски прерываний

  EI               ; разрешение обработки

прерываний

...

SUBR_65:

  PUSH PSW         ; сохранение в стек

содержимого регистров A и F

  PUSH H           ; сохранение в стек

содержимого регистровой пары HL

  LHLD POINT       ; загрузка адреса записи POINT

(константа) в HL

  IN 0FEh          ; чтение однобайтного (в

условии не сказано, значит пусть будет

однобайтного)) значения из порта 0FEh

  XRI 00011010b    ; инвертирование битов B1, B3 и B5

  MOV M, A         ; запись полученного значения

в ячейку с адресом из HL

  INX H            ; модификация адреса (HL) <- (HL)+1

  SHLD POINT       ; запись модифицированного

адреса обратно в POINT

  POP PSW          ; восстановление из стека

содержимого регистров A и F

  POP H            ; восстановление из стека

содержимого регистровой пары HL

  EI               ; разрешение обработки

прерываний

  RET              ; выход из подпрограммы

Вариант алгоритма кодирования/декодирования текста. Если биты B1 и B3 равны, то инвертировать В6, В0 , иначе инвертировать В0, В5,В7.

CODING:

                    ANI            00001010b             ; Выделяем 1 и 3 биты

            JPOPROG                            ; Переход в PROG если сумма 1 и 3 битов нечетна

MOVA,M                           ;Иначе запись в аккумулятор значения ячейки с адресом HL

                    XRI 01000001b ;Сложение с числом 01000001 по модулю 2 дает

                    RET;Дает инверсию 6 и 0 бита, ост. Остается без изменений

PROG: MOVA,M

                    XRI 10100001b ; Сложение с числом 10100001 по модулю 2 дает инверсию 0,5 и 7

                    RET ;битов , остальные остаются без изменений

KONSUM:

                    ;

                    RET

                    END