; Richard Pavlicek ; ;Below is my routine, which displays (in decimal) the 32-bit number in ;bx:ax. For a 16-bit number, simply set bx to zero. ;--- Display number | bx high word, ax low word DNUMP: mov cx,10 ;divisor and flag push cx ;put flag on stack ;- divide & store digit loop DNUM1: xchg ax,bx ;make ax high word, bx low word sub dx,dx ;extend high word div cx ;dx = remainder, ax high quotient xchg ax,bx ;save high quotient, get low word div cx ;dx = digit (0-9), ax low quotient push dx ;save digit (remainder) on stack mov dx,bx ;copy so not destroyed below or dx,ax ;is full quotient zero? jnz DNUM1 ;no, continue pop dx ;get most significant digit ;- display loop DNUM2: or dl,30h ;convert to ASCII digit mov ah,02h ;DOS display character function int 21h ;display it pop dx ;get next digit or flag cmp dx,cx ;is it a digit (less than 10)? jc DNUM2 ;yes, continue display retn ;no, flag met (stack normal)