- •Архитектура эвм и вычислительных систем Организация базовой эвм
- •Регистры алу
- •Разрядность регистров
- •Классификация команд цп
- •Определение данных в цп
- •Целые числа и операции над ними
- •Разветвление в программах
- •Безусловный переход
- •Уловный переход
- •Логические операции
- •Использование подпрогамм и выделение повторяющихся частей кода
- •Использование стека в процедурах. Организация процедуры
- •Адресация и виды адресации
- •Сдвиговые операции
Сдвиговые операции
Сдвиговые операции делятся на линейные сдвиговые операции и циклические сдвиговые операции (линейный сдвиг и циклический сдвиг)
Линейный сдвиг
Существует 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 – в обратную сторону