home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wunderki.zip / CINT.ASM < prev    next >
Assembly Source File  |  1993-08-16  |  1KB  |  109 lines

  1.  
  2. ; *******************************************************
  3. ; *                            *
  4. ; *     Turbo Pascal Run-time Library                   *
  5. ; *    Integer Str/Val    Routines (PChar)        *
  6. ; *                            *
  7. ; *     Copyright (c) 1988,92 Borland International     *
  8. ; *                            *
  9. ; *******************************************************
  10.  
  11.     TITLE    CINT
  12.  
  13.     INCLUDE    SE.ASM
  14.  
  15. CODE    SEGMENT    BYTE PUBLIC
  16.  
  17.     ASSUME    CS:CODE
  18.  
  19. ; Externals
  20.  
  21.     EXTRN    Int2Str:NEAR,Str2Int:NEAR
  22.  
  23. ; Publics
  24.  
  25.     PUBLIC    StrIntC,ValIntC
  26.  
  27. ; Str standard procedure (Integer)
  28.  
  29. StrIntC:
  30.  
  31.     ARG    Value,DWORD,1
  32.     ARG    Width,WORD,1
  33.     ARG    StrP,DWORD,1
  34.     ARG    StrLen,WORD,1
  35.     LOC    NumStr,BYTE,32
  36.  
  37.     ENTRY    FAR
  38.     MOV    AX,Value.w0
  39.     MOV    DX,Value.w2
  40.     LEA    DI,NumStr[32]
  41.     PUSH    SS
  42.     POP    ES
  43.     CALL    Int2Str
  44.     PUSH    DS
  45.     MOV    SI,DI
  46.     PUSH    SS
  47.     POP    DS
  48.     LES    DI,StrP
  49.     MOV    DX,StrLen
  50.     MOV    AX,Width
  51.     CMP    AX,DX
  52.     JLE    @@1
  53.     MOV    AX,DX
  54. @@1:    CMP    CX,DX
  55.     JLE    @@2
  56.     MOV    CX,DX
  57. @@2:    CMP    AX,CX
  58.     JGE    @@3
  59.     MOV    AX,CX
  60. @@3:    CLD
  61.     SUB    AX,CX
  62.     JE    @@4
  63.     PUSH    CX
  64.     MOV    CX,AX
  65.     MOV    AL,' '
  66.     REP    STOSB
  67.     POP    CX
  68. @@4:    REP    MOVSB
  69.     XOR    AL,AL
  70.     STOSB
  71.     POP    DS
  72.     EXIT
  73.  
  74. ; Val standard procedure (Integer)
  75.  
  76. ValIntC:
  77.  
  78.     ARG    StrP,DWORD,1
  79.     ARG    ErrPosP,DWORD,1
  80.  
  81.     ENTRY    FAR
  82.     LES    DI,StrP
  83.     MOV    CX,0FFFFH
  84.     MOV    AL,' '
  85.     CLD
  86.     REPE    SCASB
  87.     DEC    DI
  88.     MOV    CX,0FFFFH
  89.     XOR    AL,AL
  90.     REPNE    SCASB
  91.     NOT    CX
  92.     SUB    DI,CX
  93.     DEC    CX
  94.     CALL    Str2Int
  95.     JC    @@1
  96.     JCXZ    @@2
  97. @@1:    MOV    CX,DI
  98.     SUB    CX,StrP.ofs
  99.     INC    CX
  100.     XOR    AX,AX
  101.     MOV    DX,AX
  102. @@2:    LES    DI,ErrPosP
  103.     MOV    ES:[DI],CX
  104.     EXIT
  105.  
  106. CODE    ENDS
  107.  
  108.     END
  109.