Если файл был открыт, он должен быть закрыт. Открывается он функций 3dh и его дескриптор вернется в регистре AX. Для закрытия нам нужно будет это дескриптор сохранить.
AH 3eH BX дескриптор файла Возврат AX код ошибки если CF установлен к CY
Итак, будет пробовать, изменим "Шаг 40 - Функция 3dh - открытие файла" добавив функцию закрытия.
; сегмент смещение строки ; mov dx,offset str2 ; str2 DB 'Step 16 $' WriteStr PROC mov ah,09h int 21h ret WriteStr ENDP ; сегмент смещение строки ; mov dx, OFFSET FileName ; FileName DB '43.asm',0h OpenFileRead PROC mov ah,3dh mov al,0 int 21h ret OpenFileRead ENDP ; в BX дескриптор файла CloseFile PROC mov ah,3eh int 21h ret CloseFile ENDP
И теперь сама программа
MODEL SMALL STACK 256 DATASEG FileName DB '43.asm',0h OkStr DB 'OK','$' ErrorStr DB 'Error','$' CODESEG Start: mov ax,@data ; установка в ds адpеса mov ds,ax ; сегмента данных mov dx, OFFSET FileName ; имя файла CALL OpenFileRead jc Error ; проверить флаг mov bx,ax Call CloseFile mov dx,OFFSET OkStr jmp Write Error: mov dx,OFFSET ErrorStr Write: Call WriteStr Exit: mov ah,04Ch ; функция DOS выхода из пpогpаммы mov al,0h ; код возвpата int 21h ; Вызов DOS остановка пpогpаммы INCLUDE function.asm End Start
Мы просто после открытия файла если все было успешно, его закрыли.