Иллюстрированный самоучитель по Assembler

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 затирается.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.