Конспект лекций Системное программирование (семестр 2) Возле названия каждой лекции написано число пар, в течение которых она будет читаться (+ ср обозначает

Вид материалаКонспект
Состояние флагов после выполнения команды
См. также
Схема команды
Состояние флагов после выполнения команды
См. также
Подобный материал:
1   ...   36   37   38   39   40   41   42   43   ...   57

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