Автор работы: Пользователь скрыл имя, 11 Января 2011 в 19:34, лекция
Язык ассемблера - это один из самых старых из всех существующих языков программирования. Когда-то это был один из основных языков программирования, без знания которого нельзя было заставить компьютер сделать что-либо полезное. Появились более удобные средства общения с компьютером. Но в отличии от других языков ассемблер не умирал, более того он это не смог сделать в принципе.
В случае возникновения ошибки операция устанавливает флаг CF в 1 и помещает в регистр AX код возврата: 03, 04 или 05 (см.табл.17.1). Код 05 свидетельствует либо о переполнении оглавления, либо о защите существующего файла атрибутом "только чтение". При завершении операции необходимо сначала проверить флаг CF, так как при создании файла возможна установка в регистре AX файлового номера 0005, который можно легко спутать с кодом ошибки 05 (нет доступа).
Запись файла: шест.40
Для записи файла используется функция DOS шест.40. При этом в регистре BX должен быть установлен файловый номер, в регистре CX - число записываемых байт, а в регистре DX - адрес области вывода. В следующем примере происходит запись 256 байт из области OUTREC:
HANDLE1 DW ?
OUTREC DB 256 DUP (' ')
MOV AH,40H ;Запрос записи
MOV BX,HANDLE1 ;Файловый номер
MOV CX,256 ;Длина записи
LEA DX,OUTREC ;Адрес области вывода
INT 21H ;Вызов DOS
JC error2 ;Проверка на ошибку
CMP AX,256 ;Все байты записаны?
JNE error3
Правильная операция записывает из памяти на диск все данные (256 байт), очищает флаг CF и устанавливает в регистре AX число действительно записанных байтов. Если диск переполнен, то число записанных байтов может отличаться от заданного числа. В случае неправильной операции флаг CF устанавливается в 1, а в регистр AX заносится код 05 (нет доступа) или 06 (ошибка файлового номера).
Закрытие файла: шест.3E
После завершения записи файла необходимо установить файловый номер в регистр BX и, используя функцию DOS шест.3E, закрыть файл. Эта операция записывает все оставшиеся еще данные из буфера на диск и корректирует оглавление и таблицу FAT.
MOV AH,3EH ;Запрос на закрытие файла
MOV BX,HANDLE1 ;Файловый номер
INT 21H ;Вызов DOS
В случае ошибки в регистре AX устанавливается код 06 (неправильный файловый номер).
ЧТЕНИЕ ДИСКОВОГО ФАЙЛА
В следующих разделах раскрыты требования для открытия и чтения дисковых файлов в расширенной версии DOS.
Открытие файла: шест.3D
Если в программе требуется прочитать дисковый файл, то прежде необходимо открыть его, используя функцию шест.3D. Эта операция проверяет правильность имени файла и его наличие на диске. При открытии регистр DX должен содержать адрес необходимой ASCIIZ-строки, а регистр AL - код доступа: