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


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


    любому   конкретному  ASSUME   множеством  разных путей,      за  его
    корректность отвечает программист.    В нашем примере предполагается,
    что сегментные регистры устанавливаются  до выполнения данного кус-
    ка программы. Если они установленыы неверно, то программа будет вы-
    полняться неправильно даже если ассемблирование прошло успешно.
      Первая команда увеличивает значение VAR1, находящейся в сегмен-
    те данных. Ассемблер полагает, что регистр DS указывает на сегмент
    DATA  в соответствии  с утверждением  ASSUME. Поскольку  регистр DS
    предполагается при  использовании данных по умолчанию,  то для этой
    команды ассемблер не  генерирует сегментный префикс. Сформированная
    этой инструкцией 4-байтовая машинная команда не содержит сегментно-
    го      префикса.
      Вторая команда определяет переменную  VAR2, которая находится в
    сегменте  названном  BUFFER.  Программа  сообщила  ассемблеру,  что
    дополнительный сегментный регистр указывает  на сегмент BUFFER. Для
    увеличения VAR2 ассемблер генерирует четырехбайтовую команду машин-
    ного языка,  но ей предшествует  команда с однобайтовым  префиксом,
    которая  отменяет   использование  регистра  DS   в  этой  команде.
    Префиксный    байт 26H  говорит процессору  использовать при создании
    20-битового адреса памяти регистр ES.  В колонке объектных кодов на
    листинге ассемблер отмечает префиксную команду двоеточием.
      Третья      команда  изменяет  переменную  VAR3  в    сегменте  CODE.
    Утверждение ASSUME связывает этот сегмент с регистром CS. Ассемблер
    автоматически  генерирует  соответствующий  префикс  переназначения
    сегмента.  В  данном  случае  префикс  2EH  предписывает процессору
    использовать  при  вычислении  испольнительного  адреса регистр CS.
      Вначале  утверждение  ASSUME  покажется  излишеством.  В первое
    время при  написании программы естественно забывать  о его примене-
    нии. Ассемблер выдаст массу сообщений об ошибках чтобы помочь вам в



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