8.Команды пересылки данных. Группы команд. Ограничения в использовании операндов.

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

Эти команды обеспечивают удобные методы пересылки байтов, слов и двойных слов между памятью и регистрами процессора. Они делятся на три типа:

Команды пересылки данных общего назначения.

MOV (Переслать) пересылает байт, слово или двойное слово из операнда источника в операнд назначения. Команда MOV используется при передаче данных между следующими элементами :

Команда MOV не может пересылать данные из памяти в память или из сегментного регистра в сегментный регистр. Пересылка из памяти в память может быть выполнена при помощи команды пересылки строк MOVS.

XCHG (Перестановка) переставляет содержимое двух операндов. Эта команда используется вместо трех команд MOV. Она не требует временного размещения в памяти одного из операндов в то время, когда другой загружается. Команда XCHG может менять местами два байта, два слова или два двойных слова. Операндами для команды XCHG могут служить два регистровых операнда или операнд-регистр и операнд, расположенный в памяти. Когда команда XCHG использует операнд, расположенный в памяти, она автоматически активизирует сигнал LOCK.

Команды работы со стеком.

PUSH (Поместить) декрементирует указатель стека (регистр ESP), затем копирует операнд-источник в вершину стека. Команда PUSH часто используется для размещения в стеке параметров перед вызовом процедуры. Внутри процедуры она может быть использована для резервирования пространства в стеке под временные переменные. Команда PUSH работает с операндами, размещенными в памяти, непосредственными операндами и с регистровыми операндами (включая регистры сегмента).

POP (Восстановить (данные) из стека) передает слово или двойное слово из текущей вершины стека (на которую указывает регистр ESP) операнду назначения и затем увеличивает значение регистра ESP, чтобы тот указывал на новую вершину стека. POP перемещает информацию из стека в регистр общего назначения, регистр сегмента или в память.

Команды преобразования типов.

Преобразование типов без знака

Преобразование типов выполняется по-разному для чисел со знаком и без. Для преобразования чисел без знака необходимо просто заполнить все старшие биты нулями.

Такое преобразование можно выполнить с помощью обычной команды MOV. Кроме того в системе команд процессора существует специальная команда — MOVZX (копирование с нулевым расширением). Первый операнд команды имеет размер 16 бит (слово), а второй — 8 бит (байт).

Преобразование типов со знаком

Для чисел со знаком всё немного сложнее. Если мы просто заполним старшую часть нулями, то результат будет положительным, а это не всегда верно. Поэтому преобразование выполняется путём копирования знакового бита на всю старшую часть. Для такого преобразования предназначена команда MOVSX (копирование со знаковым расширением). Первый операнд — слово, второй операнд — байт.

Существуют ещё две команды для преобразования типов со знаком: CBW (Convert Byte to Word — преобразовать байт в слово) и CWD (Convert Word to Double word — преобразовать слово в двойное слово). У этих команд нет явных операндов. Команда CBW преобразует байт, находящийся в регистре AL, в слово в регистре AX. Команда CWD преобразует слово, находящееся в регистре AX, в двойное слово в регистрах DX:AX. Эти команды удобно использовать вместе с командами умножения и деления.

Группы команд

Вопрос 5

Ограничения в использовании операндов.

hz