Команда пересылает байт в слово или двойное слово, а также слово в двойное слово с расширением знака. В качестве первого операнда (приемника) может использоваться 16- или 32-разрядный регистр общего назначения, в качестве второго - 8- или 16-разрядный регистр общего назначения или ячейка памяти такого же размера. Недопустима пересылка из памяти в память, в или из сегментного регистра, а также непосредственного значения. Фактически команда movsx увеличивает размер как положительного, так и отрицательного числа, ни изменяя ни его значения, ни знака.

Пример 1


mov CL,-5 ;CL=FBh
movsxAX,CL ;AX=FFFBh

Пример 2


mov CL,+5 ;CL=05h
movsxAX,CL ;AX=0005h

Пример 3


mov BL,-128 ;BL=80h
movsxECX,BL ;ECX=FFFFFF80h

Пример 4


; В полях данных
mem dw -3 ;mem=FFFDh
;В программном сегменте
movsxEB-X,mem ; EBX=FFFFFFFDh