Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архитектура ЭВМ и вычислительных систем.docx
Скачиваний:
4
Добавлен:
22.12.2018
Размер:
41.95 Кб
Скачать

Сдвиговые операции

Сдвиговые операции делятся на линейные сдвиговые операции и циклические сдвиговые операции (линейный сдвиг и циклический сдвиг)

Линейный сдвиг

Существует 2 вида линейных сдвигов: логический и математический. Логический линейный сдвиг делится на левый и правый линейный логический сдвиг.

Линейный логический левый сдвиг (Shl):

Shl <операнд><операнд> - первый операнд – это, как правило, регистр, значение в котором будет сдвигаться влево, второй – количество битов, на которой буде сдвинуто значение первого операнда. В качестве второго операнда обычно указывают регистр cl (используется только 5 битов этого регистра (число 31), который и содержит число сдвигаемых битов первого операнда). Каждый раз, когда значение сдвигается на один бит влево, то с правой стороны выдвигается 0, а бит слева попадает во флаг cf.

Например:

  • 00001010 (первый операнд), значащая часть: 1010, сдвигаем на один бит: 00010100.

  • 100000010, единица переносится в cf: 00000100 cf = 1.

Правый логический сдвиг (shr): сдвиг происходит направо.

С помощью данной операции можно обнулить флаг. Сдвиговыми операциями нельзя делить нечетные числа. При делении и умножении сдвигами тратиться не много тактов ЦП. При работе со знаковыми числами знак не сохраняется.

Линейный математический сдвиг: делится на левый (SAL) и правый (SRL).

SAL выполняет ту же саму операцию, что и логический левый диск и, во многих случаях, операция SAL преобразуется в shl.

SRL: его особенностью является то, что он сохраняет знак.

Циклический сдвиг бывает 2х типов - циклический сдвиг и циклический сдвиг с использованиеv CF. Циклический сдвиг может быть циклическим сдвигом левым (rol) и правым. Этот сдвиг отличается от линейного тем, что сдвигаемый, например, в лево бит затем будет перенесен в начало. Правый циклический сдвиг – то же самое в обратную сторону. Циклический сдвиг с использованием флага CF: левый (rcl) – левый циклический сдвиг с использованием флага переноса. RCR – в обратную сторону