data segment h db ? m db ? s db ? ms db ? mesmen db 13,10,"Choose COM-X :",13,10,13,10,"COM-1 pressed(1)",13,10,"COM-2 pressed(2)",13,10,"COM-3 pressed(3)",13,10,"COM-4 pressed(4)",13,10,"$" mes1 db 13,10,"COM-1 is active!!!",13,10,"$" mes2 db 13,10,"COM-2 is active!!!",13,10,"$" mes3 db 13,10,"COM-3 is active!!!",13,10,"$" mes4 db 13,10,"COM-4 is active!!!",13,10,"$" data ends code segment assume cs:code, ds:data clrscn proc push ax push bx push ds push es mov cl, 0 mov ch, 0 mov dl, 80 mov dh, 25 xor ax,ax mov al,0 xor bx, bx mov bh, 10 int 10h pop es pop ds pop bx pop ax ret clrscn endp GetTime proc push ax push cx push dx xor ax,ax xor cx,cx xor dx,dx mov ah, 2ch int 21h mov h, ch mov m, cl mov s, dh mov ms,dl pop dx pop cx pop ax ret GetTime endp start: mov ax, data mov ds, ax met: call clrscn mov ah, 09h mov dx,offset mesmen int 21h mov ah,01h int 21h cmp al,'1' jz m1 cmp al,'2' jz m2 cmp al,'3' jz m3 cmp al,'4' jz m4 jmp met m1: call clrscn mov ah, 09h mov dx,offset mes1 int 21h mov ax,0040h mov es, ax mov ds, es:[0000] jmp beg m2: call clrscn mov ah, 09h mov dx,offset mes2 int 21h mov ax,0040h mov es, ax mov ds, es:[0002] jmp beg m3: call clrscn mov ah, 09h mov dx,offset mes3 int 21h mov ax,0040h mov es, ax mov ds, es:[0004] jmp beg m4: call clrscn mov ah, 09h mov dx,offset mes4 int 21h mov ax,0040h mov es, ax mov ds, es:[0006] beg: add dx,3 mov al, 10000000b out dx,al nop nop mov ax,417h sub dx,3 out dx,al nop nop inc dx mov al,ah out dx,al nop nop ;установка протокола inc dx inc dx mov al,00011111b out dx, al nop nop sub dx,3 ;передающая машина call GetTime mov cx,4 mm: add dx,5 mm1: in al,dx and al, 01100000b cmp al, 01100000b jnz mm1 ;в al записать очередной символ sub dx,5 out dx,al loop mm fin: mov ax, 4c00h int 21h code ends end start