home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast2.iso / asmutil / stdlib.zip / PUTL.ASM < prev    next >
Assembly Source File  |  1990-04-29  |  1KB  |  80 lines

  1. stdlib        segment    para public 'slcode'
  2.         assume    cs:stdlib
  3.         extrn    sl_putc:far
  4. ;
  5. ; Putl prints the value in DX:AX as a signed dword integer value.
  6. ;
  7.         public    sl_putl
  8. sl_Putl        proc    far
  9.         push    ax
  10.         push    bx
  11.         push    cx
  12.         push    dx
  13.         cmp    dx, 0
  14.         jge    Doit
  15.         push    ax
  16.         mov    al, '-'
  17.         call    sl_Putc
  18.         pop    ax
  19.         neg    dx
  20.         neg    ax
  21.         sbb    dx, 0
  22. ;
  23. DoIt:        call    puti2
  24.         pop    dx
  25.         pop    cx 
  26.         pop    bx 
  27.         pop    ax
  28.         ret
  29. sl_Putl        endp
  30. ;
  31. ; Putul prints the value in DX:AX as an unsigned dword integer value.
  32. ;
  33.         public    sl_PutUL
  34. sl_PutUL    proc    far
  35.         push    ax
  36.         push    bx
  37.         push    cx
  38.         push    dx
  39.         call    PutI2
  40.         pop    dx 
  41.         pop    cx 
  42.         pop    bx 
  43.         pop    ax
  44.         ret
  45. sl_PutUL    endp
  46. ;
  47. ; PutI2- Recursive routine to actually print the value in AX as an integer.
  48. ;
  49. Puti2        proc    near
  50.         call    Div10
  51.         cmp    ax, dx        ;See if dx:ax=0
  52.         jnz    NotDone
  53.         or    ax, ax
  54.         jz    Done
  55. NotDone:    push    bx
  56.         call    Puti2
  57.         pop    bx
  58. Done:        mov    al, bl
  59.         or    al, '0'
  60.         call    sl_Putc
  61.         ret
  62. PutI2        endp
  63. ;
  64. ; Div10- Divides DX:AX by 10 leaving the remainder in BL and the quotient
  65. ;     in DX:AX.
  66. ;
  67. Div10        proc    near
  68.         mov    cx, 10
  69.         mov    bx, ax
  70.         xchg    ax, dx
  71.         xor    dx, dx
  72.         div    cx
  73.         xchg    bx, ax
  74.         div    cx
  75.         xchg    dx, bx
  76.         ret
  77. Div10        endp
  78. stdlib        ends
  79.         end
  80.