S
386Р+ SGDT Сохранение в памяти содержимого регистра таблицы глобальных дескрипторов
Команда копирует содержимое регистра таблицы глобальных дескрипторов GDTR (линейный базовый адрес таблицы и ее границу) в поле из 6 байт, указанное в качестве операнда.
SHL Логический сдвиг влево
Команда полностью эквивалентна команде sal (арифметический сдвиг влево). См. описание команды sal.
386+ SHLD Логический сдвиг влево с двойной точностью
Трехоперандная команда shld с операндами op1, ор2 и орЗ осуществляет сдвиг влево первого из своих операндов opl. Число битов сдвига определяется третьим операндом ор3. По мере сдвига операнда op1 влево, выдвигаемые из него старшие биты, пройдя через флаг CF, теряются,; на освобождающиеся места со стороны его младших битов поступают старшие биты второго операнда ор2, как если бы он вдвигался своим левым (старшим) концом в op1. Однако после завершения сдвига значение операнда ор2 не изменяется (рис. П10). Во флаге CF остается последний выдвинутый из операнда op1 бит. Максимальное число битов сдвига составляет 31.
Рис. П10. Действие команды shld.
В качестве первого операнда op1можно указывать 16- или 32-разрядный регистр общего назначения или 16- или 32-битовую ячейку памяти. Вторым операндом ор2 может служить только 16- или 32-разрядный регистр общего назначения. Третий операнд, характеризующий число битов сдвига, может находиться в регистре CL или быть непосредственным значением.
Команда воздействует на флаги OF, SF, ZF, PF и CF.
Пример 1:
mov AX,OC001h mov BX,900Fh shld AX,BX,1; AX=8003h, BX=900Fh, CF=1
Пример 2:
mov AX,0C001h mov BX,900Fh shld AX,BX,2; AX=0006h, BX=900Fh, CF=1
Пример 3:
mov AX,0C001h mov BX,900Fh shld AX,BX,3; AX=000Ch, BX=900Fh, CF=0
Пример 4:
mov EBX,0FFCS000h mov ESI,12340000h mov CL,16 shld EBX,ESI,CL; EBX=80001234h, ;ESI=12340000h, CF=0