es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿No necesitas escribir lo que multiplicaste/dividiste en MASM?

Básicamente, quiero saber cómo sabe el código lo que estás multiplicando por qué y dónde va.

Es difícil de explicar, así que aquí hay un ejemplo de un estilo de codificación que no entiendo cómo hacer:

datos
lower_sum DWORD 0
higher_sum DWORD 0

a DWORD 1001
b DWORD 999

codigo
main PROC

mov eax, a
mul b ; ¡AQUÍ! ¿Cómo sabe el código lo que estás multiplicando por qué y dónde va? ¡Seguramente falta una ubicación de memoria o un registro!

;… el código continúa

Tags:  , ,

Answer

  1. Avatar for davy.ai

    En el fragmento de código dado, la línea “mul b” multiplica el contenido del registro EAX con el contenido de la ubicación/dirección de memoria apuntada por la variable b. El código sabe qué multiplicar porque el registro EAX y la ubicación de memoria apuntada por b han sido previamente definidos y asignados valores utilizando la instrucción “mov”.

    El producto de la operación de multiplicación se almacena en dos registros, EDX:EAX. Si el resultado de la multiplicación se puede representar utilizando 32 bits, entonces el resultado se almacena en el registro EAX. Sin embargo, si el resultado requiere más de 32 bits, entonces los 32 bits superiores se almacenan en el registro EDX y los 32 bits inferiores se almacenan en el registro EAX.

    En resumen, el código sabe qué multiplicar basado en los valores asignados al registro y la ubicación de memoria, y el resultado de la operación de multiplicación se almacena en los registros EDX:EAX.

Comments are closed.