title: Indirection through ESI and Pointers
body: <p>I am new to the assembly programming(x86 asm with MASM) and was learning about indirection supported by the <strong>ESI</strong> register you just need to place the address into the <strong>ESI</strong> and then use indirection operator and you would be able to access the pointed data. </p>
  
  <p>Q1.In the coding one can use <strong>[esi+4]</strong> but can't use <strong>esi+4</strong>(Results into an error).Why? Because in assembly writing indirection operator([]) explicitly is not necessary and is mainly for the programmer's understanding.</p>
  
  <p>Q2. If I apply indirection to the pointer variables then they don't seem to work. Why is it? Are the pointers only meant to be used as containers.</p>
  
  <p>Eg- </p>
  
  <pre><code>mov eax, [esi] ; It sets eax with the value of memory location pointed by esi
  
  mov eax,[ptr4] ; Does not work the same
  </code></pre>