assume cs:kod, ds:dane dane segment buforek db 4000 dup(0) dane ends kod segment START: mov dx, dane mov ds, dx ;adres segmentu danych do ds jmp GO ;=============================================================================== USTAW proc mov dx, 2e1h ;rejestr rozkazow mov al, 00001101b ;define configuration, konfiguracja, dlugie i krotkie pakiety (000c101 - define configuration , c = dlugie i krotkie ; [jesli 1] out dx, al mov al, 00011110b ;clear flag, zerowanie rejestru stanu (000rp110 - zerowanie flag, r - wyzerowanie bitu POR, p - recon) out dx, al ret endp ;=============================================================================== ;=============================================================================== WYSLIJ proc mov bx, 0d000h mov es, bx mov bx, dane mov ds, bx lea si, buforek mov es:[di], 01000000b ;adres nadawcy pakietu mov es:[di+1], 10000000b ;adres odbiorcy pakietu mov es:[di+2], 0 mov es:[di+3], 5 mov di, 5 push cx mov cx, 500 rep movsb pop cx CZEKAJ: mov dx, 2e0h ;rej stanu in al, dx and al, 00000001b ;sprawdz czy TA=1 (zdolny do przeslania) jz CZEKAJ mov dx, 2e1h mov al, 00000011b out dx, al ret endp ;=============================================================================== ;=============================================================================== ODBIERZ proc mov dx, 2e1h mov al, 00000100b ;Enable Receive To Page nn=00b out dx, al mov dx, 2e0h ;rej stanu CZEKAJ: in al, dx and al, 10000000b ;spr czy RI=1 (w buforze RAM jest już przekazana paczka) jz CZEKAJ JUZ: mov si, 5 lea di, buforek mov ax, 0d000h mov ds, ax mov ax, dane mov es, ax mov cx, 500 rep movsb ret endp ;=============================================================================== ;=============================================================================== SCRTOMEM proc ;Pamiec ekranu do pamici pod adres es:di mov dx, dane ;adres bloku danych mov es, dx lea di, buforek mov cx, 4000 ;4000 Bajtow - caly ekran mov dx, 0b800h ;pamiec ekranu mov ds, dx ;pamiec ekranu ekranu jako zrodlo mov si, 0 ;offset 0 rep movsb ;kopiujemy ret endp ;=============================================================================== ;=============================================================================== GO: call USTAW call ODBIERZ mov di, 0 cmp es:[di], "*" jz DALEJ jmp GO DALEJ: call SCRTOMEM mov cx, 8 SLIJ: mov di, 0 call WYSLIJ loop SLIJ KONIEC: mov ax, 4c00h int 21h kod ends end start