- •Лекции 17 -
- •Структура машинной
- •Структура машинной команды
- •Структура машинной команды
- •Структура машинной команды
- •Структура машинной команды
- •Сочетания операндов
- •Система команд
- •Система команд
- •Команды пересылки
- •Команды пересылки данных
- •Команды пересылки данных
- •Команды пересылки данных
- •Команды пересылки данных
- •Команды пересылки данных
- •Команды пересылки
- •Команды пересылки
- •Команды пересылки данных
- •Команды пересылки данных
- •Команды пересылки
- •Команды пересылки данных
- •Команды пересылки данных
- •Прочие команды
- •Прочие команды
- •Прочие команды
- •Команды загрузки сегментных регистров
- •Команды ввода – вывода
- •Команды ввода – вывода
- •Команды ввода – вывода
- •Команды ввода – вывода
- •Команды обработки строк
- •Команды обработки строк
- •Команды обработки строк
- •Команды обработки строк
- •Команды обработки строк
- •Команды обработки строк
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Логические команды
- •Логические команды
- •Логические команды
- •Логические команды
- •Логические команды
- •Команды сдвигов
- •Команды сдвигов
- •Команды сдвигов
- •Команды сдвигов
- •Команды сдвигов
- •Команды сдвигов
- •Команды сдвигов
- •Команды сдвигов
- •Команды сдвигов
- •Команды обработки бит
- •Команды обработки бит
- •Команды обработки бит
- •Команды обработки бит
- •Команды обработки бит
- •Команды обработки бит
- •Команды работы с регистром флагов
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Пример 1
- •Пример 1
- •Пример 1
- •Пример 1
- •Пример 2
- •Пример 2
- •Пример 2
- •Пример 2
- •Пример 2
- •Пример 2
- •Пример 3
- •Пример 3
- •Пример 3
- •Пример 3
- •Пример 3
- •Пример 3
Команды пересылки данных
Команда обмена данными между регистрами или регистром и памятью:
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