Скачать презентацию Битовые операции Лекция 5 План лекции Логические Скачать презентацию Битовые операции Лекция 5 План лекции Логические

5. Битовые операции.ppt

  • Количество слайдов: 31

Битовые операции Лекция 5 Битовые операции Лекция 5

План лекции Логические команды n Операции сдвига n Команды логического сдвига n Команды арифметического План лекции Логические команды n Операции сдвига n Команды логического сдвига n Команды арифметического сдвига n Команды циклического сдвига n

Логические команды Логические команды

Логические команды n Битовые операции в С++ и Паскале: Логические команды n Битовые операции в С++ и Паскале:

Логические команды n Логические команды в Ассемблере: ¨ AND Приемник, Источник ¨ TEST Приемник, Логические команды n Логические команды в Ассемблере: ¨ AND Приемник, Источник ¨ TEST Приемник, Источник ¨ OR Приемник, Источник ¨ XOR Приемник, Источник ¨ NOT Приемник

Логические команды n n Разрядности Приемника и Источника должны совпадать В качестве Приемника могут Логические команды n n Разрядности Приемника и Источника должны совпадать В качестве Приемника могут быть регистр или переменная Если Приемник – регистр, то Источник может быть регистром, переменной, константой Если Приемник – переменная, то Источник может быть регистром, или константой

Логические команды Флаги OF = CF = 0, остальные флаги (ZF, SF, PF) изменяются Логические команды Флаги OF = CF = 0, остальные флаги (ZF, SF, PF) изменяются в соответствии с результатом операции n Команда NOT флаги не меняет n Источник в логических командах называется маской n

Логические команды Использование логических команд: n AND – проверка установки нужных разрядов в « Логические команды Использование логических команд: n AND – проверка установки нужных разрядов в « 1» n TEST – то же, что AND, но приемник не меняется, а после команды TEST выполняется команда условного перехода n OR – установка нужных разрядов в « 1»

Логические команды Использование логических команд: n XOR: ¨ обнуление регистров ¨ обнуление нужных разрядов, Логические команды Использование логических команд: n XOR: ¨ обнуление регистров ¨ обнуление нужных разрядов, если они установлены ¨ установка нужных разрядов, если они сброшены n NOT – инверсия всех разрядов числа

Логические команды n Пример. Дано 16 -разрядное число. Вывести значение 5 -го бита 0000 Логические команды n Пример. Дано 16 -разрядное число. Вывести значение 5 -го бита 0000 0010 00002 = 0 x 0020

Логические команды #include Логические команды #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 Логические команды. 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), Операции сдвига – это побитовые команды, которые сдвигают биты в Приемнике, либо влево (Left), либо вправо (Right) на число разрядов, хранящееся в Источнике n В мнемонике этих команд обязательно присутствует буква L или R n

Операции сдвига Команды сдвига делятся на следующие группы: n арифметические n логические n циклические Операции сдвига Команды сдвига делятся на следующие группы: n арифметические n логические n циклические

Операции сдвига n Эти команды позволяют очень быстро выполнять деление (при сдвиге вправо) и Операции сдвига n Эти команды позволяют очень быстро выполнять деление (при сдвиге вправо) и умножение (при сдвиге влево) операнда на степени двойки

Команды логического сдвига Команды логического сдвига

Команды логического сдвига n Логический сдвиг влево (SHift Left): SHL Приемник, Источник ¨ Приемник Команды логического сдвига n Логический сдвиг влево (SHift Left): SHL Приемник, Источник ¨ Приемник может быть регистром или переменной ¨ Источник – константа или регистр CL (в котором учитываются младшие пять разрядов)

Команды логического сдвига Команды логического сдвига

Команды логического сдвига n Логический сдвиг вправо (SHift Right): SHR Приемник, Источник Команды логического сдвига n Логический сдвиг вправо (SHift Right): SHR Приемник, Источник

Команды логического сдвига Команды логического сдвига

Команды логического сдвига MOV AL, 01000111 b SHL AL, 1 ; CF=0, AL=10001110 b Команды логического сдвига 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 Команды арифметического сдвига SAL (Shift Arithmetic operand Left) – сдвиг арифметического операнда влево n SAR (Shift Arithmetic operand Right) – сдвиг арифметического операнда вправо n

Команды арифметического сдвига Применяются для быстрого умножения и деления знаковых целых чисел n Операция Команды арифметического сдвига Применяются для быстрого умножения и деления знаковых целых чисел n Операция SAL идентична команде SHL (это разные названия одной и той же машинной команды) n Команда SAR при сдвиге отрицательного нечетного числа получает неверный результат n

Команды арифметического сдвига n SAR: Команды арифметического сдвига n SAR:

Команды циклического сдвига Команды циклического сдвига

Команды циклического сдвига n ROL (Rotate Left): Команды циклического сдвига n ROL (Rotate Left):

Команды циклического сдвига n ROR (Rotate Right): Команды циклического сдвига n ROR (Rotate Right):

Команды циклического сдвига n RCL (Rotate through Carry Left): Команды циклического сдвига n RCL (Rotate through Carry Left):

Команды циклического сдвига n RCR (Rotate through Carry Right): Команды циклического сдвига n RCR (Rotate through Carry Right):