Главная

Популярная публикация

Научная публикация

Случайная публикация

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

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Команды преобразования данных




Команды этой группы применяются для преобразования типов данных.

CWD, CDQ – команды конвертирования слова в двойное слово и двойного слова в учетверенное соответственно Команда CWD превращает слово в АХ в двойное слово, младшая половина которого (биты 0 – 15) остается в АХ, а старшая (биты 16 – 31) располагается в DX. Команда CDQ выполняет аналогичное действие по отношению к двойному слову в ЕАХ, расширяя его до учетверенного слова в EDX:EAX. Эти команды всего лишь устанавливают все биты регистра DX или EDX в значение, равное значению старшего бита регистра АХ или ЕАХ, сохраняя, таким образом, его знак.

CBW, CWDE – Конвертирование байта в слово Конвертирование слова в двойное слово соответственно. CBW расширяет байт, находящийся в регистре AL, до слова в АХ, CWDE расширяет слово в АХ до двойного слова в ЕАХ. CWDE и CWD отличаются тем, что CWDE располагает свой результат в ЕАХ, в то время как CWD, команда, выполняющая точно такое же действие, располагает результат в паре регистров DX:AX. Так же как и команды CWD/CDQ, расширение выполняется путем установки каждого бита старшей половины результата равным старшему биту исходного байта или слова, то есть:

mov al,OF5h;AL = OF5h = 245 = -11

cbw; теперь АХ = OFFF5h = 65 525 = -11

MOVSX – Пересылка с расширением знака Копирует содержимое источника (регистр или переменная размером в байт или слово) в приемник (16- или 32- битный регистр) и расширяет знак аналогично командам CBW/CWDE.

MOVZX – Пересылка с расширением нулями Копирует содержимое источника (регистр или переменная размером в байт или слово) в приемник (16- или 32-битный регистр) и расширяет нулями, то есть команда

movzx ax, bl

эквивалентна паре команд

mov al, bl

mov ah, 0

 

 

Примеры.

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

Команды этой группы применяются для выполнения булевых операций и обеспечивают работу с двоичными полями в байтах, словах и двойных словах.

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

OR – Выполняет побитовое «логическое ИЛИ» над приемником (регистр или переменная) и источником (число, регистр или переменная; источник и приемник не могут быть переменными одновременно) и помещаетрезультат в приемник. Любой бит результата равен 0, только если соответствующие биты обоих операндов были равны 0, и равен 1 в остальных случаях. Команду OR чаще всего используют для выборочной установки отдельных бит, например: команда

or al,00001111b

приведет к тому, что младшие четыре бита регистра AL будут установлены в 1.

При выполнении команды OR флаги OF и CF обнуляются, SF, ZF PF устанавливаются в соответствии с результатом, AF не определен.

NOT – Каждый бит приемника (регистр или переменная), равный нулю, устанавливается в 1, и каждый бит, равный 1, сбрасывается в 0. Флаги не затрагиваются.

TEST – Вычисляет результат действия побитового «логического И» над приемником (регистр или переменная) и источником (число, регистр или переменная; источник и приемник не могут быть переменными одновременно) и устанавливает флаги SF, ZF и PF в соответствии с полученным результатом, не сохраняя результат (флаги OF и CF обнуляются, значение AF не определено). TEST, так же как и СМР, используется в основном в сочетании с командами условного перехода (Jсс) условной пересылки данных (CMOVcc) и условной установки байт (SETcc).

XOR – Выполняет побитовое «логическое исключающее ИЛИ» над приемником (регистр или переменная) и источником (число, регистр или переменная; источник и приемник не могут быть переменными одновременно) и помещает результат в приемник. Любой бит результата равен 1 если соответствующие биты операндов различны, и нулю, если одинаковы. XOR используется для самых разных операций, например:

Хог ах, ах, обнуление регистра АХ

или

хог ах, bх

хог bх.ах

хог ах.bх; меняет местами содержимое АХ и ВХ

 

SETxx – Установка байта по условию Это набор команд, которые устанавливают приемник (восьмибитный регистр или переменная размером в один байт) в 1 или 0, если удовлетворяется или не удовлетворяется определенное условие. Условием в каждом случае реально является состояние тех или иных флагов, но, если команда из набора SETcc используется сразу после СМР, условия приобретают формулировки, соответствующие отношениям между операндами СМР. Например, если операнды СМР были неравны, команда SETNE, выполненная сразу после этого СМР, установит значение своего операнда в 1.

Примеры.






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных