Прерывание 21h
В данном прерывании реализованы большинство сервисных функций, предоставляемых операционной системой MS DOS прикладным программам.
Здесь содержатся функции:
Консольного ввода – вывода информации.
Файлового ввода и вывода.
Работы с динамической памятью.
Работы с датой и временем.и др.
Регистр AH |
Операция |
Дополнительные входные регистры или данные |
2h |
Вывод символа с проверкой на Crtl-Break |
DL – ASCII код символа |
6h |
Вывод символа без проверки на Crtl-Break |
DL – ASCII код символа |
9h |
Вывод строки символов с проверкой на Ctrl-Break |
DS:DX – указатель на строку. Символ окончания строки: ‘$’ |
Функции консольного ввода
Регистр AH |
Операция |
Дополнительные входные регистры или данные |
Выходные регистры или данные |
1h |
Ввод символа с эхом и проверкой Ctrl-Break |
|
AL – ASCII код символа |
7h |
Ввод символа без эха и без проверки Ctrl-Break |
|
AL – ASCII код символа |
8h |
Ввод символа без эха но с проверкой Ctrl-Break |
|
AL – ASCII код символа |
Ah |
Ввод строки |
DS:DX – адрес буфера, первый байт буфера – длина буфера |
Второй байт – фактическая длина буфера |
Регистр AH |
Операция |
Входные данные |
Выходные данные |
3ch |
Создать файл |
DS:DX – имя файла ASCIIZ CX – атрибут файла |
AX – дескриптор открытого файла. Если CF установлен, то в AX – код ошибки |
5bh |
Создать новый файл, файл не должен существовать |
DS:DX – имя файла ASCIIZ CX – атрибут файла |
|
3dh |
Открыть файл |
DS:DX – имя файла ASCIIZ AL – режим открытия: 0 – только чтение, 1 – только запись, 2 – и чтение и запись |
|
3eh |
Закрыть файл |
BX – дескриптор файла |
AX – код ошибки, если CF установлен |
41h |
Удалить файл |
DS:DX – имя файла ASCIIZ |
AX – код ошибки, если CF установлен |
Регистр AH |
Операция |
Входные данные |
Выходные данные |
42h |
Установить указатель |
BX – дескриптор файла CX:DX – новое смещение AL: 0 от начала файла, 1 от текущей позиции, 2 от конца файла |
AX – код ошибки, если CF установлен DX:AX – новая позиция, если все нормально |
3fh |
Читать из файла |
BX – дескриптор файла DS:DX – адрес буфера CX – количество байт |
AX – код ошибки, если CF установлен, или фактическое число байт |
40h |
Записывать в файл |
Функции работы с памятью
Регистр AH |
Операция |
Входные данные |
Выходные данные |
48h |
Выделить блок памяти |
BX – количество параграфов |
AX – сегментный адрес выделенного блока, или код ошибки, если CF=1 BX – количество свободных параграфов |
49h |
Освободить блок памяти |
ES – сегментный адрес освобождаемой памяти |
AX –код ошибки, если CF=1 |
4ah |
Сжать или расширить блок памяти |
ES – сегментный адрес изменяемого блока BX – количество параграфов |
AX –код ошибки, если CF=1 BX – количество свободных параграфов |