Пример: Глобальная сеть INTERNET
Я ищу:
На главную  |  Добавить в избранное  

Главная/

Радиоэлектроника, компьютеры и периферийные устройства. /

Вычислительныемашины и системы, 2 семестр

Документ 1 | Документ 2 | Документ 3 | Документ 4 | Документ 5 | Документ 6 | Документ 7 | Документ 8 | Документ 9 | Документ 10 | Документ 11 | Документ 12 | Документ 13 | Документ 14 | Документ 15 | Документ 16 | Документ 17 | Документ 18 | Документ 19 | Документ 20 | Документ 21

←предыдущая  следующая→
1 2 3 

                         ВТОРОЙ СЕМЕСТР

 

                           ЛЕКЦИЯ N 16

             я2МИКРОПРОЦЕССОРЫ СЕРИИ iX86 ФИРМЫ INTEL

                         ПРОЦЕССОР 80386

                        я2Новые инструкции

     В процессоре 80386 введены следующие новые инструкции:

             BSF     BTR     LFS     MOVZX

             BSR     BTS     LGS     SETxx

             BT      CDQ     LSS     SHLD

               BTC     CWDE    MOVSX   SHRD

                         Проверка битов

     Инструкциями проверки битов процессора 80386  являются  инс-

трукции BT, BTC, BTR и BTS. Инструкция BT - это основная инструк-

ция проверки битов,  копирующая значение заданного типа  во  флаг

переноса.  Например,  в  следующем фрагменте программы переход на

Bit3Is1 происходит только в том случае,  если бит 3 регистра  EAX

отличен от 0:

        bt      eax,3

        jc      Bit3Is1

        .

        .

Bit3Is1:

        .

        .

     Если EAX содержит значение 00000008h,  то в  этой  программе

произойдет  переход  на  Bit3Is1.  Если  же EAX содержит значение

0FFFFFF7h,  то переход выполнен не будет. Первый операнд инструк-

ции  BT представляет собой 16- или 32-разрядный общий регистр или

ячейку памяти,  содержащую проверяемый бит.  Второй операнд - это

номер проверяемого бита, заданный 8-битовым непосредственным зна-

чением или содержимым 16- или 32-разрядного общего регистра. Если

в  качестве  второго операнд используется регистр,  то его размер

должен совпадать с размером первого операнда.  Номер проверяемого

бита может задаваться как регистром,  так и непосредственным зна-

чением, а поле, в котором проверяется бит, может представлять со-

бой как ячейку памяти, так и регистр.

     Инструкция BTC  аналогична инструкции BT,  только копируемое

во флаг переноса значение представляет собой дополнение заданного

бита.  То  есть флаг переноса устанавливается в значение 1,  если


                              - 2 -

заданный бит равен 0,  и в значение 0, если заданный бит равен 1.

Инструкция  BTC  устраняет необходимость использования инструкции

CMC,  когда требуется задать состояние флага  переноса,  обратное

значению проверяемого бита.

     Инструкция BTR также аналогична инструкции BT,  но после ко-

пирования проверяемого бита во флаг переноса его значение  стано-

вится равным 0. Аналогично, инструкция BTS устанавливает проверя-

емый  бит,  копируемый  во  флаг  переноса,  в  значение  1.  Эти

инструкции проверки полезно использовать для анализа и установки

состояния флага в одной операции (при этом  подразумевается,  что

не  может произойти прерывание между проверкой флага и установкой

его в новое значение).

                         Просмотр битов

     Для нахождения  первого  или последнего ненулевого бита опе-

ранда размером в слово или двойное слово полезно использовать ин-

струкции  BSF  и BSR.  Инструкция BSF просматривает исходный опе-

ранд,  начиная с бита 0 (младший бит), определяя первый ненулевой

бит.  Если все биты операнда-источника являются нулевыми, то флаг

нуля очищается. В противном случае флаг нуля устанавливается, а в

целевой  регистр  (приемник)  копируется номер первого найденного

ненулевого бита.

     Второй операнд инструкции BFS - это 16- или 32-разрядный об-

щий регистр или просматриваемая ячейка памяти, а первый операнд -

это 16- или 32-разрядный общий регистр,  в который будет  записы-

ваться  номер  первого  ненулевого бита в просматриваемых данных.

Оба операнда должны иметь одинаковый размер.

     Инструкция BSR аналогична инструкции BFS,  но  просмотр  она

начинает со старшего (наиболее значащего) бита операнда-источника

к младшему биту.

       Перемещение данных с расширением по знаку или нулю

     Инструкции MOVZX и MOVSX позволяют вам копировать 8- или 16-

разрядное значение в 16- или 32-разрядный общий регистр без необ-

ходимости использования лишних инструкций для расширения значения

до  заданного  размера.  Инструкция  MOVZX заполняет старшие биты

приемника нулями, а инструкция MOVSX распространяет знак значения

в  соответствии  с размером приемника.  Обе инструкции аналогичны

стандартной инструкции MOV.

           Преобразование данных типа DWORD или QWORD

     Для преобразования значений со знаком размером в байт в  ре-

гистре  AL  в  значения  со знаком размером в слово и значений со

знаком в регистре AL размером в слово в значения со знаком разме-


                              - 3 -

ром  в  двойное  слово в процессоре 80386 предусмотрены соответс-

твенно инструкции CBW и CWD.  В процессор 80386 добавлены еще две

инструкции преобразования, CWDE и CDQ, которые облегчают работу с

32-разрядными регистрами процессора 80386.

     Инструкция CWDE преобразует значение со  знаком  размером  в

слово,  записанное в регистре AX, в значение со знаком размером в

двойное слово,  так же как инструкция CWD.  Различие между  этими

двумя инструкциями состоит в том, что в то время как CWD помещает

32-разрядный результат в DX:AX, инструкция CWDE помещает помещает

32-разрядный результат в регистр EAX, который можно затем исполь-

зовать в 32-разрядных инструкциях процессора 80386.

     Инструкция CWD  преобразует  значение  со  знаком размером в

двойное слово в регистре EAX в значение со  знаком (8-байтовое)

в EDX:EAX.

                      Сдвиг нескольких слов

     Инструкции процессора 80386 SHRD и SHLD,  обеспечивают сдвиг

на несколько битов двух регистров или регистра и ячейки памяти.

     Первый операнд инструкции SHLD - это 16- или 32-разрядный об-

щий регистр или ячейка памяти, для которых нужно выполнить сдвиг.

Второй операнд представляет собой 16- или 32-разрядный регистр, в

который нужно выполнить сдвиг,  а третий операнд - это число  би-

тов, на которые нужно осуществить сдвиг. Размеры первого и второ-

го операнда должны совпадать.  Третий операнд должен представлять

собой непосредственное значение или регистр CL.  В последнем слу-

чае целевой операнд сдвигается на число битов,  определяемый  ре-

гистров CL.

     Инструкция SHRD  аналогична инструкции SHLD,  однако она вы-

полняет сдвиг из наиболее значащего (старшего) бита в направлении

младших битов.

                    Условная установка битов

     Общее применение для условных проверок и переходов состоит в

установке значения ячейки  памяти,  чтобы  отразить  определенное

состояние.  Например, может оказаться желательным установить зна-

чение двух переменных,  что две переменные равны, указатель равен

нулю,  или  в  предыдущей  операции был установлен флаг переноса.

В процессоре  80386 для ускорения таких операций проверки и уста-

новки предусмотрена мощная

←предыдущая  следующая→
1 2 3 


Copyright © 2005—2007 «RefStore.Ru»