RE:Lio con 32 bits o 16 bits
Bueno,
el ASM es el ASM, en DOS, Windows ó Linux. No cambia. Lo que sí es cierto es que para hacer una ventana en Windows, por ejemplo, no tenés la necesidad de programarla de cero, porque si vas a hacer eso, ¿qué gracia tiene?. Windows (y linux, etc) tiene ya construida toda una estructura que crea la ventana y la implementa a través de un conjunto de rutinas que llama API (Application Programming Interface). Ahora, si pensamos que la rutina ya está construida, es lógico además que tenga definidos los parámetros que toma y el tipo de los mismos. Esto implica que cuando vayas a programar un ventana en Windows tengas que emplear esa rutina y adaptar e inicializar los datos de acuerdo a lo que requiere esa función. Esta es la diferencia fundamental de la construcción de programas DOS y Windows. En DOS vos hacias todo (pero TODO) como querías y en Windows reutilizas lo que ya trae el sistema operativo. Sin embargo para hacer uso de esas cosas hay que "sacrificar" cierta libertad.
Después, lo que sabés lo podés usar. Lo que pasa que vas a encontrar muchos casos como este que te mencioné, que te van a obligar a usar ciertas cosas y hacer un código menos ASM y más API. Por eso antes de empezar con esto, conviene leer un poco sobre la arquitectura de windows, que se basa en un sistema de "mensajes" entre los programas, el sistema operativo y demás.
Otra cosita más, no confundas 16 bits = DOS y 32 bits = Windows; porque si bien es cierto que la mayoría de los programas de DOS eran de 16 bits y casi todo lo de Windows es de 32 bits, no es necesariamente un sinónimo.
Un saludo y ojalá te sirva