Ciao. Allora anzitutto io quando scrivo un codice in assembly scrivo prima di .model... la direttiva .386.
Infatti questo serve per scegliere il tipo di processore (ovvero la grandezza dei registri e roba simile.
non credo che tuttavia sia necessario.
L'errore che ti fa il compilatore non è anomalo... ho provato a scrivere un codice così ed ecco che il compilatore si è rifiutato di eseguire il suo lavoro.
Non sono sicuro della causa di ciò... comunuqe quando programmavo per Dos (ora sono passato a win) non caricavo mai il registro DS in quanto puntava già al segmento corretto.
Ti consiglio di eliminare la riga: Non dovrebbero esserci problami.
Ad ogni modo non ci sono errori nel tuo codice.... Anche senza la direttiva .386 (o altro) dovrebbe andare...
Forse è dovuto al compilatore....
prova con "ml /coff /Cp /c "nomefile.asm""
così il tutto non viene passato al linker, ma dovrai farlo dopo....
Inoltre prova ascaricarti A86. e' un compilatore (non freeware) che in versione demo assembla codice fino a .286 (in pratica registri a 16 bit), linka direttamente (solo file .COM) ed è mooolto flessibile.
Il Masm te lo consiglio per programmazione sotto win32...
Ciao.

P.S. --> Se vuoi a86 te lo spedisco per mail assieme a qualche manuale se vuoi.