- •Лекции 17 -
- •Структура машинной
- •Структура машинной команды
- •Структура машинной команды
- •Структура машинной команды
- •Структура машинной команды
- •Сочетания операндов
- •Система команд
- •Система команд
- •Команды пересылки
- •Команды пересылки данных
- •Команды пересылки данных
- •Команды пересылки данных
- •Команды пересылки данных
- •Команды пересылки данных
- •Команды пересылки
- •Команды пересылки
- •Команды пересылки данных
- •Команды пересылки данных
- •Команды пересылки
- •Команды пересылки данных
- •Команды пересылки данных
- •Прочие команды
- •Прочие команды
- •Прочие команды
- •Команды загрузки сегментных регистров
- •Команды ввода – вывода
- •Команды ввода – вывода
- •Команды ввода – вывода
- •Команды ввода – вывода
- •Команды обработки строк
- •Команды обработки строк
- •Команды обработки строк
- •Команды обработки строк
- •Команды обработки строк
- •Команды обработки строк
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Логические команды
- •Логические команды
- •Логические команды
- •Логические команды
- •Логические команды
- •Команды сдвигов
- •Команды сдвигов
- •Команды сдвигов
- •Команды сдвигов
- •Команды сдвигов
- •Команды сдвигов
- •Команды сдвигов
- •Команды сдвигов
- •Команды сдвигов
- •Команды обработки бит
- •Команды обработки бит
- •Команды обработки бит
- •Команды обработки бит
- •Команды обработки бит
- •Команды обработки бит
- •Команды работы с регистром флагов
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Пример 1
- •Пример 1
- •Пример 1
- •Пример 1
- •Пример 2
- •Пример 2
- •Пример 2
- •Пример 2
- •Пример 2
- •Пример 2
- •Пример 3
- •Пример 3
- •Пример 3
- •Пример 3
- •Пример 3
- •Пример 3
Команды пересылки данных
Команда копирования значения из источника в операнд назначение с расширением до 16 или 32 бит с заполнением старших разрядов значением бита знака источника:
MOVSX назначение, источник
Особенности:
назначением может быть РОН 16 или 32 бит,
источником может быть РОН или память 8 или 16 бит,
не влияет на регистр флагов.
Примеры:
movsx ax, [esi]
movsx eax, byte ptr [esi] movsx ecx, dx
Команды пересылки данных
Команда копирования значения из источника в операнд назначение с расширением до 16 или 32 бит с заполнением старших разрядов нулями:
MOVZX назначение, источник
Особенности:
назначением может быть РОН 16 или 32 бит,
источником может быть РОН или память 8 или 16 бит,
не влияет на регистр флагов.
Примеры:
movzx ax, [esi]
movzx eax, byte ptr [esi] movzx ecx, dx
Прочие команды
Команда вычисления и загрузки эффективного адреса: LEA назначение, источник
Особенности:
назначением может быть РОН 16 или 32 бит,
источником может быть выражение адреса,
не влияет на регистр флагов.
Примеры:
lea |
esi, value |
lea |
edi, [edx][eax*2]+500 |
Прочие команды
Команда копирования данных из источника в назначение с предварительной перестановкой байт:
MOVBE назначение, источник
Особенности:
назначением может быть РОН или память,
источником может быть РОН или память,
разрядность источника и назначения должны совпадать,
источником и назначением одновременно не могут быть два регистра или две ячейки памяти.
Примеры:
movbe |
eax, dword ptr [esi] |
movbe |
word ptr [edi], cx |
|
|
Прочие команды
Команда «ничего не делать»:
NOP
Команда идентификации процессора:
CPUID
Команда перекодировки согласно таблице:
XLAT / XLATB
Описание: определяет значение байта в таблице в памяти по адресу DS:[(E)BX+unsigned AL] и заносит это значение в регистр AL.
Команды загрузки сегментных регистров
Команды загрузки дальних указателей:
LDS
LES
LFS назначение, источник
LGS
LSS
Назначение – РОН, в который будет записано смещение. Источник – дальний указатель (32 или 48 бит).
РОН указанный в назначении должен быть той же разрядности, что и смещение в источнике.
Пример:
les |
edi, ds:[esi] |
|
|
Команды ввода – вывода
Команда чтения значения из порта:
IN назначение, источник
Назначение – регистр AL, AX или EAX.
Источник – непосредственное 8-ми разрядное значение, регистр DX.
Пример:
in |
al, 60h |
in |
ax, dx |
|
|
Команды ввода – вывода
Команда записи значения в порт:
OUT назначение, источник
Назначение – непосредственное 8-ми разрядное значение, регистр DX.
Источник – регистр AL, AX или EAX.
Пример:
out |
64h, al |
out |
dx, eax |
|
|
Команды ввода – вывода
Чтение строки из порта:
INS
INSB
INSW
INSD
Пересылает данные из порта (номер в регистре DX) в память по адресу ES:[(E)DI].
После пересылки значение регистра (E)DI автоматически изменяется в зависимости от разрядности данных (1, 2 или 4 байта).
Направление изменения зависит от флага DF в регистре флагов. Если DF=0, то значение увеличивается. Если DF=1, то значение уменьшается.
Команды ввода – вывода
Передача строки в порт:
OUTS
OUTSB
OUTSW
OUTSD
Пересылает данные из памяти по адресу DS:[(E)SI] в порт (номер в регистре DX).
После пересылки значение регистра (E)SI автоматически изменяется в зависимости от разрядности данных (1, 2 или 4 байта).
Направление изменения зависит от флага DF в регистре флагов. Если DF=0, то значение увеличивается. Если DF=1, то значение уменьшается.