Two different values at the same memory address - assembly <p>I have some code in assembly which behaves a little bit strange. I have a C extern function that calls with <em>asm</em> another function from an .asm file. This C function puts on the stack three addresses used by my function from .asm file. All went well untill this appeared:</p> <pre><code>; Let's say we take from the stack first parameter from my C function. ; This parameter is a string of bytes that respect this format: ; - first 4 bytes are the sign representation of a big number ; - second 4 bytes are the length representation of a big number ; - following bytes are the actual big number section .data operand1 dd 0 section .text global main main: push ebp mov ebp, esp mov eax, [ebp + 8] ; Here eax will contain the address where my big number begins. lea eax, [eax + 8] ; Here eax will contain the address where ; my actual big number begins. mov [operand1], eax PRINT_STRING "[eax] is: " PRINT_HEX 1, [eax] ; a SASM macro which prints a byte as HEX NEWLINE PRINT_STRING "[operand1] is: " PRINT_HEX 1, [operand1] NEWLINE leave ret </code></pre> <p>When running this code, I get at the terminal the correct output for [eax], and for [operand1] it keeps printing a number which will not change if I modify that first parameter of my C function. What am I doing wrong here?</p>