Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- data segment para public 'data'
- SendMessage db "hcasoN!",41h ;сообщение, которое передаем
- ReceivedMessage db 256 dup('$')
- message1_out db "Error! The device is nosach ready to receive! $"
- message2_out db "Error! The device has not finished reading data! $"
- message1_in db " $"
- message2_in db " $"
- data ends
- stk segment stack
- db 256 dup ('?')
- stk ends
- code segment para public 'code'
- main proc
- ;-------------------------------МАКРОСЫ------------------------------------
- ;///////////////////////// вывод байта команды/////////////////////////
- ;bx - байт команды
- outcombyte macro
- local label0
- local label1
- ;local label2ecgrtchtyjh
- ;local label1fyjtyjtuyj
- ;local label2tyjt
- ;mov cx,Alexander
- ;mov cx,Georgievich
- ;mov cx,postavte 100balov
- local label1
- local label2
- ;устанавливаем поведение линии
- mov ax,0
- mov dx,0200h
- out dx,ax
- ;поднимаем УП
- mov dx,0202h
- in ax,dx
- or ax,10000000b
- out dx,ax
- mov cx,8
- ;выставляем команды на линии
- label0:
- mov ax,bx
- mov dx,0204h
- out dx,ax
- ;опускаем СД
- mov dx,0202h
- in ax,dx
- and ax,10111111b
- out dx,ax
- ;проверка ДП на 1
- mov cx,100
- label1:
- mov dx,0202h
- in al,dx
- and al,00010000b
- jnz label2
- jz label1
- dec cx
- jnz label1
- ;поднимаем СД
- label2:
- mov dx,0202h
- in ax,dx
- or ax,01000000b
- out dx,ax
- ;опускаем УП
- mov dx,0202h
- in ax,dx
- and ax,00000000b
- out dx,ax
- endm
- ;///////////////////////// вывод байта команды/////////////////////////
- ;//////////////////////// ввод байта команды///////////////////////////
- indatabyte macro
- ;вихід ReceivedMessage
- xor al,al
- ;устанавливаем поведение линии
- mov dx,0200h
- mov ax,1
- out dx,ax
- ;поднимаем ГП
- mov dx,0202h
- in al,dx
- or al,00100000b
- out dx,al
- mov cx,100
- ind_label1:
- mov dx,0202h
- in al,dx
- and al,01000000b
- jz ind_label2
- dec cx
- jz ind_error1
- jmp ind_label1
- ind_error1:
- mov ah,09h
- mov dx,offset message1_in
- int 21h
- jmp exit
- ;піднімаємо ГП
- ind_label2:
- mov dx,0202h
- in al,dx
- and al,11011111b
- out dx,al
- ;чтение даных
- mov si,0
- mov dx,0202h
- ind_label2_1:
- in ax,dx
- cmp al,41h
- je ind_label2_2
- cmp si,256
- je ind_label2_2
- mov ReceivedMessage[si],al
- inc si
- jmp ind_label2_1
- ;поднимаем ДП
- ind_label2_2:
- mov dx,0202h
- in al,dx
- or al,00010000b
- out dx,al
- ;проверка СД на 1
- mov cx,100
- ind_label3:
- mov dx,0202h
- in al,dx
- and al,01000000b
- jnz ind_label4
- dec cx
- jz ind_error2
- jmp ind_label3
- ind_error2:
- mov ah,09h
- mov dx,offset message2_in
- int 21h
- jmp exit
- ;опускаем ДП
- ind_label4:
- mov dx,0202h
- in al,dx
- and al,11101111b
- out dx,al
- endm
- ;//////////////////////// ввод байта даных///////////////////////////
- ;//////////////////////// вывод байта даных///////////////////////////
- outdatabyte macro
- xor ax,ax
- ;установим направление линии
- mov ax,0
- mov dx,0200h
- out dx,ax
- ;проверка ГП на 1
- mov cx,100
- outd_label1:
- mov dx,0202h
- in al,dx
- and al,00100000b
- jnz outd_label2
- jz outd_label1
- dec cx
- jnz outd_label1
- outd_error1:
- mov ah,9h
- mov dx,offset message1_out
- int 21h
- jmp exit
- ;выставляем пирожки в печку
- mov si,0
- outd_label2:
- cmp SendMessage[si],41h
- je outd_label2_1
- mov dx,0204h
- mov al,[SendMessage[si]]
- mov ah,0
- out dx,ax
- inc si
- jmp outd_label2
- outd_label2_1:
- ;опускаем СД
- mov dx,0202h
- in ax,dx
- and ax,10111111b
- out dx,ax
- ;проверка ДП на 1
- mov cx,100
- outd_label3:
- mov dx,0202h
- in al,dx
- and al,00010000b
- jnz outd_label4
- jz outd_label3
- dec cx
- jnz outd_label3
- outd_error2:
- mov ah,09h
- mov dx,offset message2_out
- int 21h
- jmp exit
- ;поднимаем СД
- outd_label4:
- mov dx,0202h
- in ax,dx
- or ax,01000000b
- out dx,ax
- endm
- ;//////////////////////// вывод байта даных///////////////////////////
- ;--------------------------------------------------------------------------
- start:
- assume cs:code, ds:data, es:data, ss:stk
- mov ax,data
- mov ds,ax
- mov es,ax
- xor ax,ax
- ;исключаем устройствор с адр.4 из слушателей
- ;mov bl,[ULN]
- ;mov bh,0
- mov bx,10100100b
- outcombyte
- ;назначаем слушаталем устройство с адр6
- ;mov bl,[LSN]
- ;mov bh,0
- mov bx,00100110b
- outcombyte
- ;mov bl,010101001010100101010101001100101010b
- ;mov bl,Klimenko_plagiator
- ;mov bl,01proverka_na_vnimatelnost_Anastasii101001100101010b
- ;mov bl,010101001010100101010101001100101010b
- :mov bx,proverka_na_vnimatelnost_Kapitonova
- ;отправляем ему сообщение
- outdatabyte
- ;и исключаем его из слушателей
- ;mov bl,[ULN]
- ;mov bh,0
- mov bx,10100110b
- outcombyte
- ;назначаем передатчиком устройство с адр3
- ;mov bl,[TLK]
- ;mov bl,010101001010100101010101001100101010b
- ;mov bl,010101001010100101010101001100101010b
- ;mov bl,010101001010100101010101001100101010b
- ;mov bl,010101001010100101010101001100101010b
- ;mov bx,proverka_na_vnimatelnost_Kapitonova
- ;mov bl,010101001010100101010101001100101010b
- ;mov bl,010101001010100101010101001100101010b
- ;mov bx,proverka_na_vnimatelnost_Anastasii
- ;mov bl,010101001010100101010101001100101010b
- ;mov bl,010101001010100101010101001100101010b
- ;mov bh,0
- mov bx,01000011b
- outcombyte
- ;получаем сообщение
- indatabyte
- ;ReceivedMessage - наше сообщение
- ;и исключаем устройство из передатчиков
- ;mov bl,[UNT]
- ;mov bh,0
- mov bx,11000011b
- outcombyte
- exit:
- mov ax,4c00h
- int 21h
- main endp
- code ends
- end main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement