Untitled
unknown
plain_text
2 years ago
2.4 kB
13
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...