title: Assembly memory allocation
body: <p>I am trying to learn assembly language and I need clarification on something.  Please correct me if I am wrong on any of this since I don't know much about assembly.</p>
  
  <p>All the tutorials I watch have the variables of assembly programs assigned to a memory address like <code>0x0000</code>, and I can understand that you must manually assign memory addresses in assembly, but how do you know what address to use?</p>
  
  <p>Obviously it makes sense to start at the lowest memory address possible, but what if the variable you are assigning is larger than the memory available at <code>0x0000</code>?  Would the variable in question run over to <code>0x0001</code> or <code>0x0002</code>?  If it did wouldn't that mess up other variables assigned spaces with similar numbering (or are you not supposed to assign them that close)?</p>
  
  <p>If I have two programs written in assembly running at the same time (in a modern OS) and I have used the same memory addresses in both programs, will one program conflict with the other, or does the OS just assign an available memory address regardless of what was actually written in the program?</p>
  
  <p>Any information on the subject is appreciated.</p>