Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 курс / Лекции / Лекция 17 - 18 - Система команд IA-32.ppt
Скачиваний:
47
Добавлен:
18.02.2023
Размер:
612.35 Кб
Скачать

Команды пересылки данных

Команда обмена данными между регистрами или регистром и памятью:

XCHG операнд1, операнд2

Особенности:

Операции обмена память – память нет.

Операции обмена с сегментными регистрами нет.

Не оказывает влияния на регистр флагов.

Примеры:

xchg

eax, ecx

xchg

edx, [esi]

xchg

[edi], ecx

 

 

Команды пересылки данных

Команда перестановки байт из порядка младший-старший в порядок старший-младший (486+):

BSWAP регистр32

Особенности:

не влияет на регистр флагов

для 16-разрядных регистров результат не определен

Примеры:

bswap eax bswap ecx

Команды пересылки данных

Команда обмена и сложения операндов с записью результата в назначение (486+).

XADD назначение, источник

Особенности:

назначением может быть либо регистр либо память, источником может быть только регистр.

влияет на регистр флагов.

Примеры:

xadd

[esi], eax

xadd

edx, eax

 

 

Команды пересылки данных

Команда сравнения и обмена значениями источника и назначения (486+):

CMPXCHG назначение, источник

Сравнивает значения регистра AL, AX или EAX со значением первого операнда (назначением). Если два значения равны, то второй операнд (источник) загружается в первый операнд (назначение). В противном случае назначение загружается в AL, AX или EAX.

Особенности: влияет на регистр флагов. Примеры:

cmpxchg

[esi], edx

cmpxchg

cx, dx

 

 

Команды пересылки данных

Команда сравнения и обмена значениями источника и назначения (Pentium+):

CMPXCHG8B mem64

Сравнивает значения регистровой пары EDX:EAX со значением операнда (назначением). Если два значения равны, то значение в регистровой паре ECX:EBX загружается в назначение. В противном случае назначение загружается в регистровую пару EDX:EAX.

Особенности: влияет на регистр флагов. Примеры:

cmpxchg8b [esi]

Команды пересылки

данных

Команда помещения значения в стек: PUSH источник

Особенности:

качестве источника может выступать РОН, ячейка памяти, непосредственный операнд, сегментный регистр (разрядность данных 16 или 32 бита),

не влияет на регистр флагов.

Примеры:

push

eax

push

dx

push

word ptr [esi]

push

100

push

cs

 

 

Команды пересылки

данных

Команда получения значения из стека: POP назначение

Особенности:

в качестве назначения может выступать РОН, ячейка памяти, сегментный регистр (кроме CS) (разрядность данных 16 или 32 бит),

не влияет на регистр флагов.

Примеры:

pop

eax

pop

es

pop

dword ptr [edi]

 

 

Команды пересылки данных

Сохранение всех регистров общего назначения в стек:

PUSHA / PUSHAD

Особенности:

порядок занесения в стек: EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI;

не влияет на регистр флагов.

Команды пересылки данных

Команда восстановления значений всех регистров из стека:

POPA / POPAD

Особенности:

порядок изъятия из стека: EDI, ESI, EBP, ESP, EBX, EDX, ECX, EAX;

не влияет на регистр флагов.

Команды пересылки

данных

Расширение байта в регистре AL до слова в регистре AX с заполнением старших разрядов значением знакового бита регистра AL:

CBW

Расширение слова в регистре AX до двойного слова в регистре EAX с заполнением старших разрядов значением знакового бита регистра AX:

CWDE

Расширение двойного слова в регистре EAX до учетверенного слова в регистровой паре EDX:EAX с заполнением EDX значением знакового бита регистра AX:

CDQ