Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Команда безусловного перехода jmp

Поиск

shrd

операнд_1,операнд_2,счетчик_сдвигов — сдвиг вправо двойной точности.
Команда производит замену путём сдвига битов операнда операнд_1 вправо, заполняя его биты слева значениями битов, вытесняемых из операнд_2 согласно схеме на рис. 6. Количество сдвигаемых бит определяется значением счетчик_сдвигов, которое может лежать в диапазоне 0...31. Это значение может задаваться непосредственным операндом или содержаться в регистре cl. Значение операнд_2 не изменяется.

Рис. 6. Схема работы команды shrd

Как мы отметили, команды shld и shrd осуществляют сдвиги до 32 разрядов, но за счет особенностей задания операндов и алгоритма работы эти команды можно использовать для работы с полями длиной до 64 бит.
Например, рассмотрим, как можно осуществить сдвиг влево на 16 бит поля из 64 бит.

 

mov cl,16 ;загрузка счётчика сдвига в cl

mov eax,pole_h

shld pole_l,eax,cl

shl pole_h,cl ;pole_l=87f50000h, pole_h=6711b211h

 

 

Команды передачи управления

На предыдущих уроках мы познакомились с некоторыми командами, из которых формируются линейные участки программы. Каждая из них в общем случае выполняет некоторые действия по преобразованию или пересылке данных, после чего микропроцессор передаёт управление следующей команде. Но очень мало программ работают таким последовательным образом. Обычно в программе есть точки, в которых нужно принять решение о том, какая команда будет выполняться следующей. Это решение может быть

  • безусловным — в данной точке необходимо передать управление не той команде, которая идёт следующей, а другой, которая находится на некотором удалении от текущей команды;
  • условным — решение о том, какая команда будет выполняться следующей, принимается на основе анализа некоторых условий или данных.

Как вы помните, программа представляет собой последовательность команд и данных, занимающих определённое пространство оперативной памяти. Эта пространство памяти может быть либо непрерывным, либо состоять из нескольких фрагментов.
То, какая команда программы должна выполняться следующей, микропроцессор узнает по содержимому (e)ip:

  • eip/ip — регистр указателя команды, в котором находится значение, представляющее собой смещение в памяти следующей команды, подлежащей выполнению, относительно начала текущего сегмента кода.
    Напомню, почему мы записываем регистры eip/ip через косую черту. Какой конкретно регистр будет использоваться, зависит от установленного режима адресации use16 или use32. Если указано use16, то используется ip, если use32, то используется eip.

Таким образом, команды передачи управления изменяют содержимое регистра eip/ip, в результате чего микропроцессор выбирает для выполнения не следующую по порядку команду программы, а команду в некотором другом участке программы. Конвейер внутри микропроцессора при этом сбрасывается.


По принципу действия, команды микропроцессора, обеспечивающие организацию переходов в программе, можно разделить на четыре группы:

  1. Команды безусловной передачи управления:
    • команда безусловного перехода;
    • вызова процедуры и возврата из процедуры;
    • вызова программных прерываний и возврата из программных прерываний.
  2. Команды условной передачи управления:
    • команды перехода по результату команды сравнения cmp;
    • команды перехода по состоянию определённого флага;
    • команды перехода по содержимому регистра ecx/cx.

Безусловные переходы

Предыдущее обсуждение выявило некоторые детали механизма перехода. Команды перехода модифицируют регистр указателя команды eip/ip.

Синтаксис команды безусловного перехода
jmp [модификатор] адрес_перехода - безусловный переход без сохранения информации о точке возврата.

Адрес_перехода представляет собой адрес в виде метки либо адрес области памяти, в которой находится указатель перехода.



Поделиться:


Последнее изменение этой страницы: 2024-06-27; просмотров: 3; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.224.43.98 (0.006 с.)