title: what is the ultimate difference between a 16-bit and 32-bit application?
body: <p>32-bit x86 is a superset of 16-bit x86. Suppose I write a code in 16-bit x86. It should ideally work on system with 32-bit x86 without any hitch. But that is not the case. Compatibility is an issue here. But why exactly? Is it because 32-bit OS installed on 32-bit x86 machine loads the programs differently in the memory and manages the memory differently? 
  Are different memory-management requirements the real difference between 16-bit and 32-bit applications? </p>