- •Московский государственный университет
- •3. Рекомендуемая литература для подготовки к лабораторным работам:
- •5. Порядок сдачи лабораторной работы:
- •6. Основной теоретический материал для выполнения лабораторных работ Общий формат команды Ассемблера
- •Структура простейшего программного модуля. Сегментирование
- •Функции bios
- •Int 10h: Видео сервис
- •Функции os
- •Ввод-вывод текстовых данных
- •Завершение программы
- •Работа с файлами
- •7.Задания на выполнение лабораторных работ Задание на лабораторную работу №1: программирование операций ввода-вывода для стандартных устройств.
- •Задание на лабораторную работу 2
Работа с файлами
Функция 3ch: Создать файл через дескриптор
Вход AH = 3ch
DS:DX = адрес строки ASCIIZ с именем файла
CX = атрибут файла
Выход AX = код ошибки, если CF установлен
АХ = дескриптор файла, если ошибки нет
Описание: DS:DX указывает на строку ASCIIZ в формате: "d:\путь\имяфайла",0. Если диск и/или путь опущены, они принимаются по умолчанию. файл создается в указанном (или текущем) каталоге файл открывается в режиме доступа чтение/запись вы должны сохранить дескриптор (handle) для последующих операций, если файл уже существует:
при открытии файл усекается до нулевой длины
если атрибут файла - только чтение, открытие отвергается (атрибут можно изменить функцией 43h Изменить Атрибут)
CONFIG.SYS определяет число доступных дескрипторов в системе
Используйте функцию 5bh Создать Новый Файл, если вы не хотите
испортить существующий файл.
Функция 5bh: Создать новый файл
Вход AH = 5bh DOS 3.0+
DS:DX = адрес строки ASCIIZ с именем файла
CX = атрибут файла
Выход AX = код ошибки, если CF установлен
АХ = дескриптор файла, если ошибок нет
Описание: DS:DX указывает на строку ASCIIZ в форме: "d:\путь\имя_файла",0. Если диск и/или путь опущены, они принимаются по умолчанию. Этот вызов идентичен функции DOS 3ch CREATE, с тем исключением, что он вернет ошибку, если файл с заданным именем уже существует. Файл открывается для чтения/записи в совместимом Режиме Доступа.
Функция 40h: Писать в файл через дескриптор
Вход AH = 40h
BX = дескриптор файла
DS:DX = адрес буфера, содержащего записываемые данные
CX = число записываемых байтов
Выход AX = код ошибки, если CF установлен
AL = число реально считанных байтов
Описание: CX байт данных записывается в файл или на устройство с дескриптором, заданным в BX. Данные берутся из буфера, адресуемого через DS:DX. Данные записываются, начиная с текущей позиции указателя чтения/записи файла. Используйте функцию 42h LSEEK, чтобы установить указатель файла, если необходимо (OPEN сбрасывает указатель в 0). Обновляет указатель чтения/записи файла, чтобы подготовиться к последующим операциям последовательного чтения или записи. Вы должны всегда сравнивать возвращаемое значение AX (число записанных байтов) с CX (запрошенное число байтов для записи). При этом: если AX = CX, запись была успешной, если AX < CX, встретилась ошибка (вероятно, переполнение).
Замечание: Эта функция превосходит сложные и неудобные FCB-функции. Она эффективно сочетает произвольный и последовательный доступ, позволяя пользователю осуществлять собственное блокирование. Удобно использовать эту функцию для вывода на стандартные устройства, такие как стандартный вывод, взамен использования различных функций вывода текста.
если AX = CX, запись была успешной, если AX < CX, встретилась ошибка (вероятно, переполнение).
Замечание: Эта функция превосходит сложные и неудобные FCB-функции. Она эффективно сочетает произвольный и последовательный доступ, позволяя пользователю осуществлять собственное блокирование. Удобно использовать эту функцию для вывода на стандартные устройства, такие как стандартный вывод, взамен использования различных функций вывода текста.