Name:
Location: Tijuana, Baja California N., Mexico

Soy un estudiante de Informatica en el TECNOLOGICO DE TIJUANA, y que trato de terminar mi carrera para poder hacer un profecionista exitoso. Pero lo mas Importante trato de ser un buen amigo aunque aveces me paso con la carrilla.

Google

Thursday, September 08, 2005

6.5. MULTIPLICACION Y DIVISION.

  • MULTIPLICACION


Para la multiplicación, la instrucción MUL maneja datos sin signo y la instrucción IMUL (multiplicación entera) maneja datos con signo. Ambas instrucciones afectan las banderas de acarreo y de desbordamiento. Como programador, usted tiene el control sobre el formato de los datos que procesa, y tiene la responsabilidad de seleccionar la instrucción de multiplicación apropiada. El formato general de MUL e IMUL es :

| [etiqueta:] | MUL/IMUL | registro/memoria |

Las operaciones de multiplicación básicas son byte a byte, palabra por palabra y palabras dobles por palabra dobles.

Byte por byte

Para multiplicar dos números de un byte, el multiplicando esta en el registro AL y el multiplicador es un byte en memoria o en otro registro. Para la instrucción MUL DL, la operación multiplica el contenido del AL por el contenido del DL. El producto generado esta en el registro AX. La operación ignora y borra cualquier información que pueda estar en el AH.




Palabra por palabra

Para multiplicar dos números de una palabra, el multiplicando esta en el registro AX y el multiplicador es una palabra en memoria o en otro registro. Para la instrucción MUL DX, la operación multiplica el contenido del AX por el contenido del DX. El producto generado es una palabra doble que necesita dos registros: la parte de orden alto (mas a la izquierda) en el DX y la parte de orden bajo (mas a la derecha) en el AX. La operación ignora y borra cualquier información que puede estar en el DX.

Palabra doble por palabra doble

Para multiplicar dos números de palabras dobles, el multiplicando esta en el registro EAX y el multiplicador es una palabra doble en memoria o en otro registro. El producto es generado en el par EDX:EAX. La operación ignora y borra cualquier información que ya este en el EDX.






En los ejemplos siguientes, el multiplicador esta en un registro, el cual especifica el tipo de operación:

INSTRUCCION MULTIPLICADOR MULTIPLICANDO PRODUCTO

MUL CL byte AL AX
MUL BX palabra AX DX:AX
MUL EBX palabra doble EAX EDX:EAX

En los ejemplos siguientes, los multiplicadores están definidos en memoria:

BYTE1 DB ?
WORD1 DW ?
DWORD1 DD ?

OPERACION MULTIPLICADOR MULTIPLIANDO PRODUCTO

MUL BYTE1 BYTE1 AL AX
MUL WORD1 WORD1 AX DX:AX
MUL DWORD1 DWORD1 EAX EDX:EAX

  • DIVISION
Para la división, la instrucción DIV (dividir) maneja datos sin signo y la IDIV (división entera) maneja datos con signo. Usted es responsable de seleccionar la instrucción apropiada. El formato general para DIV/IDIV es:

| [etiqueta:] | IDIV/DIV | {registro/memoria} |

Las operaciones de multiplicación básicas son byte entre byte, palabra entre palabra y palabras dobles entre palabra dobles.

Palabra entre palabra

Aquí el dividendo esta en el AX y el divisor es un byte en memoria o en otro registro. Después de la división, el residuo esta en el AH y el cociente esta en el AL. Ya que un cociente de un byte es muy pequeño -si es sin signo, un máximo de +255 (FFH) y con signo +127 (7FH)- esta operación tiene un uso limitado.






Palabra doble entre palabra

Para esta operación, el dividendo esta en el par DX:AX y el divisor es una palabra en memoria o en otro registro. Después de la división, el residuo esta en el DX y el cociente esta en el AX. El cociente de una palabra permite para datos sin signo un máximo de +32, 767 (FFFFH) y con signo +16, 383 (7FFFH). Tenemos:




Palabra cuádruple entre palabra doble

Al dividir una palabra cuádruple entre una palabra doble, el dividendo esta en el par EDX:EAX y el divisor esta en una palabra doble en memoria o en otro registro. Después de la división, el residuo esta en el EDX y el cociente en el AEX.


En los ejemplos siguientes, de DIV, los divisores están en un registro, que determina el tipo de operación:

OPERACION DIVISOR DIVIDENDO COCIENTE RESIDUO

DIV CL byte AX AL AH
DIV CX palabra DX:AX Ax DX
DIV EBX palabra doble EDX:EAX EAX EDX

En los ejemplos siguientes de DIV, los divisores están definidos en memoria:

BYTE1 DB ?
WORD1 DW ?
DWORD1 DD ?
... DIVISOR DIVIDENDO COCIENTE RESIDUO

DIV BYTE1 BYTE1 AX AL AH
DIV WORD1 WORD1 DX:AX AX DX
DIV DWORD1 DWORD1 EDX:EAX EAX EDX

0 Comments:

Post a Comment

<< Home