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.

Ubicación de memoria de Ensamblador Básico

¿Son las siguientes lo mismo?

add eax, 2
mov [eax+2], ebx

vs

mov [eax+4], ebx

¿Es correcto decir que:

Suponiendo que el valor inicial almacenado en eax sea 0x40000050, ambos resultados escribirán el valor almacenado en ebx en la dirección de memoria 0x40000054? ¿O [eax+2] y [eax+4] se refieren a ubicaciones diferentes?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    No, no son exactamente iguales.

    La primera instrucción add eax, 2 sumará el valor 2 al valor almacenado actualmente en el registro eax. Así que suponiendo que eax inicialmente tenga el valor 0x40000050, después de esta instrucción eax tendrá el valor 0x40000052.

    La segunda instrucción mov [eax+2], ebx moverá el valor del registro ebx a la dirección de memoria señalada por la expresión [eax+2]. Dado que eax ahora tiene el valor de 0x40000052, esta instrucción moverá el valor en ebx a la dirección de memoria 0x40000054.

    Por otro lado, la instrucción mov [eax+4], ebx moverá el valor del registro ebx a la dirección de memoria señalada por la expresión [eax+4]. Dado que eax todavía tiene el valor original de 0x40000050, esta instrucción moverá el valor en ebx a la dirección de memoria 0x40000054 en su lugar.

    Por lo tanto, las dos instrucciones tienen efectos diferentes, ya que escriben en direcciones de memoria distintas.

Comments are closed.