Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsia_8-11_Massivy-struktury.doc
Скачиваний:
11
Добавлен:
21.12.2018
Размер:
1.47 Mб
Скачать

8) Закрыть файл

Функция DOS 3Eh — Закрыть файл

Ввод:

АН = 3Eh

ВХ = идентификатор

Вывод:

CF = 0, если не произошла ошибка

CF = 1 и АХ = 6, если неправильный идентификатор

Если файл был открыт для записи, все файловые буфера сбрасываются на диск, устанавливается время модификации файла и записывается его новая длина.

9) Удаление файла

Функция DOS 41h — Удаление файла

Ввод:

АН = 41h

DS:DX = адрес ASCIZ-строки с полным именем файла

Вывод:

CF = 0, если файл удален

CF = 1 и АН = 02h, если файл не найден, 03h — если путь не найден, 05h — если доступ запрещен

Удалить файл можно только после того, как он будет закрыт, так как DOS будет продолжать выполнять запись в несуществующий файл, что может привести к разрушению файловой системы. Функция 41h не позволяет использовать маски (символы * и ? в имени файла) для удаления сразу нескольких файлов, хотя этого можно добиться, вызывая ее через недокументированную функцию 5D00h.

Основные функции для ввода символов с клавиатуры

Функции 7 и 8 прерывания 21H ожидают ввода символа, если буфер клавиатуры пуст; появление символа на экране не отображается.

Разница между этими функциями в том, что функция 8 распознаёт специальное сочетание клавиш "Ctrl+Break" (при активизации Ctrl+Break выполняется прерывание INT 23h – останов программы), а функция 7 игнорирует это сочетание клавиш.

Функции 7 и 8 возвращают введённый символ в регистр AL. Если AL содержит ASCII 0, то получен расширенный код. При этом необходимо повторить вызов прерывания с теми же параметрами, и в AL появится второй байт расширенного кода.

Расширенные клавишы ASCII (F1-F12, PageUp и т.п.)

Вход:

АН

07h

Выход:

AL

код символа

Вход:

АН

08h

Выход:

AL

код символа

Пример 1.

;--- получаем введённый символ

MOV AH,8 ; номер функции

INT 21H

CMP AL,0 ; проверяем на расширенный код

JE EXT_COD ; если да, то переход на анализ кода иначе –

; обработка символа анализ расширенного кода

EXT_COD:

INT 21H ; берём второй байт кода

CMP AL, 75 ; проверяем на "стрелка влево"

JE CUR_LEFT ; переход к обработчику

CMP AL, 77 ; проверяем на "стрелка вправо"

JE CUR_RIGHT ; переход к обработчику

Функция 01h – ожидание ввода символа с эхопечатью

Вход:

АН

01h

Выход:

AL

символ, полученный из STDIN

Функция 1 прерывания 21H ожидает ввода символа с клавиатуры, если её буфер пуст, а затем выводит его на экран в текущую позицию курсора.

Функция обрабатывает нажатие "Ctrl+Break". Введённый символ сохраняется в регистре AL. Если содержимое AL равно ASCII 0, то для получения расширенного кода необходимо повторить прерывание.

Функция 02h – вывод символа на STDOUT с проверкой на Ctrl+Break

Вход:

АН

02h

DL

символ, выводимый на устройство стандартного вывода

Выход:

Нет

---

Эта функция посылает символ из регистра DL на устройство стандартного вывода.

В DL можно записать как ASCII-код символа, так сам символ. В последнем случае символ заключается в одинарные кавычки. Если при выполнении этой функции была нажата комбинация клавиш Ctrl+Break, то выполняется прерывание INT 23h, которое по умолчанию осуществляет выход из программы.

Данная функция обрабатывает некоторые управляющие символы:

Выводимый символ

Действие

BEL (07h)

появляется звуковой сигнал

BS (08h)

курсор перемещается на одну позицию влево

НТ (09h)

используется для замены на несколько пробелов

LF (0Ah)

перевод курсора на одну позицию вниз

CR (0Dh)

переход на начало текущей строки

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]