title: Why There is a difference between assembly languages like Windows, Linux?
body: <p>I am relatively new to all this low level stuff,assembly language.. and want to learn more detail. Why there is a difference between Linux, Windows Assembly languages? </p>
  
  <p>As I understand when I compile a C code Operating system does not really produce pure machine or assembly code, it produces OS dependent binary code.But why ?</p>
  
  <p>For example when I use a x86 system, CPU only understands x86 ASM am I right?.So Why we dont write pure x86 assembly code and why there are different assembly variations based on Operating system? If we would write pure ASM or OS produce pure ASM there wouldn't be binary compatilibty issues between Operating systems or Not ? </p>
  
  <p>I am really wondering all reasons behind them. Any detailed answer, article, book would be great. Thanks.</p>