
- •Алгебра логики, алгебра Буля. Основные аксиомы.
- •Законы алгебры Буля. Дистрибутивный, коммутативный, ассоциативный.
- •Законы алгебры Буля. Поглощения, двойного отрицания, исключения.
- •Законы алгебры Буля. Де Моргана, идемпотентности.
- •Условное графическое обозначение логических элементов (стандарты).
- •Способы минимизации логических функций. Правило составления карты Карно.
- •Карта Карно для:
- •Для каждого контура выделяем области:
- •Способы минимизации логических функций. Правило составления диаграммы Вейча.
- •Комбинационная схема. Функция дешифратора.
- •Комбинационная схема. Функция шифратора.
- •Комбинационная схема. Функция мультиплексора.
- •Комбинационная схема. Функция демультиплексора.
- •Триггеры. Типы триггеров. Классификация Триггеров.
- •Регистры. Счетчики. Разновидность.
- •Архитектура Микроконтроллера. Структура типовой эвм.
- •Тактовая частота микроконтроллера. Изменения тактовой частоты.
- •Регистры общего назначения (рон) в микроконтроллерах.
- •Регистр признаков. Распиновка битов.
- •Регистры специального назначения. Регистр Программный счетчик.
- •Регистры специального назначения. Регистр указатель Стека.
- •Регистры специального назначения. Таймеры.
- •Регистры специального назначения. Ацп и цап.
- •Виды памяти в микроконтроллерах.
- •Преобразование последовательного кода в параллельный.
- •Преобразование параллельного кода в последовательный.
- •Язык Ассемблера. Синтаксис. Мнемокод.
- •Арифметические команды. Принцип работы.
- •Imul операнд_1[,операнд_2,операнд_3].
- •Логические команды. Принцип работы.
- •Команды вызова подпрограммы, особенности.
- •Команды переходов в программе, особенности.
- •Доказать следующие законы: дистрибутивный, поглощения.
- •1) Доказательство дистрибутивного закона
- •Доказательство закона поглощения
- •Доказать следующие законы: идемпотентности, двойного отрицания.
- •Доказательство закона идемпотентности
- •Доказательство закона двойного отрицания
- •Доказать следующий законы: исключения, коммутативный.
- •Минимизировать произвольную логическую функцию с помощью диаграмм Вейча. Каскадное подключение дешифраторов, увеличение разряда дешифратора на n.
- •Каскадное подключение демультиплексора, увеличение разряда демультиплексора на n.
- •Реализовать rs триггер на элементах или-не.
- •Реализовать rs триггер на элементах и-не.
- •Основные команды по работе с триггерами общего назначения. Основные команды по работе с триггером признаков. Назначение регистра pc. И принцип работы с ним.
- •Назначения регистра sp. И принцип работы с ним.
- •Назначения регистра watchdog. И принцип работы с ним.
- •Работа с Flash-памятью микроконтроллера.
- •Работа с eeprom памятью микроконтроллера. (https://cxem.Net/mc/book.Php )
Логические команды. Принцип работы.
AND операнд_1,операнд_2 — операция логического умножения.
Команда выполняет поразрядно логическую операцию И (конъюнкцию) над битами операндов операнд_1 и операнд_2. Результат записывается на место операнд_1;
AND получатель, источник
Существуют следующие варианты команды AND:
AND reg, reg
AND reg, mem
AND reg, imm
AND mem, reg
AND mem, imm
Команда AND может работать с 8-, 16- или 32-разрядными операндами, причем длина у обоих операндов должна быть одинаковой. При выполнении операции поразрядного логического И значение результата будет равно 1 только в том случае, если оба бита пары равны 1.
Команда AND обычно используется для сброса отдельных битов двоичного числа (например, флагов состояния процессора) по заданной маске. Если бит маски равен 1, значение соответствующего разряда числа не изменяется (в этом случае говорят, что разряд замаскирован), а если равен 0 — то сбрасывается. В качестве примера на рис. показано, как можно сбросить четыре старших бита 8 -разрядного двоичного числа.
Для выполнения этой операции можно воспользоваться двумя командами:
mov al, 00111011b
and al, 00001111b
В данном случае полезная информация находится в четырех младших битах числа, а значения четырех старших битов для нас не имеет особого значения. В результате маскирования мы выделяем значение отдельных битов числа и помещаем их в регистр AL.
Флаги. Команда AND всегда сбрасывает флаги переполнения (OF) и переноса (CF). Кроме того, она устанавливает значения флагов знака (SF), нуля (ZF) и четности (PF) в соответствии со значением результата.
OR операнд_1,операнд_2 — операция логического сложения.
Команда выполняет поразрядно логическую операцию ИЛИ (дизъюнкцию) над битами операндов операнд_1 и операнд_2. Результат записывается на место операнд_1;
OR получатель, источник
В команде OR используются аналогичные команде AND типы операндов:
OR reg, reg
OR reg, mem
OR reg, imm
OR mem, reg
OR mem, imm
Команда OR может работать с 8-, 16- или 32-разрядными операндами, причем длина у обоих операндов должна быть одинаковой. При выполнении операции поразрядного логического ИЛИ значение результата будет равно 1, если хотя бы один из битов пары операндов равен 1
Команда OR обычно используется для установки в единицу отдельных битов двоичного числа (например, флагов состояния процессора) по заданной маске. Если бит маски равен 0, значение соответствующего разряда числа не изменяется, а если равен 1 — то устанавливается в 1. В качестве примера на рис. показано, как можно установить четыре младших бита 8-разрядного двоичного числа, выбрав в качестве маски число 0Fh. Значение старших битов числа при это не меняется.
Флаги. Команда OR всегда сбрасывает флаги переполнения (OF) и переноса (CF). Кроме того, она устанавливает значения флагов знака (SF), нуля (ZF) и четности (PF) в соответствии со значением результата. Например, с помощью команды OR можно определить, какое значение находится в регистре (отрицательное, положительное или нуль). Для этого вначале нужно выполнить команду OR, указав в качестве операндов один и тот же регистр, например:
or al, al
а затем – проанализировать значение флагов, как показано в табл.
Флаг нуля (Z) |
Флаг знака (S) |
Значение числа |
0 |
0 |
Больше нуля |
1 |
0 |
Равно нулю |
0 |
1 |
Меньше нуля |
XOR операнд_1,операнд_2 — операция логического исключающего сложения.
Команда выполняет поразрядно логическую операцию исключающего ИЛИ над битами операндов операнд_1 и операнд_2. Результат записывается на место операнд_1;
В команде XOR используются аналогичные командам AND и OR типы операндов:
XOR reg, reg
XOR reg, mem
XOR reg, imm
XOR mem, reg
XOR mem, imm
Команда XOR может работать с 8-, 16- или 32-разрядными операндами, причем длина у обоих операндов должна быть одинаковой. При выполнении операции поразрядного ИСКЛЮЧАЮЩЕГО ИЛИ значение результата будет равно 1, если значения битов пары операндов различны, и 0 — если значения битов равны. На рисунке приведена таблица истинности для операции логического ИСКЛЮЧАЮЩЕГО ИЛИ.
Как следует из таблицы, при выполнении операции ИСКЛЮЧАЮЩЕГО ИЛИ с нулевым битом получается исходное значение бита, а с единичным битом — значение исходного бита инвертируется.
Операция ИСКЛЮЧАЮЩЕГО ИЛИ обладает свойством реверсивности — если ее выполнить дважды с одним и тем же операндом, то значение результата инвертируется. Как показано на рисунке ниже, если два раза подряд выполнить операцию ИСКЛЮЧАЮЩЕГО ИЛИ между битами X и Y, то в результате получится исходное значение бита X.
Флаги. Команда XOR всегда сбрасывает флаги переполнения (OF) и переноса (CF). Кроме того, она устанавливает значения флагов знака (SF), нуля (ZF) и четности (PF) в соответствии со значением результата.
TEST операнд_1,операнд_2 — операция “проверить” (способом логического умножения).
Команда выполняет поразрядно логическую операцию И над битами операндов операнд_1 и операнд_2. Состояние операндов остается прежним, изменяются только флаги zf, sf, и pf, что дает возможность анализировать состояние отдельных битов операнда без изменения их состояния.
Пример: тестирование нескольких битов. С помощью команды TEST можно определить состояние сразу нескольких битов числа. Предположим, мы хотим узнать, установлен ли нулевой и третий биты регистра AL. Для этого можно воспользоваться такой командой:
test al,00001001b ; Тестируем биты 0 и 3
Как показано в приведенных ниже примерах, флаг нуля ZF будет установлен только в том случае, если все тестируемые биты сброшены:
0 0 1 0 0 1 0 1 <- Исходное значение
0 0 0 0 1 0 0 1 <- Маска
0 0 0 0 0 0 0 1 <- Результат: ZF = 0
0 0 1 0 0 1 0 0 <- Исходное значение
0 0 0 0 1 0 0 1 <- Маска
0 0 0 0 0 0 0 0 <- Результат: ZF = 1
Флаги. Команда TEST всегда сбрасывает флаги переполнения (OF) и переноса (CF). Кроме того, она устанавливает значения флагов знака (SF), нуля (ZF) и четности (PF) в соответствии со значением результата выполнения операции логического И (как и команда AND).
NOT операнд — операция логического отрицания. Команда выполняет поразрядное инвертирование (замену значения на обратное) каждого бита операнда. Результат записывается на место операнда.
NOT reg
NOT mem
Например, обратный код числа F0h равен 0Fh:
mov al, 11110000b
not al ; AL = 00001111b
Флаги. Команда NOT не изменяет флаги процессора.
Команда СМР вычитает исходный операнд из операнда получателя данных и, в зависимости от полученного результата, устанавливает флаги состояния процессора. При этом, в отличие от команды SUB, значение операнда получателя данных не изменяется.
СМР получатель, источник
В команде СМР используются аналогичные команде AND типы операндов.
Флаги. Команда СМР изменяет состояние следующих флагов: CF (флаг переноса), ZF (флаг нуля), SF (флаг знака), OF (флаг переполнения), AF (флаг служебного переноса), PF (флаг четности). Они устанавливаются в зависимости от значения, которое было бы получено в результате применения команды SUB. Например, как показано на рисунке, после выполнения команды СМР, по состоянию флагов нуля (ZF) и переноса (CF) можно судить о величинах сравниваемых между собой беззнаковых операндов.
Если сравниваются два операнда со знаком, то, кроме флагов ZF и CF, нужно учитывать еще и флаг знака (SF), как показано на рисунке ниже.
Команда СМР очень важна, поскольку она используется практически во всех основных условных логических конструкциях. Если после команды СМР поместить команду условного перехода, то полученная конструкция на языке ассемблера будет аналогична оператору IF языка высокого уровня.