Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ASM_Lab5.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
212 Кб
Скачать
☆
    1. Команди зсуву

      1. Команди лінійного зсуву

До цього типу відносяться команд, що працюють за наступним алгоритмом:

  • біт, що висувається з розряду операнду, заноситься в прапорець CF;

  • біт, що вводиться в операнд з другого кінця, має значення 0;

  • при зсуві чергового біту він переміщається в прапорець CF, при цьому значення попереднього зсунутого біту втрачається.

Команди лінійного зсуву поділяються на два підтипи:

  • команди логічного лінійного зсуву;

  • команди арифметичного лінійного зсуву.

До команд логічного лінійного зсуву відносяться команди SHL (Shift Logical Left) і SHR (Shift Logical Right), які здійснюють зсув вліво і вправо відповідно.

Ці команди підтримують наступні операнди:

memory, immediate REG, immediate memory, CL REG, CL.

Безпосереднє число (immediate) або регістр CL вказують на число зсувів.

Рис.2 ілюструє принцип роботи команд SHL і SHR.

Рисунок 2 – Принцип роботи команд: а) SHL і б) SHR

Нижче наведений приклад, що ілюструє роботу команди такого типу:

MOV AL, 11100000b

SHL AL, 1 ; AL = 11000000b, CF=1

RET

Команди арифметичного лінійного зсуву вирізняються тим, що вони особливим чином працюють зі знаковим розрядом операнду:

  • при виконанні команди SAL (Shift Arithmetic Left– арифметичний зсув вліво) значення знакового розряду не зберігається. Кожний наступний біт при зсуві переноситься в прапорець CF, а зліва звільнені розряди операнду доповнюються нулями. Арифметичний зсув вліво за своєю суттю практично співпадає з логічним зсувом вліво;

  • при виконанні команди SAR (Shift Arithmetic Right – арифметичний зсув вправо) значення знакового розряду зберігається, відновлюючись при кожному такті зсуву. Кожний наступний біт, що висувається, переноситься в прапорець CF, а звільнені справа (після знакового) розряди операнду доповнюються значенням знакового розряду.

Рис.3 ілюструє принцип роботи команд SAL і SAR.

Рисунок 3 – Принцип роботи команд: а) SAL і б) SAR

Нижче наведений приклад, що ілюструє роботу команди такого типу:

MOV AL, 0E0h ; AL = 11100000b

SAL AL, 1 ; AL = 11000000b, CF=1.

MOV BL, 83h ; BL = 10000011b

SAR BL, 1 ; BL = 11000001b, CF=1.

RET

      1. Команди циклічного зсуву

До команд циклічного зсуву (інша назва – команди обертання) відносять команди, які зберігають біти, що зсуваються. Є два типи команд циклічного зсуву:

  • команди простого циклічного зсуву;

  • команди циклічного зсуву через прапорець переносу.

До команд першого типу відносяться дві команди: ROL (Rotate Left) і ROR (Rotate Right). Вони працюють таким чином, що біт який висувається зі старшого (молодшого) розряду при зсуві вліво (вправо), переписується в прапорець CF і переміщається в молодший (старший) розряд операнду. Роботу цих команд ілюструє рис.4.

Рисунок 4 – Принцип роботи команд: а) ROL і б) ROR

Нижче наведений приклад, що ілюструє роботу команди такого типу:

MOV AL, 1Ch ; AL = 00011100b

ROL AL, 1 ; AL = 00111000b, CF=0.

RET

C

O

r

r

Команди циклічного зсуву через прапорець CF – RCL і RCR вирізняються тим, що значення біту який висувається зі старшого (молодшого) розряду при зсуві вліво (вправо) спочатку переміщається в прапорець, а вже в наступному такті – в молодший (старший) розряд операнду. Роботу цих команд ілюструє рис.5.

Рисунок 5 – Принцип роботи команд: а) RCL і б) RCR

Нижче наведений приклад, що ілюструє роботу команди такого типу:

STC ; set carry (CF=1).

MOV AL, 1Ch ; AL = 00011100b

RCL AL, 1 ; AL = 00111001b, CF=0.

RET

C

O

r

r

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]