Определение DS программы-регистратора из обработчика прерывания

Тема в разделе "WASM.BEGINNERS", создана пользователем simnet_, 18 дек 2007.

  1. simnet_

    simnet_ New Member

    Публикаций:
    0
    Регистрация:
    18 дек 2007
    Сообщения:
    109
    Есть обработчик прерывания (таймера), который находится в сегменте кода некоторой программы. Подскажите, каким образом определяется положение сегмента данных моей программы в этом обработчике? Т. е., в примере

    ...
    int data
    ...
    void interrupt timer_handler() {
    asm {
    mov ax, seg data
    mov ds, ax
    }
    }

    не могу понять, как этот "обработчик" (скорее, как я догадываюсь, компилятор) узнает сегмент переменной data. Что-ли на основе CS высчитывает (при исполнении обработчика это, кажется, единственное, что связывает мою программу и обработчик). Если можно, объясните поподробней :) Заранее спасибо