| <<< IMUL Instruction | Index | DIV Instruction >>> |
The following fragment computes 8-bit signed multiplication (48 × 4):
mov al, 48
mov bl, 4
imul bl ; AX = 00C0h (decimal +192), OF = 1
Because AH is not a sign extension of AL, the Overflow flag is set to 1.
The following instructions perform 8-bit signed multiplication of (-4 × 4), producing -16 in AX:
mov al, -4
mov bl, 4
imul bl ; AX = FFF0h, OF = 0
AH is a sign extension of AL, meaning that the signed result fits within AL, therefore the Overflow flag is cleared.
The following instructions perform 16-bit signed multiplication (48 × 4), producing +192 in DX:AX:
mov ax, 48
mov bx, 4
imul bx ; DX:AX = 0000h:00C0h , OF = 0
Here, DX is a sign extension of AX, so the Overflow flag is cleared.
32-bit signed multiplication example:
.data
signed_val SDWORD ? ; Data type is signed doubleword
.code
mov eax, +4823424
mov ebx, -423
imul ebx ; EDX:EAX = FFFFFFFFh:86635D80h, OF = 0
move signed_val, eax ; store the result
EDX is a sign extension of EAX, so the Overflow flag is cleared.
| <<< IMUL Instruction | Index | DIV Instruction >>> |