Практика программирования (Бейсик, Си, Паскаль)



         

Глава 10.


Использование системных функций

Системные функции MS-DOS и BIOS (Basic Input/Output System — базовая система ввода/вывода) предоставляют довольно широкие возможности по управлению внешними устройствами — дисками, видеосистемой, таймерами, манипулятором мыши и т. п. Интерфейс их вызова из программ, написанных на языке ассемблера, построен на использовании программного прерывания — машинной команды INT — по следующей схеме:

  • запоминание в стеке содержимого регистров центрального процессора;

  • формирование в регистрах исходной информации для работы системной функции INT n;

  • извлечение из регистров результатов работы системной функции;
  • восстановление регистров по информации из стека.

    В принятой схеме аргумент п в команде INT задает номер группы системных функций, код регистра АН — номер подфункции, а содержимое других регистров, если это необходимо, рассматривается как исходные данные для работы выбранной подфункции. Результат работы системной функции также заносится в машинные регистры, содержимое которых должно быть сохранено для последующей обработки.

    Перечень машинных регистров, задействованных в обработке программных прерываний, приведен в табл. 10.1. Вас не должно смущать, что некоторые из терминов в этой таблице использованы без детального объяснения.

    Таблица 10.1. Машинные регистры обработки программных прерываний

    Регистр

    Назначение

    АХ

    Основной сумматор. Используется и в качестве регистра данных при обмене с портами

    вх

    Дополнительный сумматор. Чаще используется как начальный адрес (база) в командах с индексной адресацией

    сх

    Счетчик циклов. Может использоваться в качестве операнда в арифметических операциях

    DX

    Основной регистр в операциях ввода/вывода. В сочетании с АХ используется как часть 32-разрядного сумматора в "длинной арифметике"

    Регистр

    Назначение

    ВР Указатель базы. Используется для организации локальных стеков в процедурах и функциях
    SI В сочетании с базой сегмента данных (регистр DS) задает адрес источника информации (индекс источника)
    DI В сочетании с базой сегмента данных (регистр DS) задает адрес приемника информации (индекс приемника)
    DS Начальный адрес (база) основного сегмента данных
    ES Регистр базы дополнительного сегмента данных

    Flags

    Регистр с битами признаков состояния центрального процессора

    <


    Содержание    Вперед