ВІКІСТОРІНКА
Навигация:
Інформатика
Історія
Автоматизація
Адміністрування
Антропологія
Архітектура
Біологія
Будівництво
Бухгалтерія
Військова наука
Виробництво
Географія
Геологія
Господарство
Демографія
Екологія
Економіка
Електроніка
Енергетика
Журналістика
Кінематографія
Комп'ютеризація
Креслення
Кулінарія
Культура
Культура
Лінгвістика
Література
Лексикологія
Логіка
Маркетинг
Математика
Медицина
Менеджмент
Металургія
Метрологія
Мистецтво
Музика
Наукознавство
Освіта
Охорона Праці
Підприємництво
Педагогіка
Поліграфія
Право
Приладобудування
Програмування
Психологія
Радіозв'язок
Релігія
Риторика
Соціологія
Спорт
Стандартизація
Статистика
Технології
Торгівля
Транспорт
Фізіологія
Фізика
Філософія
Фінанси
Фармакологія


ГЛАВА 17. Дисковая память III: Расширенные функции DOS

------------------------------------------------------------ Дисковая память III: Расширенные функции DOS Цель: Ознакомить с расширенными функциями DOS, начиная сверсии 2.0 для обработки дисковых файлов. ВВЕДЕНИЕ------------------------------------------------------------ Функции базовой версии DOS для обработки файлов, показанные в главе 16, действительны для всех последующих версийDOS. В данной главе показаны ряд расширенных функций, введенных в версиях DOS 2.0 и 3.0 и не поддерживаемых в ранних версиях. Прежде, чем пытаться выполнить дисковые операции изданной главы, следует убедиться в наличии необходимой версииDOS. Многие из расширенных функций проще своих аналогов в базовой версии DOS. В руководствах по DOS рекомендуется использовать новые функции, которые более естественны для системтипа UNIX. Некоторые операции включают использование строкв формате ASCIIZ для начальной установки дисковода, путидоступа и имени файла; номера файла для последовательногодоступа к файлу; специальных кодов возврата. ДАННЫЕ В ФОРМАТЕ ASCIIZ------------------------------------------------------------ При использовании многих расширенных функций для дисковых операций необходимо сообщить DOS адрес строки в форматеASCIIZ, содержащей идентификацию файла в виде номера диско-вода, пути доступа и имени файла (все параметры необязательные) и строка должна завершаться шестнадцатеричным нулем,например: PATHNM1 DB 'B:\TEST.ASM',0 PATHNM2 DB 'C:\UTILITY\NU.EXE',0 Обратная косая (или прямая косая) используются в качестве разделителя. Нулевой байт (zero) завершает строку (отсюданазвание ASCIIZ формата). Для прерываний, использующих в качестве параметра ASCIIZ строку, адрес этой строки загружается в регистр DX, например, командой LEA DX,PATHNM1. ФАЙЛОВЫЙ НОМЕР И КОДЫ ВОЗВРАТА------------------------------------------------------------ Операции создания и открытия файла требуют загрузки врегистр AX двухбайтового числа, представляющего собой файловый номер. В главе 8 показано, что стандартные устройстване нуждаются в операции открытия и могут использоватьнепосредственно файловые номера: 0 - ввод, 1 - вывод, 2 -вывод сообщений об ошибках, 3 - внешнее устройство, 4 - принтер. Ассемблер для IBM PC. Глава 17. 2 Для доступа к диску при создании или открытии файла используется ASCIIZ строка и функции DOS шест. 3C или 3D. Успешная операция устанавливает флаг CF в 0 и помещает файловый номер в регистр AX. Этот номер необходимо сохранить вэлементе данных DW и использовать его для всех последующихопераций над дисковым файлом. При неуспешной операции флагCF устанавливается в 1, а в регистр AX помещается код ошиб-ки, зависящий от операции (см.табл.17.1). 01 Ошибка номера функции 02 Файл не найден 03 Путь доступа не найден 04 Открыто слишком много файлов 05 Нет доступа (Операция отвергнута) 06 Ошибка файлового номера 07 Блок управления памятью разрушен 08 Недостаточно памяти 09 Ошибка адреса блока памяти 10 Ошибка оборудования 11 Ошибка формата 12 Ошибка кода доступа 13 Ошибка данных 15 Ошибка дисковода 16 Попытка удалить оглавление 17 Другое устройство ? 18 Нет больше файлов СОЗДАНИЕ ДИСКОВОГО ФАЙЛА------------------------------------------------------------ В последующих разделах раскрыты требования к созданию,записи и закрытию дисковых файлов для расширенной версииDOS. Создание файла: Шест.3C Для создания нового файла или переписывания старого файлаиспользуется функция шест.3C. При этом регистр DX долженсодержать адрес ASCIIZ-строки, а регистр CX - необходимыйатрибут. Байт атрибут был рассмотрен в главе 15; для обычного файла значение атрибута - 0. Рассмотрим пример создания обычного файла: MOV AH,3CH ; Запрос на создание MOV CX,00 ; обычного файла LEA DX,PATHNM1 ; ASCIIZ строка INT 21H ; Вызов DOS JC error ; Переход по ошибке MOV HANDLE1,AX ; Сохранение файлового номера в DW При правильном открытии операция создает элемент оглавления с данным атрибутом, очищает флаг CF и устанавливаетфайловый номер в регистре AX. Этот номер должен использоваться для всех последующих операций. Если создаваемый файлуже существует (т.е. имя файла присутствует в оглавлении),то длина этого файла устанавливается в 0 для перезаписи. Ассемблер для IBM PC. Глава 17. 3 В случае возникновения ошибки операция устанавливает флаг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(неправильный файловый номер). ПРОГРАММА:ИСПОЛЬЗОВАНИЕ ФАЙЛОВОГО НОМЕРА ДЛЯ СОЗДАНИЯ ФАЙЛА.------------------------------------------------------------ Программа, приведенная на рис.17.2, создает файл поимени, которое вводится пользователем с клавиатуры. Впрограмме имеются следующие основные процедуры: Ассемблер для IBM PC. Глава 17. 4 C10CREA Использует функцию шест.3C для создания файла и сохраняет файловый номер в элементе данных по имени HANDLE.D10PROC Принимает ввод с клавиатуры и очищает пробелом байты от конца введенного имени до конца области ввода.F10WRIT Записывает файл, используя функцию шест.40.G10CLSE В завершении обработки, используя функцию шест.3E, закрывает файл для того, чтобы создать правильный элемент оглавления. Область ввода имеет длину 30 байтов и завершается двумябайтами: возврат каретки (шест.0DH) и конец строки (шест.0AH). Таким образом общая длина области ввода - 32 байта.Программа переносит на диск 32-x байтовые записи, как записификсированной длины. Можно опустить байты "возврат каретки"и "конец строки", но включить их, если потребуется сортировка файла. Программа DOS SORT требует наличия этих байтовдля индикации конца записей. Для нашего примера команда SORTможет выглядеть следующим образом: SORT B:<NAMEFILE.DAT >NAMEFILE.SRT В результате выполнения данной команды записи из файлаNAMEFILE.DAT в возрастающей последовательности будут помещены в файл NAMEFILE.SRT. Программа, приведенная на рис.17.3выполняет чтение записей из файла NAMEFILE.SRT и вывод ихна экран. Обратите внимание на два момента: 1) Символы воз-врат каретки и конец строки включены в конце каждой записитолько для выполнения сортировки и в других случаях могутбыть опущены. 2) Записи могут иметь переменную длину (подлине вводимых с клавиатуры имен); эта особенность включаетнекоторое дополнительное программирование, как это будет показано на рис.17.4. ------------------------------------------------------------------------------------------------------------------------Рис.17.2. Использование файлового номера для создания файла. ЧТЕНИЕ ДИСКОВОГО ФАЙЛА------------------------------------------------------------ В следующих разделах раскрыты требования для открытия ичтения дисковых файлов в расширенной версии DOS. Открытие файла: шест.3D Если в программе требуется прочитать дисковый файл, топрежде необходимо открыть его, используя функцию шест.3D.Эта операция проверяет правильность имени файла и его наличие на диске. При открытии регистр DX должен содержать адрес необходимой ASCIIZ-строки, а регистр AL - код доступа: 0 Открыть файл только для ввода 1 Открыть файл только для вывода Ассемблер для IBM PC. Глава 17. 5 2 Открыть файл для ввода и вывода Остальные биты регистра AL используются для разделения файлов DOS версии 3.0 и старше (см.техническое руководство поDOS). Обратите внимание, что для записи файла используетсяфункция создания (шест.3C), но не функция открытия файла.Ниже приведен пример открытия файла для чтения: MOV AH,3DH ; Запрос на открытие MOV AL,00 ; Только чтение LEA DX,PATHNM1 ; Строка в формате ASCIIZ INT 21H ; Вызов DOS JC error4 ; Выход по ошибке MOV HANDLE2,AX ; Сохранение номера в DW Если файл с необходимым именем существует, то операцияоткрытия устанавливает длину записи равной 1, принимаетсуществующий атрибут, сбрасывает флаг CF и заносит файловыйномер в регистр AX. Файловый номер используется в дальнейшем для всех последующих операций. Если файл отсутствует, то операция устанавливает флаг CFи заносит в регистр AX код ошибки: 02, 04, 05 или 12 (см.рис.17.1). Не забывайте проверять флаг CF. При успешномсоздании файла система может установить в регистре AX файловый номер 0005, что легко можно спутать с кодом ошибки 05(нет доступа). Чтение файла: Шест.3F Для чтения записей файла используется функция DOS шест.3F. При этом необходимо установить в регистре BX файловыйномер, в регистре CX - число байтов и в регистре DX - адресобласти ввода. В следующем примере происходит считывание512-байтовой записи: HANDLE2 DW ? INPREC DB 512 DUP (' ') MOV AH,3FH ; Запрос на чтение MOV BX,HANDLE2 ; Файловый номер MOV CX,512 ; Длина записи LEA DX,INPREC ; Адрес области ввода INT 21H ; Вызов DOS JC error5 ; Проверка на ошибку CMP AX,00 ; Прочитано 0 байтов? JE endfile Правильно выполненная операция считывает запись в память,сбрасывает флаг CF и устанавливает в регистре AX числодействительно прочитанных байтов. Нулевое значение в регистре AX обозначает попытку чтения после конца файла. Ошибочнаяоперация устанавливает флаг CF и возращает в регистре AXкод ошибки 05 (нет доступа) или 06 (ошибка файлового номера). Ассемблер для IBM PC. Глава 17. 6 Так как DOS ограничивает число одновременно открытыхфайлов, то программа, успешно отработавшая с несколькимифайлами, должна закрывать их. ПРОГРАММА: ИСПОЛЬЗОВАНИЕ ФАЙЛОВОГО НОМЕРА ДЛЯ ЧТЕНИЯ ФАЙЛА------------------------------------------------------------ На рис.17.3 приведена программа, которая читает файл,созданный предыдущей программой (см.рис.17.2) и отсортированный командой DOS SORT. Для открытия файла используетсяфункция шест.3D. Полученный в результате файловый номерзаносится в поле HANDLE и используется затем в функциишест.3F для чтения файла. В программе нет необходимости переносить курсор на новуюстроку, так как записи содержат в конце символы "возвраткаретки" и "новая строка". ASCII-ФАЙЛЫ (ФАЙЛЫ В ФОРМАТЕ ASCII)------------------------------------------------------------ В предыдущих примерах были показаны операции создания ичтения файлов. Аналогичным образом можно обрабатывать ASCII-файлы (текстовые файлы), созданные DOS или редактором. Дляэтого необходимо знать организацию оглавления и таблицы FAT,а также способ записи данных в сектор диска, используемыйсистемой. Система DOS записывает, например, ASM-файл в точном соответствии с вводом с клавиатуры, включая символы табуляции (шест.09), возврат каретки (шест.OD) и конец строки(шест.OA). Для экономии дисковой памяти DOS не записываетпробелы, которые находятся на экране и предшествуют символутабуляции, и пробелы, находящиеся в строке справа от символа"возврат каретки". Следующий пример иллюстрирует ассемблерную команду, как она может выглядеть на экране: <tab>MOV<tab>AH,09<return> ------------------------------------------------------------------------------------------------------------------------Рис.17.3. Использование файлового номера для чтения файла. Для такой строки содержимое ASCII-файла будет: 094D4F560941482C30390D0A Когда программа TYPE или редактор читают файл и выводятна экран символы "табуляция", "возврат каретки" и "конецстроки" автоматически выравнивают данные. Рассмотрим программу, приведенную на рис.17.4, котораячитает и выводит на экран файл HANREAD.ASM (пример на рис.17.3) по секторам. Если программа HANREAD уже введена ипроверена, то можно просто скопировать ее в файл с новымименем. ------------------------------------------------------------------------------------------------------------------------ Ассемблер для IBM PC. Глава 17. 7 Рис.17.3. Чтение ASCII-файла. Программа выполняет в основном те же функции, что и DOSTYPE, т.е. выводит на экран каждую запись до символов"возврат каретки" и "конец строки" (CR/LE). Прокруткасодержимого экрана (скроллинг) вызывает некоторые проблемы.Если в программе не будет предусмотрено специальной проверкина конец экрана, то вывод новых строк будет осуществлятьсяповрех старых и при короткой длине старые символы будутоставаться справа от новой строки. Для правильной прокруткинеобходимо подсчитывать строки и контролировать достижениеконца экрана. Так как строки ASCII-файла имеют переменнуюдлину, то следует определять конец каждой строки прежде, чемвыводить ее на экран. Рассматриваемая программа считывает полный сектор данныхв область SECTOR. Процедура G10XFER передает данные побайтноиз области SECTOR в область DISAREA, откуда они будутвыдаваться на экран. При обнаружении символа "конец строки",процедура выводит на экран содержимое DISAREA, включая"конец строки". (Экран дисплея принимает также символытабуляции (шест.09) и автоматически устанавливает курсор вследующую справа позицию кратную 8). В программе необходимо проверять конец сектора (длясчитывания следующего) и конец области вывода. Длястандартных ASCII-файлов, таких как ASM-файлы, каждая строкаимеет относительно короткую длину и гарантировано завершается парой символов CR/LF. Нетекстовые файлы, такие какEXE или OBJ, не имеют строк и поэтому рассматриваемая программа должна проверять достижение конца области DISAREA воизбежание разрушения. Хотя программа предназначена длявывода на экран только ASCII-файлов, она имеет проверкудля страховки от всяких неожиданных несимвольных файлов. Процедура G10XFER выполняет следующее:1. Инициализирует адрес области SECTOR.2. Инициализирует адрес области DISAREA.3. При достижении конца области SECTOR считывает следующий сектор. В случае конца файла, завершает работу программы, иначе инициализирует адрес области SECTOR.4. При достижении конца области DISAREA вставляет символы CR/LF, выводит строку на экран и инициализирует адрес DISAREA.5. Переписывает символ из области SECTOR в область DISAREA.6. По символу "конец файла" (шест.1A) завершает работу про граммы.7. По символу "конец строки" (шест.OA) выводит на экран строку и переходит на п.2, по другим символам идет на п.3. Попробуйте выполнить эту программу в отладчике DEBUG. Прикаждом вводе с диска просмотрите содержимое области ввода иобратите внимание на то, как DOS форматирует записи. Дляулучшения данной программы организуйте вывод на экранзапроса для указания пользователем имени и типа файла. Ассемблер для IBM PC. Глава 17. 8 ДРУГИЕ ДИСКОВЫЕ ФУНКЦИИ В РАСШИРЕННОЙ ВЕРСИИ DOS------------------------------------------------------------ Получение размера свободного дискового пространства: шест.36 Данная функция выдает информацию о дисковой памяти. Длявыполнения функции необходимо загрузить в регистр DL номердисковода (0 - текущий дисковод, 1 - A, 2 - B и т.д.): MOV AH,36H ; Запрос на MOV DL,0 ; текущий дисковод INT 21H ; Вызов DOS При указании неправильного номера дисковода операция возвращает в регистре AX шест.FFFF, иначе следующие значения: в AX число секторов на кластер в BX число доступных кластеров в CX число байтов на сектор в DX общее число кластеров на дисководе В версии DOS младше 2.0 для получения информации о дисковой памяти следует использовать функцию шест.1B (получитьинформацию из табблицы FAT). Удаление файла: шест.41 Для удаления файлов из программы (за исключением файлов сатрибутом "только чтение") используется функция шест.41.При этом в регистре DX необходимо загрузить ASCIIZ строку,содержащую путь доступа и имя файла: MOV AH,41H ; Запрос на удаление LEA DX,PATHNAM ; ASCIIZ-строка INT 21H ; Вызов DOS В случае ошибки в регистре AX возвращается код 02 (файлне найден) или 05 (нет доступа). Управление файловым указателем: шест.42 Система DOS имеет файловый указатель, который приоткрытии файла устанавливается в 0 и увеличивается на 1при последовательных операциях записи или считывания. Длядоступа к любым записям внутри файла можно менять файловыйуказатель с помощью функции шест.42, получая в результатепрямой доступ к записям файла. Для установки файлового указателя необходимо поместить врегистр BX файловый номер и в регистровую пару CX:DX требуемое смещение в байтах. Для смещений до 65.535 в регистре CXустанавливается 0, а в DX - смещение. В регистре AL долженбыть установлен один из кодов, который определяет точкуотсчета смещения: 0 - смещение от начала файла. Ассемблер для IBM PC. Глава 17. 9 1 - смещение текущего значения файлового указателя, которое может быть в любом месте, включая начало файла.2 - смещение от конца файла. Размер файла (и следовательно смещение до конца файла) можно определить, установив регистровую пару CX:DX в 0 и используя код 2 в регистре AL. В следующем примере устанавливается файловый указатель насмещение 1024 байта от начала файла: MOV AH,42H ; Установка указателя MOV AL,00 ; от начала файла LEA BX,HANDLE1 ; Установка файлового номера MOV CX,00 ; MOV DX,1024 ; Смещение 1024 байта INT 21H ; Вызов DOS JC error Правильно выполненная операция сбрасывает флаг CF и возвращает новый указатель в регистровой паре DX:AX. Неправильная операция устанавливает флаг CF в 1 и возвращает в регистре AX код 01 (ошибка кода отсчета) или 06 (ошибка файловогономера). Проверка или изменение атрибута: шест.43 Для проверки или изменения файлового атрибута в оглавлении диска используется функция шест.43H. При этом в регистреDX должен быть установлен адрес ASCIIZ строки. Для проверкиатрибута регистр AL должен содержать 00. Для измененияатрибута регистр AL должен содержать 01, а регистр CX -новое значение атрибута. Следующий пример устанавливаетнормальный атрибут: MOV AH,43H ; Запрос на установку MOV AL,01 ; нормального MOV CX,00 ; атрибута LEA DX,PATHNM2 ; ASCIIZ-строка INT 21H ; Вызов DOS В случае проверки функция возвращает текущий атрибут файла в регистре CX. В случае изменения функция устанавливаетв соответствующем элементе оглавления атрибут из регистраCX. Неправильная операция возвращает в регистре AX кодыошибок 02, 03 или 05. Получить текущее оглавление: шест.47 Определение текущего оглавления для любого дисководаосуществляется с помощью функции шест.47. При этом необходимо определить область памяти достаточно большую, чтобы содержать пути доступа максимальной длины и загрузить адрес этойобласти в регистр DX. Регистр DL должен содержать номердисковода: 0 - текущий, 1 - A, 2 - B и т.д. В результате Ассемблер для IBM PC. Глава 17. 10 выполнения операция помещает в область памяти имя текущейдиректории (без номера дисковода), например, в следующемвиде: ASSEMBLE\EXAMPLES Нулевой байт (шест.00) идентифицирует конец составногоимени пути доступа. Для корневой директории возвращаемоезначение состоит только из одного байта - шест.00. Такимобразом можно получить текущее имя пути доступа для любогофайла в подоглавлении. Пример на рис.17.5 демонстрируетиспользование данной функции. Поиск файлов по шаблону: шест.4E и шест.4F Данные функции аналогичны функциям шест. 11 и 12 базовойверсии DOS. Функция 4E используется для начала поиска в оглавлении, а функция 4F - для продолжения. Для начала поискав регистр DX необходимо загрузить адрес ASCIIZ-строки, содержащей имя пути доступа и шаблон поиска. Шаблон поиска можетвключать в себя символы ? и *. В регистре CX должно бытьзначение атрибута в любой комбинации битов (нормальный,оглавление, спрятанный или системный). MOV AH,4EH ; Запрос на начало поиска MOV CX,00H ; Нормальный атрибут LEA DX,PATHNM1 ; ASCIIZ-строка INT 21H ; Вызов DOS Если операция находит файл, удовлетворяющий шаблонупоиска, то в текущий буфер DTA в FCB заполняется следующейинформацией: 00 - резервировано DOS для последующего поиска 21 - атрибут файла 22 - время файла 24 - дата файла 26 - размер файла: младшее слово, затем старшее слово 30 - имя и тип в виде 13-байтовой ASCIIZ строки, завершаемой шест.00. В случае ошибки в регистре AX возвращается код 02 (ненайдено) или 18 (нет больше файлов). Для продолжения поискафайлов (после функции шест.4E) используется функция 4F.Между этими функциями не следует нарушать содержимое DTA. MOV AH,4FH ; Запрос на продолжение поиска INT 21H ; Вызов DOS Единственно возможный код в регистре AX - 18 (нет большефайлов). Обе рассмотренные функции не меняют состояние флагаCF. Переименование файла: шест. 56 Ассемблер для IBM PC. Глава 17. 11 Для переименования файла используется функция шест.56.При этом в регистр DX должен быть загружен адрес ASCIIZ-строки, содержащей старые значения дисковода, пути доступа,имени и типа файла, а в регистр DI (в действительностиES:DI) - адрес ASCIIZ-строки, содержащей новые значениядисковода, пути доступа, имени и типа файла. Если указывается номер дисковода, то он должен быть одинаков в обоихстроках. Путь доступа может быть различным, поэтому даннаяоперация может не только переименовывать файл, но и переносить его в другое подоглавление. MOV AH,56H ;Запрос на переименование файла LEA DX,oldstring ; DS:DX LEA DI,newstring ; ES:DI INT 21H ; Вызов DOS В случае ошибки регистр AX возвращает коды 03 (путь доступа не найден), 05 (нет доступа?) и 17 (разные дисководы). Другие функции DOS, имеющие отношение к дисковым файлам,включают создание подоглавления (шест.39), удаление элементаоглавления (шест.3A), изменение текущего оглавления (шест.3B), управление вводом-выводом для устройств (шест.44),дублирование файлового номера (шест.45), принудительноедублирование файлового номера (шест.46), получение состоянияпроверки ? (шест.54). ОСНОВНЫЕ ПОЛОЖЕНИЯ НА ПАМЯТЬ------------------------------------------------------------- Многие функции расширенной версии DOS оперируют с ASCIIZ- строками, которые содержат путь доступа и завершаются байтом, содержащим шест.00.- Функции создания и открытия возвращают значение файлового номера, который используется для последующего доступа к файлу.- В случае ошибок многие функции устанавливают флаг CF и помещают код ошибки в регистр AX.- Как правило, функция создания используется для записи файла, а открытия - для чтения.- После того, как файл записан на диск, его необходимо закрыть для того, чтобы в оглавление были внесены соот ветствующие изменения. ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ------------------------------------------------------------17.1. Какие значения кодов возврата для ситуаций "файл не найден" и "ошибка файлового номера" ?17.2. Определите ASCIIZ-строку по имени PATH1 для файла CUST.LST на дисководе C.17.3. Для предыдущего файла (п.17.2) напишите команды а) определения элемента по имени CUSTHAN для файлового номера, б) создание файла, в) записи файла из области CUSTOUT (128 байт) и г) закрытия файла. Обеспечьте проверку на ошибки. Ассемблер для IBM PC. Глава 17. 12 17.4. Для файла (п.17.3) напишите команды а) открытия файла и б) чтения файла в область CUSTIN. Обеспечьте конт роль ошибок.17.5. В каких случаях необходимо закрывать файл, который был открыт только для чтения ?17.6. Измените программу на рис.17.4 так, чтобы пользова тель мог вводить с клавиатуры имя файла, который необходимо выдать на экран. Обеспечьте возможность любого числа запросов и завершение программы только по пустому запросу, т.е. простому нажатию клавиши Return. Ассемблер для IBM PC. Глава 18. 1

© 2013 wikipage.com.ua - Дякуємо за посилання на wikipage.com.ua | Контакти