Assembler для начинающих


Оператор Assume - часть 2


    с учетом следующей  установки сегментных регистров:  регистр CS со-
    держит начальный адрес сегмента CODE, регистр DS указывает на DATA,
    а регистр     ES  определяет    сегмент  BUFFER.   Утверждение  ASSUME
    (полагать,    считать -  прим. перев.)  означает именно  то, что  оно
    предписывает  ассемблеру.  Ассемблер  обрабатывает      исходный  текст
    программы  предполагая,  что  сегментные  регистры      установлены как
    указано в этом утверждении. Установка сегментных регистров, сделан-
    ная в  этом утверждении, остается  при ассемблировании в  силе пока
    другое такое же утверждение не определит новые установки. Ассемблер
   обрабатывает эти  утверждения последовательно, даже  если программа
    ветвится  и закручивается  в циклы.  Утверждение ASSUME  остается в
    силе,  пока ассемблер  не встретит    при последовательном  просмотре
    программы следующее.  Заметим, что в утверждении  ASSUME не обязано
    определять    все сегментные    регистры. В  нашем примере  не объявлен
    регистр SS.  На практике содержимое сегментного  ргистра может быть
    временами  и неизвестно  в      программе.  В этих  случаях утверждение
    ASSUME должно указывать сегмент NOTHING. Например, утверждение
 
      ASSUME      ES:NOTHING
 
    сообщает ассемблеру, что программа    не знает, куда указывает допол-
    нительный сегментный регистр. Поскольку значение регистра неизвест-
    но, ассемблер не должен использовать его в адресных вычислениях.
      Важно отметить, что утверждение ASSUME не генерирует команд ма-
    шинного  языка. Это  директива ассемблеру  полагать, что сегментные
    регистры установлены в соответствии  с указанной в этом утверждении
    информацией.  Добиться  правильное    установки  сегментов  -  забота
    программиста. Аналогично, ассемблер не может проверить, что утверж-
    дение  ASSUME  при  выполнении  будет  соответствовать  содержимому
    сегментных    регистров. Из-за  того,  что  программа может  прийти к



- Начало -  - Назад -  - Вперед -