Команды сдвига двойной точности
Loop m1
rol eax,16; eax=0000 a a a a
shld операнд1, операнд2, счетчик_сдвигов – сдвиг влево двойной точности. Команда сдвигает влево биты первого операнда и заполняет его справа значениями битов из второго операнда. Значение счетчика сдвигов может быть указано непосредственно или в регистре CL. Максимальное число сдвигов-31. Значение второго операнда не меняется!
CF Операнд1 Операнд2
shrd операнд1,операнд2, счетчик_сдвигов – сдвиг вправо двойной точности. Сдвиг происходит в первом операнде. Свободные разряды заполняются битами из второго операнда. Состояние операнда 2 при этом не меняется.
Операнд2 Операнд1 CF
Пример двойного сдвига поля из 64 бит на 16 бит.
С помощью команд сдвига заместить в pole1 2 младших байта старшими байтами из pole2. (Пересылка из памяти в память запрещена!)