Об ассемблере



страница37/52
Дата14.08.2018
Размер3.59 Mb.
#43964
ТипЛекция
1   ...   33   34   35   36   37   38   39   40   ...   52

SHLD


(SHift Left Double word)

Сдвиг двойного слова влево

 


Схема команды: 

shld приемник,источник,количество_сдвигов 

Назначение: логический сдвиг двойного слова влево.

Синтаксис

Алгоритм работы:

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

  • одновременно сдвинуть операнд источник влево на количество битов, определяемое операндом количество_сдвигов. Важно заметить, что операнд источник только обеспечивает вдвигаемые в операнд приемник биты, сам он при этом не изменяется;

  • выдвигаемые во время сдвига влево из операнда источник биты вдвигаются в операнд приемник с его правого края.

Состояние флагов после выполнения команды:

11

07

06

04

02

00

OF

SF

ZF

AF

PF

CF

?

r

r

?



r

Применение:

Команда shld используется для манипуляции битовыми строками длиной до 64 бит. Эту команду удобно использовать для быстрой вставки (или извлечения) битной строки в большую битную строку; при этом, что очень важно, не разрушается контекст (битное окружение) этих подстрок.



.386

;извлечь старшую половину eax в bx без разрушения eax

        mov     cl,16

        shld    ebx,eax,cl

        push    bx

        shl     ebx,cl

        shld    eax,ebx,cl      ;восстановим eax pop bx

        


См. также: урок 9 и команды rcr, rcl, ror, rol, sar, sal, shr, shrd

SHR


Сдвиг логический операнда вправо

ASCII-коррекция после сложения

 


Схема команды: 

shr операнд,кол-во_сдвигов 

Назначение: логический сдвиг операнда вправо.

Синтаксис

Алгоритм работы:

  • сдвиг всех битов операнда вправо на один разряд; при этом выдвигаемый справа бит становится значением флага переноса cf;

  • одновременно слева в операнд вдвигается нулевой бит;

  • указанные выше два действия повторяются количество раз, равное значению второго операнда.

Состояние флагов после выполнения команды:

11

07

06

04

02

00

OF

SF

ZF

AF

PF

CF

?r

r

r

?



r

Применение:

Команда shr используется для логического сдвига разрядов операнда вправо. Так же, как и для других сдвигов, значение второго операнда (счетчика сдвига) ограничено диапазоном 0...31. Это объясняется тем, что микропроцессор использует только пять младших разрядов операнда количество_разрядов. В отличие от других команд сдвига, флаг of всегда сбрасывается в ноль в операциях сдвига на один разряд.

Команду shr можно использовать для деления целочисленных операндов без знака на степени 2.


        mov     cl,4

        shr     eax,cl  ;(eax) разделить на 2 в степени 4

        


См. также: урок 9 и команды rcr, rcl, ror, rol, sal, shl, sar

SHRD


(SHift Right Double word)

Сдвиг двойного слова вправо

 


Схема команды: 

shrd приемник,источник,количество_сдвигов 

Назначение: логический сдвиг двойного слова вправо.

Синтаксис

Алгоритм работы:

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

  • одновременно сдвинуть операнд источник вправо на количество битов, определяемое операндом количество_сдвигов. Важно заметить, что операнд источник только обеспечивает вдвигаемые в операнд приемник биты, сам он при этом не изменяется;

  • выдвигаемые вправо во время сдвига из операнда источник биты вдвигаются в операнд приемник с его левого конца.

Состояние флагов после выполнения команды:

11

07

06

04

02

00

OF

SF

ZF

AF

PF

CF

?

r

r

?



r

Применение:

Команда shrd используется для манипуляции битными строками длиной до 64 бит. Эту команду удобно использовать для быстрой вставки (или извлечения) битной строки в большую битную строку, при этом, что очень важно, не разрушается контекст (битное окружение) этих подстрок.



.386

;разделить операнд размером 64 бит на степень 2

op_l    dd      ...     ;младшая часть операнда

op_h    dd      ...     ;старшая часть операнда

...

        mov     eax,op_h



        shrd    op_l,eax,4      ;разделить операнд на 4

;так как старшая часть операнда реально еще не сдвинулась,

;то нужно привести ее в соответствие с результатом

        shr     op_h,4

        


См. также: урок 9 и команды rcr, rcl, ror, rol, sar, sal, shr, shld




Поделитесь с Вашими друзьями:
1   ...   33   34   35   36   37   38   39   40   ...   52




База данных защищена авторским правом ©vossta.ru 2022
обратиться к администрации

    Главная страница