5. Битовые операции.ppt
- Количество слайдов: 31
Битовые операции Лекция 5
План лекции Логические команды n Операции сдвига n Команды логического сдвига n Команды арифметического сдвига n Команды циклического сдвига n
Логические команды
Логические команды n Битовые операции в С++ и Паскале:
Логические команды n Логические команды в Ассемблере: ¨ AND Приемник, Источник ¨ TEST Приемник, Источник ¨ OR Приемник, Источник ¨ XOR Приемник, Источник ¨ NOT Приемник
Логические команды n n Разрядности Приемника и Источника должны совпадать В качестве Приемника могут быть регистр или переменная Если Приемник – регистр, то Источник может быть регистром, переменной, константой Если Приемник – переменная, то Источник может быть регистром, или константой
Логические команды Флаги OF = CF = 0, остальные флаги (ZF, SF, PF) изменяются в соответствии с результатом операции n Команда NOT флаги не меняет n Источник в логических командах называется маской n
Логические команды Использование логических команд: n AND – проверка установки нужных разрядов в « 1» n TEST – то же, что AND, но приемник не меняется, а после команды TEST выполняется команда условного перехода n OR – установка нужных разрядов в « 1»
Логические команды Использование логических команд: n XOR: ¨ обнуление регистров ¨ обнуление нужных разрядов, если они установлены ¨ установка нужных разрядов, если они сброшены n NOT – инверсия всех разрядов числа
Логические команды n Пример. Дано 16 -разрядное число. Вывести значение 5 -го бита 0000 0010 00002 = 0 x 0020
Логические команды #include "iostream“; using namespace std; extern "C" void test_and(); extern "C" short int a; extern "C" short int b; void _tmain() { cout << "Input a number = "; cin >> a; test_and(); if (b) cout << "Bit 5 = 1"; else cout << "Bit 5 = 0"; getch(); }
Логические команды. MODEL FLAT, C . data PUBLIC a, b a DW ? bit 5 EQU 0020 h; . code PUBLIC test_and PROC MOV AX, a MOV b, AX AND b, bit 5 RET test_and ENDP END
Операции сдвига
Операции сдвига – это побитовые команды, которые сдвигают биты в Приемнике, либо влево (Left), либо вправо (Right) на число разрядов, хранящееся в Источнике n В мнемонике этих команд обязательно присутствует буква L или R n
Операции сдвига Команды сдвига делятся на следующие группы: n арифметические n логические n циклические
Операции сдвига n Эти команды позволяют очень быстро выполнять деление (при сдвиге вправо) и умножение (при сдвиге влево) операнда на степени двойки
Команды логического сдвига
Команды логического сдвига n Логический сдвиг влево (SHift Left): SHL Приемник, Источник ¨ Приемник может быть регистром или переменной ¨ Источник – константа или регистр CL (в котором учитываются младшие пять разрядов)
Команды логического сдвига
Команды логического сдвига n Логический сдвиг вправо (SHift Right): SHR Приемник, Источник
Команды логического сдвига
Команды логического сдвига MOV AL, 01000111 b SHL AL, 1 ; CF=0, AL=10001110 b MOV AL, 01000111 b SHR AL, 1 ; CF=1, AL=00100011 b MOV AL, 01000111 b MOV CL, 3 SHL AL, CL ; CF=0, AL=00111000 b
Команды арифметического сдвига
Команды арифметического сдвига SAL (Shift Arithmetic operand Left) – сдвиг арифметического операнда влево n SAR (Shift Arithmetic operand Right) – сдвиг арифметического операнда вправо n
Команды арифметического сдвига Применяются для быстрого умножения и деления знаковых целых чисел n Операция SAL идентична команде SHL (это разные названия одной и той же машинной команды) n Команда SAR при сдвиге отрицательного нечетного числа получает неверный результат n
Команды арифметического сдвига n SAR:
Команды циклического сдвига
Команды циклического сдвига n ROL (Rotate Left):
Команды циклического сдвига n ROR (Rotate Right):
Команды циклического сдвига n RCL (Rotate through Carry Left):
Команды циклического сдвига n RCR (Rotate through Carry Right):
5. Битовые операции.ppt