Пример: чтение из последовательного файла Data segment para public ‘data’ specfile db ‘f: 1120rez. dat’, 0 handle dw ? Filesize dw ? Buf 1 db 2000 dup(? ) Data ends ……… Code segment ………. mov ah, 30 h ; open file mov al, 0 ; для чтения lea dx, specfile int 21 h jc error 1 mov handle, ax ; сохранение FM ; Перемещение FP в конец файла mov ah, 42 h mov bx, handle ; FH bx mov al, 2 ; смещение от конца файла xor cx, cx xor dx, dx ; смещение cx: dx = 0 int 21 h jc error 2 mov Filesize, ax ; Перемещение FP в начало файла mov ah, 42 h mov al, 0 ; смещение от начала файла xor cx, cx xor dx, dx int 21 h jc error 2 ; Чтение всего файла (до 2000 байт) mov ah, 3 Fh mov bx, handle mov cx, Filesize lea dx, Buf 1 ; mov dx, offset Buf 1 int 21 h jc error 3 ……. . ; Закрытие файла mov ah, 3 Eh mov bx, handle int 21 h jc error 4
Пример2: Запись в файл – прямой доступ к 21 записи длиной 80 байт Data segment para public ‘data’ specfile db ‘f: 1120rez. dat’, 0 handle dw ? Buf 2 db 80 dup(? ) Data ends ……… Code segment ………. mov ah, 3 Dh mov al, 1 ; режим доступа – запись lea dx, specfile int 21 h ; open file jc error 1 mov handle, ax ; Вычисление позиции записи и перемещение FP mov ax, 80 mov bx, 21 ; номер записи 21 (нумерация с 0) mul bx mov cx, dx mov dx, ax ; смещение к записи в CX: DX mov al, 0 ; смещение с начала файла mov ah, 42 h ; функ. позиционирования FP mov bx, handle int 21 h jc error 2 ; Прямая запись в файл (запись номер 21) mov ah, 40 h ; функция записи в файл mov bx, handle mov cx, 80 ; длина записи lea dx, Buf 2 ; адрес записи DS: DX int 21 h jc error 5 ……. . ; Закрытие файла mov ah, 3 Eh mov bx, handle int 21 h jc error 4