Ciao a tutti,

Ho da poco iniziato la pratica con gli interrupt del DOS e mi sono imbattuto in un problema: la stampa dei numeri.

Precisamente al momento quelli a 2 cifre...visto che stampa un carattere alla volta e si basa su ASCII ho fatto in questo modo:
codice:
CPU 386

SEGMENT    STACKSEGM   ALIGN=16   STACK    USE16    CLASS=STACK

SEGMENT    DATASEGM    ALIGN=16   PUBLIC   USE16    CLASS=DATA

numero     dw         93

SEGMENT    CODESEGM    ALIGN=16   PUBLIC   USE16    CLASS=CODE

..start:

  mov    ax, DATASEGM
  mov    ds, ax
  
  mov    ax, [numero]
  
  mov    dh, 16h
  div    dh
  
  add    al, 30h
  mov    dl, al
  mov    ah, 02h
  int    21h
  
  add    ah, 30h
  mov    dl, ah
  mov    ah, 02h
  int    21h
  
  
  mov    ah, 4Ch
  mov    al, 00h
  int    21h
Cioè, prendo il numero, lo divido per 10..e sommo sia alla prima cifra che alla seconda il numero 30h (così dovrei avere il carattere corrispondente). Il problema è che la stampa è errata, non mostra i numeri esatti.

Se l'ora non mi gioca brutti scherzi controllo i registri giusti...


Grazie a tutti ^^

Ciao,
Patrick Jane