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

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

Команда копирования значения из источника в операнд назначение с расширением до 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, то значение уменьшается.