Дисковая память 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-файла.
Программа выполняет в основном те же функции, что и DOS TYPE, т.е. выводит на экран каждую запись до символов "возврат каретки" и "конец строки" (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