title: To learn assembly - should I start with 32 bit or 64 bit?
body: <p>I'm really wanting to learn assembly. I'm pretty good at c/c++, but want a better understanding of what's going on at a lower level.</p>
  
  <p>I realize that assembly related questions have been asked before, but I'm just looking for some direction that's particular to my situation:</p>
  
  <p>I'm running windows 7, and am confused about how I should start working with assembly. Do I <strong>have</strong> to start with x64 because I'm running windows 7? Some people have said 'start with 32 bit first' - how do I go about doing this? What does my operating system have to do with my ability to write assembly for '32' or '64' bit. In fact, what does 'n bit' assembly mean, where n is a number??</p>
  
  <hr>
  
  <p>Edit:</p>
  
  <p>Here are some links that have helped me get started with assembly; others who are just getting started may find them helpful. I'll keep updating this list as I continue on my assembly journey :)</p>
  
  <p>Note: As I've been learning, I've decided to focus on programming with masm32. Therefore most of the below resources focus on that.</p>
  
  <ul>
  <li><a href="/questions/tagged/x86" class="post-tag" title="show questions tagged &#39;x86&#39;" rel="tag">x86</a>  <a href="https://stackoverflow.com/tags/x86/info">tag wiki</a> (beginner guides, reference manuals, ABI documentation, and more.)</li>
  <li><a href="http://www.masm32.com" rel="noreferrer">www.masm32.com</a></li>
  <li><a href="http://en.wikibooks.org/wiki/X86_Assembly" rel="noreferrer">X86 Assembly WikiBook</a></li>
  <li><a href="http://en.wikibooks.org/wiki/X86_Disassembly" rel="noreferrer">X86 Dissassembly WikiBook</a> (great for understanding some conventions, and the basics of how higher level code translates into assembly)</li>
  <li><a href="http://www.winasm.net/" rel="noreferrer">WinAsm IDE</a> (plays nicely with masm32)</li>
  <li><a href="http://www.acm.uiuc.edu/sigwin/old/workshops/winasmtut.pdf" rel="noreferrer">Intro: Assembly for Windows</a> (all code examples are for masm32)</li>
  <li><a href="http://www.ctyme.com/intr/int.htm" rel="noreferrer">List of Interrupts</a></li>
  <li><a href="http://help-site.com/local/ASMTUT.TXT" rel="noreferrer">Assembly Tutorial</a> (great for helping to understand core concepts)</li>
  <li><a href="http://www.cs.virginia.edu/~evans/cs216/guides/x86.html#registers" rel="noreferrer">x86 Assembly Guide</a></li>
  <li><p><a href="http://agner.org/optimize/" rel="noreferrer">Agner Fog's Software optimization resources</a>, including some good stuff about calling conventions on different platforms (Windows vs. Linux/OS X), as well as a lot of examples of how to do specific things efficiently.  Not great for total beginners, but great for intermediate to advanced readers.</p>
  
  <p>(He also has detailed performance info for each instruction for Intel and AMD CPUs, excellent for serious performance micro-optimization.  Some beginners might want to look at some of that to get started thinking about how CPUs work, and why you might do something one way instead of another.)</p></li>
  </ul>