Untitled
unknown
plain_text
2 years ago
2.4 kB
12
Indexable
v.386 .model small, c ;---------------------------------------------------------------- ; Stek segment stack_seg SEGMENT stack DB 100 DUP(?) stack_seg ENDS ;---------------------------------------------------------------- ; Podatocen segment data_seg SEGMENT USE16 'DATA' folder db "papka", 0h filename db "text.txt", 0h buffer db 512 dup('$') buffer_end db '$' data_seg ENDS ;---------------------------------------------------------------- ; Koden segment code_seg SEGMENT USE16 'CODE' ASSUME cs:code_seg, ds:data_seg start: ; Postavuvanje na adresata na DATA segmentot vo DS mov ax, data_seg mov ds, ax ;---------------------------------------------------------------- ; Glavna procedura main PROC mov ax, data_seg mov ds, ax ; Kreiraj direktorium i postavi se na nego mov ah, 039h lea dx, folder int 21h mov ah, 03bh lea dx, folder int 21h ; Kreiraj datoteka, i otvori ja za pisuvanje mov ah, 03ch mov cx, 0 ; Atributi lea dx, filename int 21h mov ah, 03dh mov al, 01h ; Mod za pristap lea dx, filename int 21h mov bx, ax ; File-handle ; Pocetna pozicija za smestuvanje na vneseniot tekst vo baferot lea di, buffer ; Loop za vnesuvanje na tekstot input_loop: ; Procitaj karakter od tastatura mov ah, 01h int 21h ; Ako Esc e pritisnat, zavrsi so vnesuvanje na tekst cmp al, 1Bh je end_input_loop ; Ako Enter e pritisnat, isprintaj go noviot red i dodadi go vo baferot cmp al, 0Dh je newline_pressed ; Ako ne, isprintaj go karakterot i dodadi go vo baferot mov ah, 02h mov dl, al int 21h stosb ; Stavi go karakterot vo baferot jmp input_loop newline_pressed: ; Isprintaj nov red na ekranot i dodadi go na baferot mov ah, 02h mov dl, 0Ah int 21h mov dl, 0Dh int 21h stosw ; Stavi gi karakterite za nov red vo baferot jmp input_loop end_input_loop: ; Stavi kraj na baferot lea si, buffer_end mov al, '$' stosb ; Zapisi go tekstot vo datotekata lea si, buffer mov cx, si sub cx, buffer_end neg cx ; cx ke bidi negativen bidejki smestuvame vo obraten redosled lea dx, filename mov ah, 40h int 21h ; Zatvori ja datotekata mov ah, 3Eh int 21h main ENDP ;---------------------------------------------------------------- ; Kraj na programata ; Interapt za prekin na izvrsuvanjeto, za da se vrati kontrolata na debagerot mov
Editor is loading...