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

      defseg d_seg, start = first_address, class=data

      seg d_seg

BUF1    ds  dlinaBuf1

         defseg io_seg,start=80h,class=IOspace

         seg    io_seg  

A8155: ds 1

     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

L2:  IN A8155

        MOV M, A

        INX H

        DCR B

        JNZ L2

        POP B

        POP H

        POP PSW

        DI

        RET; zaversh ppop

      End

33. Заполнение памяти с адреса Buf72 по адрес Buf72+1023 кодами "бегущая тройка".

(Сдвигвлево)

first_address     equ 1000h

dlinaSteka      equ 32

dlinaBuf1        equ  400h

      defseg d_seg, start = first_address, class=data

      seg d_seg

BUF1    ds  dlinaBuf1

vrA      ds 1h

     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

        LXI B, dlinaBuf1

        LXI H, BUF1

        MVI A, 00000011b

L2:  MOV M, A

        RLC

        INX H

        DCX B

        STA vrA

        MOV A, B

        ORA C

        LDA vrA

        JNZ L2

        POP B

        POP H

        POP PSW

        EI

        RET

      End

33. Заполнение памяти с адреса Buf72 по адрес Buf72+1023 кодами "бегущая тройка".

(Выборки кодов из таблицы шаблонов) АД

first_address     equ 1000h

dlinaSteka      equ 32

dlinaBuf1        equ  400h

      defseg d_seg, start = first_address, class=data

      seg d_seg

BUF1    ds  dlinaBuf1

vrA      ds 1h

UkCht  ds 2h

UkTabl ds 2h

Tabl    db 00000011b, 00000110b, 00001100b,00011000b

             db 00110000b, 01100000b, 11000000b, 10000001b, 00000000b

     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

        LXI B, dlinaBuf1

        LXI H, Tabl

        SHLD UkTabl

        LXI H, BUF1

L2:  SHLD UkCht

        LHLD UkTabl

        MOV A, M

        ORA A

        JNZ L3

        LXI H, Tabl

        MOV A, M

L3:  INX H

        SHLD UkTAbl

        LHLD UkCht

        MOV M, A

        INX H

        DCX B

        STA vrA

        MOV A, B

        ORA C

        LDA vrA

        JNZ L2

        POP B

        POP H

        POP PSW

        EI

        RET

      End