Red de conocimiento informático - Material del sitio web - ¿Cómo funciona exactamente la multiplicación en ensamblaje?

¿Cómo funciona exactamente la multiplicación en ensamblaje?

Correcto:

-a

1386: 0100 mov ax, 8000

1386: 0103 mov dx, 0

1386: 0106 mul dx

1386:0108

-t

AX=8000 BX= 0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI= 0000

DS=1386 ES=1386 SS=1386 CS=1386 IP=0103 NV UP EI PL NZ NA PO NC

1386: 0103 BA0000 MOV DX, 0000

-t

AX=8000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=1386 ES=1386 SS =1386 CS=1386 IP=0106 NV UP EI PL NZ NA PO NC

1386:0106 F7E0 MUL dx

-t

AX=0000 BX= 0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=1386 ES=1386 SS=1386 CS=1386 IP=0108 OV UP EI PL NZ NA PO CY

1386:0108 29C1 SUB CX,AX

Explicación:

La instrucción de multiplicar es un operando "único": en el caso de una multiplicación de 8 bits, uno multiplicador El valor predeterminado es el primer multiplicador. Si es una multiplicación de 8 bits, un multiplicador se coloca en AL por defecto, el otro multiplicador lo da la instrucción, debe ser un registro o unidad de memoria de 8 bits, el resultado es de 16 bits y se coloca en AX por por defecto si es una multiplicación de 16 bits, por defecto se coloca un multiplicador en AX, el otro multiplicador lo da la instrucción, debe ser un registro o unidad de memoria de 16 bits, el resultado es de 32 bits, por defecto se coloca en AX ( inferiores 16 bits) y DX (altos 16 bits); Aunque la multiplicación tiene dos operandos, la instrucción solo proporciona uno, el otro es el predeterminado del sistema.

Ejemplo: mov ax, 1122h

mov bx, 3344h

mul bl; terminar al*bl, resultado en ax

mul bx; terminar ax*bx, dar como resultado ax y dx