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



Безусловные переходы - часть 2


    адреса в регистр CS.
 
      Программы могут модифицировать возвраты как типа NEAR, так и
    типа FAR, указывая параметр счетчика байтов. Команда возврата
    прибавляет его значение к указателю стека после извлечения из него
    адреса (адресов) возврата. Такая команда позволяет программе
    удалять параметры из стека без использования специальных команд
    POP; тем самым подчеркивается, что стек - носитель передаваемых
    подпрограмме параметров. Такой стиль работы со стеком мы уже
    обсуждали во всех подробностях ранее в разделе "Работа со стеком".
 
      Команды безусловного перехода JMP идентичны командам CALL по их
    возможностям адресации. Однако существует дополнительная команда
    перехода, указывающая однобайтовое смещение для близкого
    относительного перехода (команда короткого перехода).
    Соответствующей ей команды CALL не существует, так как вызовы
    подпрограмм, расположенных поблизости, происходят очень редко.
    Команды переходов используют те же методы генерации адреса, что и
    команды вызова.
 
      Сделаем сдесь замечание об оптимизации кода и о том, как
    работает ассемблер. По мере того, как ассемблер делает первый
    переход по тексту программы и назначает адреса командам, он должен
    решить, использовать двух= или трехбайтовую разновидность команды
    JMP. Если это переход назад, т.е. на место, уже известное
    ассемблеру, он может определить правильное смещение; тем самым
    ассемблер знает, находится ли переход в диапазоне короткого
    смещения. Однако, если переход делается вперед, на метку, о которой
    ассемблер еще не знает, он должен предположить, что метка находится
    далее, чем 128 байт от текущего места. Затем ассемблер порождает
    длинную форму команды перехода. Худший случай ассемблер обязан
    выбирать потому, что потом уже не может возвратиться назад и
    увеличить размер команды. Затем ассемблер заместит трехбайтовую
    команду перехода двухбайтовой командой JMP и однобайтовой командой



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