IMUL Turbo Assembler

При умножении с помощью IMUL двух 32-разрядных чисел неверно записывается результат. Результат должен быть в паре регистров EDX:EAX, но в EDX нули почему-то.

STACKSG SEGMENT PARA STACK
    DW 128 DUP(?)
STACKSG ENDS
;---------------------
DATASG SEGMENT PARA
    A DD 0FFFFFFFFh
    B DD 0FFFFFFFFh
    C DD 0FFFFFFFFh
    D DD 0FFFFFFFFh
    E DD 0FFFFFFFFh
    B_DIV_C DQ ?
DATASG ENDS
;---------------------
CODESG SEGMENT PARA 
    ASSUME DS:DATASG, CS:CODESG, ES:CODESG, SS:STACKSG
START:
    .486
    PUSH DS
    MOV AX, DATASG
    MOV DS, AX
    XOR AX, AX
    ;-------------------
    MOV EAX, D
    IMUL E
    
    MOV AX, 4C00h
    INT 21h
CODESG ENDS
END START

Ответы (1 шт):

Автор решения: HideME

Надо было использовать MUL, т.к. я забыл, что числа у меня беззнаковые.

→ Ссылка