|
Косвенная регистровая адресацияПри таком способе адресации определяемый операнд берется из памяти или отправляется в память, но адрес не фиксируется жестко в команде, как при прямой адресации. Вместо этого адрес содержится в регистре. Если адрес используется таким образом, он называетсяуказателем. Преимущество косвенной адресации состоит в том, что можно обращаться к памяти, не имея в команде полного адреса. Кроме того, при разных выполнениях данной команды можно использовать разные слова памяти. Пример команды для загрузки числа, адрес которого находится регистре EBX, в регистр EAX (т.е. регистр EBX является указателем) приведен ниже: MOV EAX, [EBX] Базовая адресация Часто нужно уметь обращаться к словам памяти по известному смещению. Подобное мы видели в примере реализации микроархитектуры, где локальные переменные определяются по смещению от регистра LV. Обращение к памяти по регистру и константе смещения называетсябазовой адресацией. Пример команды для загрузки числа, адрес которой задается регистром EBX (база) и величиной const, в регистр EAX приведен ниже: MOV EAX, [EBX+const] или MOV EAX, [EBX]+const Индексная адресация Индексная адресация применяется для доступа к элементам массива – для этого необходимо указать адрес массива и обратиться к нему через индексный регистр, содержащий индекс элемента. Например:
pole DW x0, x1, x2, x3,... ... MOV ESI, 0; индекс элемента (x0) MOV EAX, pole[ESI]; AEX = x0
Подведем итоги
Вопросы для самоконтроля 1. Назовите известные Вам способы адресации. В чем заключается суть каждого из способов? 2. Индивидуальные задания Попытайтесь объяснить следующие операции команды: · ADD EAX, [EBX]; · JMP [EAX]+100h; · MOV ESI, EAX. _______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________ Тема 5.6. Команды процессора Pentium II В результате изучения данной темы Вы будете:
Команды Pentium II представляют собой смесь команд 32-битного формата и команд, которые восходят к процессору 8088. Ниже приведены наиболее распространенные команды с целыми числами, которые широко используются в настоящее время. Этот список далеко не полный, поскольку в него не вошли команды с плавающей точкой, команды управления, а также некоторые редкие команды с целыми числами (например, использование 8-битного байта для выполнения поиска по таблице). Тем не менее, этот список дает представление о том, какие действия может выполнять Pentium II. Многие команды Pentium II обращаются к одному или к двум операндам, которые находятся или в регистрах, или в памяти. Например, бинарная команда ADD складывает два операнда, а унарная команда INC увеличивает значение одного операнда на 1. Некоторые команды схожи, например, команды сдвига могут сдвигать слово либо вправо, либо влево, а также могут рассматривать знаковый бит особо или нет. Большинство команд имеют несколько различных кодировок в зависимости от природы операндов, Поля SRC – это источники информации (SOURCE), они не изменяются. Поля DST – это пункты назначения (DESTINATION), они обычно изменяются командой. Существуют правила, определяющие, что может быть источником, а что пунктом назначения, но здесь мы не будем говорить о них. Многие команды имеют три варианта: для 8-, 16- и 32-битных операндов соответственно. Ниже приведены в основном 32-битные команды. Команды перемещения Ниже приведены команды, которые перемещают данные между частями машины: регистрами, памятью и стеком.
Арифметические команды Арифметические команды включают арифметические операции над числами со знаком и без знака. Для умножения и деления 64-битное произведение или делимое хранится в двух регистрах: ЕАХ (младшие биты) и EDX (старшие биты). Пример рассматриваемых команд приведен ниже.
Двоично-десятичные команды Включают в себя двоично-десятичную арифметику. Здесь каждый байт рассматривается как два 4-битных полубайта, каждый полубайт содержит 1 десятичный разряд (от 0 до 9). Комбинации битов от 1010 до 1111 не используются. Таким образом, 16-битное целое число может содержать десятичное число от 0 до 9999. Хотя такая форма хранения неэффективна, она устраняет необходимость переделывать десятичные входные данные в двоичные, а затем обратно в десятичные для вывода. Эти команды используются для выполнения арифметических действий над двоично-десятичными числами. Пример рассматриваемых команд приведен ниже.
Логические команды Логические команды и команды сдвига манипулируют битами в слове или байте. Ниже перечислены логические команды, поддерживаемые процессором Pentium II.
ЧТО ПРОИСХОДИТ ВО ВЗРОСЛОЙ ЖИЗНИ? Если вы все еще «неправильно» связаны с матерью, вы избегаете отделения и независимого взрослого существования... Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор... Что будет с Землей, если ось ее сместится на 6666 км? Что будет с Землей? - задался я вопросом... Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычислить, когда этот... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|