Разделы презентаций


ВМСС Лекция №9 13.04.2020

Содержание

ЛОГИЧЕСКИЕ ОПЕРАЦИИ в Ассемблере

Слайды и текст этой презентации

Слайд 1ВМСС Лекция №9 13.04.2020

ВМСС  Лекция №9 13.04.2020

Слайд 2ЛОГИЧЕСКИЕ ОПЕРАЦИИ в Ассемблере

ЛОГИЧЕСКИЕ ОПЕРАЦИИ в Ассемблере

Слайд 3Логические операции
Логические операции выполняются над операндами по правилам формальной логики.
Результат

выполнения лог.операции может:
передаваться в один из операндов
выражаться в

изменении состояния флагов
Логические операцииЛогические операции выполняются над операндами по правилам формальной логики.Результат выполнения лог.операции может: передаваться в один из

Слайд 4Флаги
CF – флаг переноса = 1, если предыдущий операнд не

уместился в приемнике после беззнаковой операции
ZF – флаг нуля =

1, если рез-т пред. команды=0
SF – флаг знака = 1, если результат <0
OF – флаг переполнения = 1, если рез-т предыд. арифм. операции выходит за пределы регистра (для знаковых операций).
PF – флаг четности = 1, если мл.байт рез-та предыд. команды имеет четное число битов=1
AF – вспомогательный флаг переноса = 1 при переносе или заёме из бита 4 результата. (Для двоично-десятичной  BCD арифметики).
IF – флаг прерываний = 0, чтобы CPU перестал обрабатывать прерывания от внешних устр-в
DF – флаг направления = 1, чтобы строки команд выполнялись в сторону уменьшения адресов (10-й бит)
ФлагиCF – флаг переноса = 1, если предыдущий операнд не уместился в приемнике после беззнаковой операцииZF –

Слайд 5Логические операции Логическое побитовое «И»
AND оп1, оп2

Результат посылается в оп1.
Длина у

обоих операндов должна быть одинаковой
Флаги ZF, SF, PF устанавливаются по

результату (см.далее).
OF=CF=0
Логические операции  Логическое побитовое «И»AND оп1, оп2Результат посылается в оп1.Длина у обоих операндов должна быть одинаковойФлаги

Слайд 6Логические операции Логическое побитовое «И»
Таблица истинности для побитового «И»

Логические операции Логическое побитовое «И»Таблица истинности для побитового «И»

Слайд 7Логические операции Логическое побитовое «И»
Команда AND часто используется для сброса отдельных

битов двоичного числа (например, флагов состояния процессора) по заданной маске

(один из операндов).
Если бит маски равен 1, значение соответствующего разряда числа не изменяется (разряд замаскирован),
а если равен 0 — то сбрасывается.
Логические операции Логическое побитовое «И»Команда AND часто используется для сброса отдельных битов двоичного числа (например, флагов состояния

Слайд 8Пример
mov ax, 00111011b
and ax, 00001111b


Примерmov ax, 00111011band ax, 00001111b

Слайд 9Изменение флагов

Изменение флагов

Слайд 10Алгоритм работы команды по изменению флагов
Начало
Конец
R = оп1 and оп2
ZF

= 0
SF = 0
ZF = 1
SF = 1
R = 0
R

< 0

да

да

Алгоритм работы команды по изменению флаговНачалоКонецR = оп1 and оп2ZF = 0SF = 0ZF = 1SF =

Слайд 11Логические операции Логическое побитовое «И» без сохранения результата
TEST оп1, оп2

Результат НЕ

посылается в оп1.
Длина у обоих операндов должна быть одинаковой
Флаги ZF,

SF, PF устанавливаются по результату.
OF=CF=0
Применяется часто для анализа значения отдельных битов числа по маске.
Логические операции Логическое побитовое «И» без сохранения результатаTEST оп1, оп2Результат НЕ посылается в оп1.Длина у обоих операндов

Слайд 12Логические операции Логическое побитовое «И» без сохранения результата
Пример: тестирование нескольких битов.

Задача:

узнать установлены ли 1-й и 4-й биты числа 21 в

0?
mov ax, 21; исходное число
mov bx, 00010010b; маска
test ax, bx


Логические операции Логическое побитовое «И» без сохранения результатаПример: тестирование нескольких битов.Задача: узнать установлены ли 1-й и 4-й

Слайд 13
Логические операции Логическое побитовое «И» без сохранения результата

Логические операции Логическое побитовое «И» без сохранения результата

Слайд 14Логические операции Логическое побитовое «И» без сохранения результата
Пример 2: тестирование нескольких

битов.

Задача: узнать установлены ли 1-й и 4-й биты числа 77

в 0?
mov ax, 77; исходное число
mov bx, 00010010b; маска
test ax, bx

Логические операции Логическое побитовое «И» без сохранения результатаПример 2: тестирование нескольких битов.Задача: узнать установлены ли 1-й и

Слайд 15Логические операции Логическое побитовое «И» без сохранения результата

Логические операции Логическое побитовое «И» без сохранения результата

Слайд 16Логические операции Логическое побитовое «ИЛИ»
OR оп1, оп2

Результат посылается в оп1.
Длина

у обоих операндов должна быть одинаковой
Флаги ZF, SF, PF устанавливаются

по результату.
OF=CF=0
Логические операции  Логическое побитовое «ИЛИ»OR  оп1, оп2Результат посылается в оп1.Длина у обоих операндов должна быть

Слайд 17Логические операции Логическое побитовое «ИЛИ»
Таблица истинности для побитового «ИЛИ»

Логические операции Логическое побитовое «ИЛИ»Таблица истинности для побитового «ИЛИ»

Слайд 18Логические операции Логическое побитовое «ИЛИ»
Используется для установки в 1 отдельных битов

двоичного числа (например, флагов состояния процессора) по заданной маске.
Если бит

маски равен 0, значение соответствующего разряда числа не изменяется,
Если равен 1 — то устанавливается в 1. 
Логические операции Логическое побитовое «ИЛИ»Используется для установки в 1 отдельных битов двоичного числа (например, флагов состояния процессора)

Слайд 19Логические операции Логическое побитовое «ИЛИ»
mov ax, 00111011b
or ax, 00001111b


Пример

Логические операции Логическое побитовое «ИЛИ»mov ax, 00111011bor   ax, 00001111bПример 1

Слайд 20Логические операции Логическое побитовое «ИЛИ»
Пример 2
Преобразование числа в ASCII-код символа (0-9)
mov

ax, 7
or ax, 30h

Логические операции Логическое побитовое «ИЛИ»Пример 2Преобразование числа в ASCII-код символа (0-9)mov  ax, 7 or  ax,

Слайд 21Логические операции Логическое побитовое «ИЛИ»
Команда OR:
Сбрасывает флаги переполнения (OF) и переноса

(CF).
Устанавливает значения флагов знака (SF), нуля (ZF) и четности (PF)

в соответствии со значением результата. 
Команду OR можно использовать для определения знака числа (при равенстве операндов)
Логические операции Логическое побитовое «ИЛИ»Команда OR:Сбрасывает флаги переполнения (OF) и переноса (CF).Устанавливает значения флагов знака (SF), нуля

Слайд 22Логические операции Логическое побитовое «ИЛИ»
Пример 3. Определение знака числа
or al, al



Логические операции Логическое побитовое «ИЛИ»Пример 3. Определение знака числаor al, al

Слайд 23Логические операции Логическое исключающее «ИЛИ»
XOR оп1, оп2

Результат посылается в оп1.
Длина у

обоих операндов должна быть одинаковой
Флаги ZF, SF, PF устанавливаются по

результату.
OF=CF=0

Логические операции Логическое исключающее «ИЛИ»XOR оп1, оп2Результат посылается в оп1.Длина у обоих операндов должна быть одинаковойФлаги ZF,

Слайд 24Логические операции Логическое исключающее «ИЛИ»
Таблица истинности для исключающего «ИЛИ»

Логические операции Логическое исключающее «ИЛИ»Таблица истинности для исключающего «ИЛИ»

Слайд 25Логические операции Инверсия
NOT оп.

Инверсия всех битов.
Флаги не меняются

Логические операции ИнверсияNOT оп.Инверсия всех битов.Флаги не меняются

Слайд 26Логические операции Инверсия
Пример

mov ax, 5
not ax
inc

ax
mov ax, 5
neg ax

Логические операции ИнверсияПример   mov ax, 5not ax  inc ax   mov ax, 5neg

Слайд 29Логические операции Сравнение операндов
CMP оп1, оп2

Вычитание без сохранения разности.
Оп1 –

регистр или ОЗУ(переменная)
Оп2 – регистр или ОЗУ или константа
Оба операнда

не могут быть в ОЗУ
Результат: изменение флагов ZF, SF

Похожа на команду SUB, но…

Логические операции Сравнение операндовCMP  оп1, оп2Вычитание без сохранения разности.Оп1 – регистр или ОЗУ(переменная)Оп2 – регистр или

Слайд 30Логические операции Сравнение операндов

Логические операции Сравнение операндов

Слайд 31Алгоритм работы команды CMP
Начало
Конец
R = оп1 – оп2
ZF = 0
SF

= 0
ZF = 1
SF = 1
R = 0
R < 0
да
да

Алгоритм работы команды CMPНачалоКонецR = оп1 – оп2ZF = 0SF = 0ZF = 1SF = 1R =

Слайд 32Арифметические команды Сравнение операндов cmp
Пример
mov ax, 15
mov bx, 15
cmp ax, bx
inc

ax
cmp ax, bx
sub ax, 2
cmp ax, bx

Арифметические команды Сравнение операндов cmpПример	mov ax, 15	mov bx, 15	cmp ax, bx	inc ax	cmp ax, bx	sub ax, 2	cmp ax,

Слайд 33Логические операции Сравнение операндов cmp
ax = bx

Логические операции Сравнение операндов cmpax = bx

Слайд 34Логические операции Сравнение операндов cmp
ax > bx

Логические операции Сравнение операндов cmpax > bx

Слайд 35Логические операции Сравнение операндов cmp
ax < bx

Логические операции Сравнение операндов cmpax < bx

Слайд 36Флаги регистра флагов
CF – флаг переноса = 1, если предыдущий

операнд не уместился в приемнике после беззнаковой операции
ZF – флаг

нуля = 1, если рез-т пред. команды=0
SF – флаг знака = 1, если результат <0
OF – флаг переполнения = 1, если рез-т предыд. арифм. операции выходит за пределы регистра (для знаковых операций).
PF – флаг четности = 1, если мл.байт рез-та предыд. команды имеет четное число битов=1
AF – вспомогательный флаг переноса = 1 при переносе или заёме из бита 4 результата. (Для двоично-десятичной  BCD арифметики).
IF – флаг прерываний = 0, чтобы CPU перестал обрабатывать прерывания от внешних устр-в
DF – флаг направления = 1, чтобы строки команд выполнялись в сторону уменьшения адресов
Флаги регистра флаговCF – флаг переноса = 1, если предыдущий операнд не уместился в приемнике после беззнаковой

Слайд 38Управление флагами
ZF – флаг нуля
and al, 0    ; Флаг ZF устанавливается
or al, 1     ;

Флаг ZF сбрасывается

SF – флаг знака числа
or al, 80h     ; Флаг SF устанавливается
;старший

бит операнда установлен в 1
and al, 7Fh    ; Флаг SF сбрасывается
; старший бит операнда сброшен в 0

Управление флагамиZF – флаг нуля	and al, 0    ; Флаг ZF устанавливается	or al, 1     ; Флаг ZF сбрасываетсяSF – флаг знака числа	or al,

Слайд 39Управление флагами
CF – флаг переноса
stc          ; Флаг CF устанавливается (Set)
clc          ; Флаг CF сбрасывается

(Clear)

OF – флаг переполнения
mov al, 7Fh    ; AL = +127
inc

al         ; AL = 80h (-128), OF = 1
or al, 0       ; Флаг OF сбрасывается, OF=0

Управление флагамиCF – флаг переноса	stc          ; Флаг CF устанавливается (Set)	clc          ; Флаг CF сбрасывается (Clear)OF – флаг переполнения	mov al, 7Fh    ;

Слайд 40Управление флагами
DF – флаг направления
cld

; сбрасывает флаг, т.е.

DF = 0
std ; устанавливает флаг, т.е. DF = 1
; для цепочечных операций
IF - флаг прерывания
cli ; IF=0 (запрет прерывания)
sti ; IF=1 (разрешает прерывания)

Управление флагамиDF – флаг направления	cld            ;

Слайд 41Управление флагами
LAHF – загрузка (Load) младшего байта регистра флагов в

регистр AH

SAHF – сохраняет (Save) содержимое регистра AH в младшем

байте регистра флагов. При этом биты 1, 3, 5 регистра AH игнорируются.
Управление флагамиLAHF – загрузка (Load) младшего байта регистра флагов в регистр AHSAHF – сохраняет (Save) содержимое регистра

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика