IDEAL
MODEL Small
STACK 256
DATASEG
exCode DB 0
Symb db '0'
Hand dw 0
Dir1 db 'e:\bp',0
Text1 db 'FileName is: $'
Text2 db 0Ah,0Dh,'File not found!$'
Text3 db 0Ah,0Dh,'Number of tapes: $'
FileNameCol db 120
FileNameFakt db 0
FilenameStr db 130 dup(0)
summa db '0'
CODESEG
proc Nofile
mov dx,offset Text2
mov ah,9
int 21h
ret
endp
Start:
mov ax,@data
mov ds,ax
mov es,ax
mov dx,offset Text1
mov ah,9h
int 21h ;вивід запрошення
mov dx,offset FileNameCol ;початок буфера вводу
mov ah,0ah
int 21h ;ввід стрічки з клавіатури
xor bx,bx ;bx=0
mov bl,[FileNameFakt] ;bl=кількість букв в імені
mov si,offset FilenameStr ;початок тексту
mov [si+bx],0 ;обнуляємо останній байт 0D
mov dx,offset Dir1 ;початок назви каталогу
mov ah,3bh
int 21h ;встановка каталогу
jc Exit
mov dx,offset FilenameStr ;початок назви файла
mov ah,3dh
mov al,0
int 21h ;відкриття файла
jnc m3
call NoFile
jmp Exit
m3:
mov [hand],ax ;збереження номера файла
lich:
inc [summa]
m1:
mov bx,[hand] ;встановити номер файла
mov cx,1
mov dx,offset Symb ;початок буфера для тексту з файла
mov ah,3fh
int 21h ;читання з файла
jc m2
cmp ax,0 ;до кінця файла ?
jz m2
mov ah,2
mov dl,[symb]
cmp dl,13
je lich
int 21h ;друк зчитаного символа
jmp m1
m2:
mov bx,[hand]
mov ah,3eh
int 21h ;закриття файла
Код програми який уже є, потрібно дописати команди які будуть створювати файл і переписувати в нього дані з попереднього в зворотньому порядку.