- •Міністерство освіти і науки, Молоді та спорту україни Львівський коледж Державного університету інформаційно-комунікаційних технологій
- •Інструкція до лабораторної роботи №5
- •Лабораторна робота № 5
- •Короткі теоретичні відомості
- •Арифметичні і логічні операції
- •Команди зсуву
- •Команди лінійного зсуву
- •Команди циклічного зсуву
- •Варіанти індивідуальних завдань
- •Методичні вказівки
- •Контрольні запитання
- •Постановка завдання
- •Джерела інформації
Команди зсуву
Команди лінійного зсуву
До цього типу відносяться команд, що працюють за наступним алгоритмом:
біт, що висувається з розряду операнду, заноситься в прапорець 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
Команди циклічного зсуву
До команд циклічного зсуву (інша назва – команди обертання) відносять команди, які зберігають біти, що зсуваються. Є два типи команд циклічного зсуву:
команди простого циклічного зсуву;
команди циклічного зсуву через прапорець переносу.
До команд першого типу відносяться дві команди: 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 |
