Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MPSU_laboratornye.doc
Скачиваний:
73
Добавлен:
11.05.2015
Размер:
1.26 Mб
Скачать

Лабораторная работа №2. Алгоритмы логическойобработки данных

Цель работыизучить основные приёмы, используемые при программировании логических операций над двоичными числами.

Краткие теоретические сведения

Для выполнения логических операций в МК AVR предусмотрены команды “И”, “ИЛИ”, “исключающее ИЛИ”. Они выполняют операции между соответствующими парами битов операндов двух РОН, либо между РОН и непосредственным операндом. Логические операции используются для управления как отдельными битами операндов, так и отдельными линиями портов ввода/вывода.

  • AND – логическое “И” содержимого двух РОН.

  • ANDI – логическое “И” между содержимым РОН и 8-разрядной константой.

  • OR – логическое “ИЛИ” содержимого двух РОН.

  • ORI– логическое “И” между содержимым РОН и 8-разрядной константой.

  • EOR– логическое “ИЛИ” содержимого двух РОН

Логические операции выполняются поразрядно, т.е. независимо для всех восьми бит операнда. При этом первый операнд находится в одном регистре, а другой – во втором. Результат операции помещается в первый регистр. По результату логической операции модифицируются флаги S и Z. Флаг Cне изменяется.

Команда ANDIприменяется для проверки значения бита с помощью маски. Если, например, необходимо проверить состояние второго бита, то маска должна иметь вид 0b00000100. после выполнения командыANDIо состоянии бита можно судить по флагу Z: Z=1 при B2=0. Кроме того, с помощью командыANDIи соответствующей маски можно сбрасывать заданные биты слова. Например, маска 0b11011110 обеспечивает сброс в "0" нулевого и пятого разрядов.

Команда ORIиспользуется для установки определённых битов в “1”, а также упаковки нескольких полей в одно слово. Например, для установки в “1” нулевого и пятого разрядов необходимо выполнить операциюORIс маской 0b00100001. Результатом операции с операндами XXXX0000 и 0000YYYY будет упакованное слово XXXXYYYY.

При помощи EORпроизводится инвертирование определённых битов слова. Например, маска 0b00100001 обеспечивает инвертирование нулевого и пятого разрядов. Другое применение командыEORсвязано со сравнением слов на абсолютное равенство. В случае, когда операнды совпадают, результат операции содержит нули во всех разрядах, о чём сигнализирует флаг Z=1.

Для выполнения логических операций над различными битами одного и того же слова используют следующий приём. Логическая функция представляется в виде суммы логических произведений бит. Для каждого произведения формируется своя маска и при помощи команд AND,EORвычисляется его значение. Далее эти произведения суммируются командамиORI. Например, для функцииy=x1*x3+x2*x6выполняются операции “И” с маскамиb00001010 иb01000100. Их результат оценивается по флагу Z. В случае Z=0 значениеyполагается равным 1.

Операция сдвига означает перемещение всех битов операнда вправо или влево на одну позицию. Это можно выполнить двумя способами. Первый называется логическим сдвигом, при котором выдвинутая позиция битового разряда заполняется нулём. Например, при выполнении логического сдвига вправо на один разряд байта 0b10011010, получим 0b01001101.

При арифметическом сдвиге выдвинутая позиция заполняется первоначальным значением знакового разряда. Например, при выполнении арифметического сдвига вправо на один разряд байта, значение которого равно 0b10011010, получим число 0b11001101.

  • LSL– логический сдвиг влево. Используется для быстрого умножения на число кратное 2n.

;

  • LSR– выполняет логический сдвиг вправо. Используется для быстрого деления на число кратное 2n.

;

  • ASR– выполняет арифметический сдвиг вправо операнда. Чаще всего она используется для выполнения быстрого деления числа, на число кратное 2n.

  • ROL– сдвиг влево через флаг переноса.

;

  • ROR– сдвиг вправо через флаг переноса.

;

Команды управления битами РОН:

  • NEG– инвертирование содержимого РОН;

  • CLR– очистка всех битов РОН в “0”;

  • SER– установка всех битов РОН в “1”.

  • CBR– сброс разряда РОН, напримерCBR r16, 1

  • SBR– установка разряда РОН, напримерSBR r16, 3

Команды управления флагами регистра состояния:

  • SEC/CLC – установка/сброс флага переноса;

  • SEZ/CLZ – установка/сброс флага нуля;

  • SEN/CLN – установка/сброс флага отрицательного значения;

  • SEV/CLV – установка/сброс флага переполнения дополнительного кода;

  • SES/CLS– установка/сброс флага знака;

  • SEH/CLH – установка/сброс флага половинного переноса;

  • SET/CLT – установка/сброс пользовательского флагаT;

  • SEI/CLI – установка/сброс общего флага прерываний;

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