Конспект лекций Системное программирование (семестр 2) Возле названия каждой лекции написано число пар, в течение которых она будет читаться (+ ср обозначает

Вид материалаКонспект
Схема команды
Состояние флагов после выполнения команды
См. также
Схема команды
См. также
См. также
Подобный материал:
1   ...   39   40   41   42   43   44   45   46   ...   57

TEST


(TEST operand)

Логическое И

 

Схема команды: 

test приемник,источник 

Назначение: операция логического сравнения операндов приемник и источник размерностью байт, слово или двойное слово.

Синтаксис

Алгоритм работы:
  • выполнить операцию логического умножения над операндами приемник и источник: бит результата равен 1, если соответствующие биты операндов равны 1, в остальных случаях бит результата равен 0;
  • установить флаги.

Состояние флагов после выполнения команды:

11

07

06

02

00

OF

SF

ZF

PF

CF

0

r

r



0

Применение:

Команда test используется для логического умножения двух операндов. Результат операции, в отличие от команды and, никуда не записывается, устанавливаются только флаги. Эту команду удобно использовать для получения информации о состоянии заданных битов операнда приемник. Для анализа результата используется флаг zf, который равен 1, если результат логического умножения равен нулю.

        test    al,01h

        jnz     m1      ;переход, если нулевой бит al равен 1

        

См. также: урок 9 и команды or, xor, and, bt

XADD


(eXchange and ADD)

Обмен и сложение

 

Схема команды: 

xadd приемник,источник 

Назначение: суммирование и обмен двух значений.

Синтаксис

Алгоритм работы:
  • копировать содержимое операнда приемник в операнд источник;
  • выполнить сложение (приемник+источник);
  • поместить сумму в операнд приемник.

Состояние флагов после выполнения команды:

11

07

06

04

02

00

OF

SF

ZF

AF

PF

CF

r

r

r

r



r

Применение:

Команда xadd используется для выполнения операции обмена и сложения двух операндов.

        mov     al,08h

        mov     bl,01h

        xadd    al,bl   ;al=09h, bl=08h

        

См. также: уроки 7, 8 и команды add, xchg

XCHG


(eXCHanGe)

Обмен

 

Схема команды: 

xchg операнд_1,операнд_2 

Назначение: обмен двух значений между регистрами или между регистрами и памятью.

Синтаксис

Алгоритм работы:

обмен содержимого операнд_1 и операнд_2.

Состояние флагов после выполнения команды:

выполнение команды не влияет на флаги

Применение:

Команду xchg можно использовать для выполнения операции обмена двух операндов с целью изменения порядка следования байт, слов, двойных слов или их временного сохранения в регистре или памяти. Альтернативой является использование для этой цели стека.

;поменять порядок следования байт в слове

ch1     label   byte

        dw      0f85ch

...

        mov     al,ch1

        xchg    ch1+1,al

        mov     ch1,al

        

См. также: урок 7 и команды bswap, cmpxchg, xadd