Шаг 40 - Функция 3dh - открытие файла

Итак, мы с Вами научимся открывать файл:

AH 	3dH
AL 	Режим доступа (0 = чтение, 1 = запись, 2 = оба, и т.д.)
DS:DX 	адрес ASCII  Строки с нулевым символом в конце
Возврат
AX 	код ошибки если CF установлен к CY
	Дескриптор файла, если нет ошибок

Давайте пробовать. Вот код.

MODEL SMALL
STACK 256
DATASEG
	FileName DB '40.asm',0h
	OkStr	 DB 'OK','$'
	ErrorStr DB 'Error','$'
CODESEG
Start:
	
	mov ax,@data 		; установка в ds адpеса
	mov ds,ax 		; сегмента данных
	mov ah,3dh		; функция открытия файла
	mov al,0			; читать
	mov dx, OFFSET FileName	; имя файла
	int 21h			; выполнить
	jc Error			; проверить флаг
	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

Я функцию печати вынес в INСLUDE файл и создал там процедуру печати строки.

; сегмент смещение строки
; mov dx,offset  str2
; str2     DB 'Step 16 $'

WriteStr    PROC   
     	mov ah,09h
        	int 21h
        	ret
WriteStr  ENDP

Для того, что бы обнаружить ошибку я использовал условный переход jc, со списком переходов мы познакомимся очень скоро. Проверив результат, мы выводим две надписи в зависимости от успеха.


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