Шаг 43 - Функция 3eh закрытия файла

Если файл был открыт, он должен быть закрыт. Открывается он функций 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

Мы просто после открытия файла если все было успешно, его закрыли.


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.