Использование системных функций
Системные функции MS-DOS и BIOS (Basic Input/Output System — базовая система ввода/вывода) предоставляют довольно широкие возможности по управлению внешними устройствами — дисками, видеосистемой, таймерами, манипулятором мыши и т. п. Интерфейс их вызова из программ, написанных на языке ассемблера, построен на использовании программного прерывания — машинной команды INT — по следующей схеме:
В принятой схеме аргумент п в команде INT задает номер группы системных функций, код регистра АН — номер подфункции, а содержимое других регистров, если это необходимо, рассматривается как исходные данные для работы выбранной подфункции. Результат работы системной функции также заносится в машинные регистры, содержимое которых должно быть сохранено для последующей обработки.
Перечень машинных регистров, задействованных в обработке программных прерываний, приведен в табл. 10.1. Вас не должно смущать, что некоторые из терминов в этой таблице использованы без детального объяснения.
Таблица 10.1. Машинные регистры обработки программных прерываний
Регистр |
Назначение |
||
АХ |
Основной сумматор. Используется и в качестве регистра данных при обмене с портами |
||
вх |
Дополнительный сумматор. Чаще используется как начальный адрес (база) в командах с индексной адресацией |
||
сх |
Счетчик циклов. Может использоваться в качестве операнда в арифметических операциях |
||
DX |
Основной регистр в операциях ввода/вывода. В сочетании с АХ используется как часть 32-разрядного сумматора в "длинной арифметике" |
||
Регистр |
Назначение |
||
ВР | Указатель базы. Используется для организации локальных стеков в процедурах и функциях | ||
SI | В сочетании с базой сегмента данных (регистр DS) задает адрес источника информации (индекс источника) | ||
DI | В сочетании с базой сегмента данных (регистр DS) задает адрес приемника информации (индекс приемника) | ||
DS | Начальный адрес (база) основного сегмента данных | ||
ES | Регистр базы дополнительного сегмента данных | ||
Flags |
Регистр с битами признаков состояния центрального процессора |
||