Решение экзаменационных задач по дисциплине "Цифровые и микропроцессорные устройства", страница 3

; KONEC ZAPOLNENIIA HUINEI

        LXI H, BUF1

        LXI B, dlinaBuf1

L2:   MOV E, M

        INX H

        SHLD UkCht

        LHLD SUMm

        DAD D

        SHLD SUMm

        JNC L3

        LHLD SUMs

        INX H

        SHLD SUMs

L3:  LHLD UkCht

        DCX B

        MOV A, B

        ORA C

        JNZ L2

        end

17.  Программируемый ввода данных и запись в буфер BUF, размером DIM.

first_address     equ 1000h

      defseg d_seg, start = first_address, class=data

      seg d_seg

BUF1:   ds 100h

      defseg io_seg,start=80h,class=IOspace

      seg    io_seg  

addrport  ds   1h

      defseg c_seg, start = 0000h, class=code

      seg c_seg

        LXI H, BUF1

L2:  IN addrport

        CPI 00h

        JZ L1

        MOV M, A

        JMP L2

 L1:

      End

17.  Программируемый ввода данных и запись в буфер BUF, размером DIM

(с КВИТИРОВАНИЕМ!!)

first_address     equ 1000h

      defseg d_seg, start = first_address, class=data

      seg d_seg

BUF1:   ds 100h

      defseg io_seg,start=80h,class=IOspace

      seg    io_seg  

addrport  ds   1h

FlagPort  ds   1h

      defseg c_seg, start = 0000h, class=code

      seg c_seg

        LXI H, BUF1

 L2: 

         IN     FlagPort; KVITIROVANIE!!!

         XRI    00100000b

         OUT    FlagPort

         IN     FlagPort

         ANI    00100000b

         JZ     L2

       IN addrport

        CPI 00h

        JZ L1

        MOV M, A

        JMP L2

 L1:

      End

18. Программируемый вывод данных из буфера BUF до появления кода 00, или конца цикла. Вывод данных  производится из буфера BUFF, размер буфера N = 80h.

first_address     equ 1000h

      defseg d_seg, start = first_address, class=data

      seg d_seg

BUF1:   ds 80h 

      defseg io_seg,start=80h,class=IOspace

      seg    io_seg  

addrport  ds   1h

      defseg c_seg, start = 0000h, class=code

      seg c_seg

        LXI H, BUF1

        MVI B, 80h

L2:  OUT addrport

        CPI 00h

        JZ L1

        MOV M, A

        DCR B

        JZ L1

        JMP L2

 L1:

      End

19. Генератор импульсов формирует запросы прерывания.

ППОП производит запись коды 01, 02, 03, …, 80h в память, начиная с адреса ADR0.

Использовать вход прерывания RST7.5.

first_address     equ 1000h

dlinaSteka      equ 32

dlinaBuf1 equ  80h

      defseg d_seg, start = first_address, class=data

      seg d_seg

BUF1    ds  dlinaBuf1

     defseg stack_seg, start=2000h-dlinaSteka, class= data

     seg    stack_seg

     ds     dlinaSteka

     defseg rst_75, start=3Ch, class= code

     seg    rst_75

     JMP    rst75

     defseg Main_seg, start = 100h, class = Code

     seg    Main_seg

MAIN: LXI    SP,2000h

           MVI    A, 00001011b; maska prerivani9

           SIM

           EI

L1: JMP    L1

      defseg c_seg, start = 0000h, class=code

      seg c_seg

       JMP MAIN

rst75:

        PUSH PSW

        PUSH H

        PUSH B

        MVI B, dlinaBuf1

        LXI H, BUF1

        MVI C, 01h

L2:  MOV M, C

        INR C

        INX H

        DCR B

        JNZ L2

        POP B

        POP H

        POP PSW

        RET

      end

20. Рассмотрим ввод по прерыванию байтовых данных, поступающих на вход порта A прибора 8155. Принятые данные записываются в буфер BUF1, размером 80 байт. После заполнения буфера выставить флаг, запретить ввод и передать управление на обработку.

first_address     equ 1000h

dlinaSteka      equ 32

dlinaBuf1 equ  80h