Команды MOVSX и MOVZX позволяют перемещать данные между регистрами и ячейками памяти с расширением разрядности. Если используется команда MOVSX, то расширение происходит с учетом знака числа. Команда MOVZX расширяет разрядность чисел без учета знака.

 

Команда MOVSX
Синтаксис: MOVSX op1,op2
Операнды: op1 - r16/32
op2 - r8/16, m8/16
Назначение: Копирует данные из op2 в op1 с расширением знаком.
Процессор: 80386+
Флаги: Не изменяются
Комментарий: Команда MOVSX позволяет скопировать данные из источника (второй операнд) меньшего размера в приемник (первый операнд) большего размера. Результат будет дополнен битами таким образом, чтобы сохранить знак источника
Ограничения:
  1. В качестве приемника могут использоваться только 16- или 32-разрядные регистры общего назначения
  2. В качестве источника могут использоваться только 8- или 16-разрядные регистры или ячейки памяти
Примеры:
movsx	eax,ax
movsx	edx,[100h]
movsx	edx,cl
Команда MOVZX
Синтаксис: MOVZX op1,op2
Операнды: op1 - r16/32
op2 - r8/16, m8/16
Назначение: Копирует данные из op2 в op1 с расширением нулем.
Процессор: 80386+
Флаги: Не изменяются
Комментарий: Команда MOVZX позволяет скопировать данные из источника (второй операнд) меньшего размера в приемник (первый операнд) большего размера. Результат будет дополнен нулевыми битами.
Ограничения:
  1. В качестве приемника могут использоваться только 16- или 32-разрядные регистры общего назначения
  2. В качестве источника могут использоваться только 8- или 16-разрядные регистры или ячейки памяти
Примеры:
movzx	eax,ax
movzx	edx,[100h]
movzx	edx,cl