title: what does size of registers and stack really mean in assembly x86
body: <p>I'm new to assembly , and I'm really confused , i read  several articles , and books but i couldn't  understand what does this mean</p>
  <p>in assembly x86 we have different  registers each register has specific  size , example</p>
  <p>EAX : 32bit</p>
  <p><strong>Q1- Well what does really mean 32bit ? does it mean , i can only store a value of 32bit size ?</strong></p>
  <p>if Yes</p>
  <p><strong>Q2 - If i have very long string how i can mov this string to my register ?</strong></p>
  <p><strong>Q3 - i want to know exactly  when i should  push and pop from stack ?</strong></p>
  <p><strong>Q4 i can store my values in my registers without stack ,Why we have a stack ? to solve which problem ?</strong></p>
  <p>if we take example  here is my C code :</p>
  <pre><code>#include&lt;stdio.h&gt;
  
  main() 
  {
      printf(&quot;Hello World&quot;);
  
  }
  </code></pre>
  <p>Here we pass Hello world to the printf function , and i can pass anythings big or small no matter , if i translate this code to assembly , first things i have to mov system call args to the registers and then call the system call and then int 0x80 . how about if instate of hello world i have a paragraph  ?</p>
  <p><strong>Q5 - also when i mov any data to registers , how i can choose which  register i should mov the data on it ?</strong></p>
  <p>Thanks .</p>