Команда Int 21h в ассемблере используется для вызова функций DOS. Она позволяет программам на ассемблере взаимодействовать с операционной системой DOS через интерфейс программирования приложений (API).
Описание:
Int 21h — это прерывание, которое вызывает функции DOS. После Int 21h следует номер функции, которую нужно вызвать. Например, Int 21h, 4Ch завершает программу, а Int 21h, 09h выводит символ новой строки.
Применение:
Int 21h используется для выполнения различных операций, таких как работа с файлами, управление памятью, ввод-вывод и другие. Например, Int 21h, 3Fh используется для чтения данных из файла, а Int 21h, 3Eh для записи данных в файл.
Введение
Прерывание Int 21h — это основной способ взаимодействия программ на ассемблере с операционной системой DOS. Оно предоставляет широкий спектр функций, позволяя выполнять задачи по управлению файлами, вводом-выводом, памятью и другими системными операциями.
Структура команды
Команда Int 21h вызывается с номером функции в регистре AH и, в зависимости от функции, может требовать дополнительные параметры в других регистрах.
Пример: Если хотите завершить программу и передать код завершения в операционную систему, необходимо использовать функцию 4Ch:
- AH = 4Ch — функция завершения программы
- AL = код завершения
Пример кода:
mov ah, 4Ch
mov al, 00h
int 21h
Этот код завершает программу с кодом завершения 0.
Основные функции Int 21h
Функции для работы с файлами
- 3Dh — Открытие файла:
- AH = 3Dh — номер функции
- DX = указатель на имя файла — полный путь к файлу
- AL = режим доступа — 0 (чтение), 1 (запись), 2 (чтение и запись) Возвращает дескриптор файла в регистре AX.
Пример:
mov ah, 3Dh
mov dx, offset FileName
mov al, 0
int 21h
mov Handle, ax
Этот код открывает файл в режиме чтения и сохраняет дескриптор файла в переменную Handle.
- 3Eh — Закрытие файла:
- AH = 3Eh — номер функции
- BX = дескриптор файла
Пример:
mov ah, 3Eh
mov bx, Handle
int 21h
Этот код закрывает файл с указанным дескриптором.
Функции ввода-вывода
- 09h — Вывод строки на экран:
- AH = 09h — номер функции
- DX = указатель на строку — строка должна оканчиваться символом $
Пример:
mov ah, 09h
mov dx, offset Message
int 21h
Этот код выводит строку на экран.
Управление памятью
- 48h — Выделение блока памяти:
- AH = 48h — номер функции
- BX = количество параграфов (один параграф = 16 байт) Возвращает сегментный адрес выделенного блока в AX.
Пример:
mov ah, 48h
mov bx, 10 ; выделяем 160 байт (10 параграфов)
int 21h
mov Segment, ax
Этот код выделяет 160 байт памяти и возвращает сегментный адрес.
Заключение
Int 21h — мощный инструмент для взаимодействия с операционной системой DOS. Он охватывает широкий спектр функций, от управления файлами и памятью до выполнения ввода-вывода и выполнения различных системных операций. Понимание и правильное использование Int 21h позволяет писать эффективные и мощные программы на ассемблере для DOS.