Скачать презентацию ЛЕКЦИЯ 8 ЛОГИЧЕСКИЕ ДАННЫЕ Логическими называют такие Скачать презентацию ЛЕКЦИЯ 8 ЛОГИЧЕСКИЕ ДАННЫЕ Логическими называют такие

lect_8.ppt

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

ЛЕКЦИЯ № 8 ЛОГИЧЕСКИЕ ДАННЫЕ Логическими называют такие преобразования данных, которые основаны на правилах ЛЕКЦИЯ № 8 ЛОГИЧЕСКИЕ ДАННЫЕ Логическими называют такие преобразования данных, которые основаны на правилах формальной логики. Формальная логика работает на уровне утверждений «истинно» и «ложно» . Средства логического преобразования данных позволяют работать с информацией на уровне бит.

Средства микропроцессора для работы с логическими данными Средства микропроцессора для работы с логическими данными

Основные логические операции • Отрицание (логическое НЕ) Значение операнда 0 1 Результат операции 1 Основные логические операции • Отрицание (логическое НЕ) Значение операнда 0 1 Результат операции 1 0 Команда ассемблера: not операнд • Логическое сложение ( логическое включающее ИЛИ ) Значение операнда 1 0 0 1 1 Значение операнда 2 0 1 Результат операции 0 1 1 1 Команда ассемблера: or операнд 1, операнд 2

 • Логическое умножение ( логическое И ) Значение операнда 1 0 0 1 • Логическое умножение ( логическое И ) Значение операнда 1 0 0 1 1 Значение операнда 2 0 1 Результат операции 0 0 0 1 Команда ассемблера: and операнд 1, операнд 2 • Логическое исключающее сложение ( логическое исключающее ИЛИ ) Значение операнда 1 0 0 1 1 Значение операнда 2 0 1 Результат операции 0 1 1 0 Команда ассемблера: xor операнд 1, операнд 2

Команда test операнд 1, операнд 2 выполняет над операндами операцию логического умножения, однако не Команда test операнд 1, операнд 2 выполняет над операндами операцию логического умножения, однако не изменяет значения операнд 1, а воздействует только на флаги zf, sf, pf, что дает возможность анализировать состояние отдельных битов операнда без изменения их состояния. С помощью логических команд возможно выделение отдельных битов в операнде с целью их установки, сброса, инвертирования или проверки на определенное значение. Для организации таких действий операнд 2 выступает в роли маски. • Установка определенных бит в 1 or al, 01000010 b ; установка в 1 6 -го и 1 -го бит без изменения остальных • Сброс определенных бит в 0 and ax, 0 fffdh ; сброс в 0 младшего бита в ax без изменения остальных

 • Инвертирование определенных бит xor al, 01000010 b ; инвертирование двух бит (1 • Инвертирование определенных бит xor al, 01000010 b ; инвертирование двух бит (1 и 6) • Проверка состояния заданных бит test eax, 00000010 h jz m 1 ; переход если 4 -й бит равен 1 • Поиск первого установленного в 1 бита mov al, 02 h bsf bx, al jz m 1 аналогичная команда bsr (Bit Scaning Reset) В последних моделях процессоров INTEL появились еще несколько команд логической группы, которые позволяют осуществить доступ к одному конкретному биту операнда. При этом операнд может находится и в регистре общего назначения и в памяти. Все команды присваивают значение выбранного бита флагу cf.

bt ax, 5 ; проверить значение бита 5 jnc m 1 ; переход если bt ax, 5 ; проверить значение бита 5 jnc m 1 ; переход если бит равен нулю. mov ax, 10 bts pole 1, ax ; проверить и установить 10 –й бит в pole 1 btr pole 1, ax ; проверить и сбросить btc pole 3, ax ; проверить и инвертировать 10 –й бит в pole 3 jc m 1 ; переход если проверенный бит был равен 1 10 -й бит в pole 2 Команды сдвига коп операнд, счетчик_сдвигов: • непосредственный операнд • значение в регистре cl (5 младших битов) Все команды сдвига устанавливают флаг переноса cf. По мере сдвига битов за пределы операнда, они сначала попадают во флаг переноса.

Линейный сдвиг • команды линейного логического сдвига: shl, shr Линейный сдвиг • команды линейного логического сдвига: shl, shr

 • Команды арифметического линейного сдвига: sal, sar Команды арифметического сдвига позволяют выполнять умножение • Команды арифметического линейного сдвига: sal, sar Команды арифметического сдвига позволяют выполнять умножение и деление на степени двойки. 1. 2. 75 01001011 150 10010110

Циклический сдвиг • Команды простого циклического сдвига: rol, ror Циклический сдвиг • Команды простого циклического сдвига: rol, ror

 • Команды циклического сдвига через флаг cf: rcl, rcr • Команды циклического сдвига через флаг cf: rcl, rcr

Дополнительные команды сдвига shld операнд 1, операнд 2, счетчик_сдвигов shrd операнд 1, операнд 2, Дополнительные команды сдвига shld операнд 1, операнд 2, счетчик_сдвигов shrd операнд 1, операнд 2, счетчик_сдвигов

Пример: вставка битовой строки ; prg_9_3. asm model small stack 256. data bit_str dd Пример: вставка битовой строки ; prg_9_3. asm model small stack 256. data bit_str dd 11010111 h ; строка для вставки p_str dd 0 ffff 0000 h ; вставляемая подстрока 0 ffffh. code main: ; точка входа в программу mov ax, @data mov ds, ax xor ax, ax. 386 ; это обязательно mov eax, p_str ; правый край места вставки циклически переместить к краю ; строки bit_str (сохранение правого контекста): ror bit_str, 8 shr bit_str, 16 ; сдвинуть строку вправо на длину подстроки (16 бит) shld bit_str, eax, 16 ; сдвинуть 16 бит rol bit_str, 8 ; восстановить младшие 8 бит ; . . .

exit: end mov int main ; bit_str=11 ffff 11 ax, 4 c 00 h exit: end mov int main ; bit_str=11 ffff 11 ax, 4 c 00 h 21 h