M
Пример 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
386+ MOVZX Пересылка с расширением нуля
Команда пересылает байт в слово или двойное слово, а также слово в двойное слово с заполнением старших разрядов нулями. В качестве первого операнда (приемника) может использоваться 16- или 32-разрядный регистр общего назначения, в качестве второго – 8- или 16-разрядный регистр общего назначения или ячейка памяти такого же размера. Недопустима пересылка из памяти в память, в или из сегментного регистра, а также непосредственного значения. Фактически команда movzx увеличивает размер числа, считая его числом без знака.
Пример 1:
mov CL,5; CL=05h movsxAX,CL; AX=0005h
Пример 2:
mov CL,-5; CL=FBh movsxAX,CL; AX=00FBh
Пример 3:
mov BL,80h; BL=80h movsxECX,BL; ECX=00000080h
Пример 4:
;B полях данных mem dw 0FFFFh; mem=FFFFh ;B программном сегменте movsxEBX,mem; EBX=0000FFFFh
MUL Умножение целых чисел без знака
Команда inul выполняет умножение целого числа без знака, находящегося в регистре AL (в случае умножения на байт) или АХ (в случае умножения на слово), на операнд-источник (целое число без знака). Размер произведения в два раза больше размера сомножителей.
Для однобайтовых операций один из сомножителей помещается в регистр AL; после выполнения операции произведение записывается в регистр АХ.
Для двухбайтовых операций один из сомножителей помещается в регистр АХ; после выполнения операции произведение записывается в регистры DX:AX (в DX – старшая часть, в АХ – младшая). Предыдущее содержимое регистра DX затирается.