Assembler - язык неограниченных возможностей


Пересылка данных - часть 3


Чтобы обратить порядок байт в 16-битном регистре, следует использовать команду XCHG:

xchg al,ah ; обратить порядок байт в АХ

В процессорах Intel команду BSWAP можно использовать и для обращения порядка байт в 16-битных регистрах, но в некоторых совместимых процессорах других фирм этот вариант BSWAP не реализован.

  • Команда:
  • PUSH источник
  • Назначение:
  • Поместить данные в стек
  • Процессор:
  • 8086

    Помещает содержимое источника в стек. Источником может быть регистр, сегментный регистр, непосредственный операнд или переменная. Фактически эта команда копирует содержимое источника в память по адресу SS:[ESP] и уменьшает ESP на размер источника в байтах (2 или 4). Команда PUSH практически всегда используется в паре с POP (считать данные из стека). Так, например, чтобы скопировать содержимое одного сегментного регистра в другой (что нельзя выполнить одной командой MOV), можно использовать такую последовательность команд:

    push cs pop ds ; теперь DS указывает на тот же сегмент, что и CS

    Другое частое применение команд PUSH/POP — временное хранение переменных, например:

    push eax ; сохраняет текущее значение ЕАХ ... ; здесь располагаются какие-нибудь команды, ; которые используют ЕАХ, например CMPXCHG pop eax ; восстанавливает старое значение ЕАХ

    Начиная с 80286, команда PUSH ESP (или SP) помещает в стек значение ESP до того, как эта же команда его уменьшит, в то время как на 8086 SP помещался в стек уже уменьшенным на два.

  • Команда:
  • POP приемник
  • Назначение:
  • Считать данные из стека
  • Процессор:
  • 8086

    Помещает в приемник слово или двойное слово, находящееся в вершине стека, увеличивая ESP на 2 или 4 соответственно. POP выполняет действие, полностью обратное PUSH. Приемником может быть регистр общего назначения, сегментный регистр, кроме CS (чтобы загрузить CS из стека, надо воспользоваться командой RET), или переменная. Если в роли приемника выступает операнд, использующий ESP для косвенной адресации, команда POP вычисляет адрес операнда уже после того, как она увеличивает ESP.

  • Команда:
  • PUSHA
    PUSHAD
  • Назначение:
  • Поместить в стек все регистры общего назначения
  • Процессор:
  • 80186
    80386
    <


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