home *** CD-ROM | disk | FTP | other *** search
/ C!T ROM 5 / ctrom5b.zip / ctrom5b / PROGRAM / ASM / ALIB30B / CONV03.ASM < prev    next >
Assembly Source File  |  1994-10-15  |  2KB  |  71 lines

  1.     page    66,132
  2. ;******************************** CONV03.ASM *********************************
  3.  
  4. LIBSEG           segment byte public "LIB"
  5.         assume cs:LIBSEG , ds:nothing
  6.  
  7. ;----------------------------------------------------------------------------
  8. .xlist
  9.     include  mac.inc
  10.     include  common.inc
  11. .list
  12. comment 
  13. ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -( CONVERT )
  14. DWORD_TO_DEC_STR - convert a long integer value to an ASCIIZ string
  15. ;
  16. ; inputs:    DS:[SI] - pointing to a buffer space
  17. ;            DX:AX = long integer value
  18. ;            DWORD_TO_DEC_STR requires a 12-byte (or greater) buffer
  19. ;            
  20. ; output:    ASCIIZ string at DS:[SI]; numerals are right-justified
  21. ;* * * * * * * * * * * * * *
  22. 
  23.     PUBLIC    DWORD_TO_DEC_STR
  24. DWORD_TO_DEC_STR    PROC    FAR
  25.     APUSH   AX,BX,CX,DX,DI,SI,ES,DS
  26.     POP     ES
  27.     MOV     DI,SI
  28.     CLD
  29.     MOV     BX,AX
  30.     MOV     CX,000Bh
  31.     MOV     AL,20h    ; ' '
  32.     REPZ    STOSB
  33.     MOV     ES:[DI],CL
  34.     MOV     AX,BX
  35.     MOV     SI,000Ah
  36.     OR      DX,DX
  37.     PUSHF
  38.     JNS     lts_cont        ;jmp if positive
  39.     NOT     AX
  40.     NOT     DX
  41.     ADD     AX,0001
  42.     ADC     DX,+00
  43. lts_cont:    
  44.     MOV     CX,AX
  45.     MOV     AX,DX
  46.     XOR     DX,DX
  47.     DIV     SI
  48.     MOV     BX,AX
  49.     MOV     AX,CX
  50.     DIV     SI
  51.     XCHG    DX,BX
  52.     ADD     BL,30h    ; '0'
  53.     DEC     DI
  54.     MOV     ES:[DI],BL
  55.     MOV     BX,AX
  56.     OR      BX,DX
  57.     JNZ     lts_cont
  58.     DEC     DI
  59.     MOV     AL,20h    ; ' '
  60.     POPF
  61.     JNS     lts_exit
  62.     MOV     AL,2Dh    ; '-'
  63. lts_exit:    
  64.     STOSB
  65.     APOP    ES,SI,DI,DX,CX,BX,AX
  66.     RETF
  67. DWORD_TO_DEC_STR ENDP
  68.  
  69. LIBSEG    ENDS
  70.     end
  71.