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

  1.  
  2. ; *******************************************************
  3. ; *                            *
  4. ; *     Turbo Pascal Run-time Library                   *
  5. ; *    Integer Str/Val    Routines            *
  6. ; *                            *
  7. ; *     Copyright (c) 1988,92 Borland International     *
  8. ; *                            *
  9. ; *******************************************************
  10.  
  11.     TITLE    SINT
  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    StrInt,ValInt
  26.  
  27. ; Str standard procedure (Integer)
  28.  
  29. StrInt:
  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.     STOSB
  62.     SUB    AX,CX
  63.     JE    @@4
  64.     PUSH    CX
  65.     MOV    CX,AX
  66.     MOV    AL,' '
  67.     REP    STOSB
  68.     POP    CX
  69. @@4:    REP    MOVSB
  70.     POP    DS
  71.     EXIT
  72.  
  73. ; Val standard procedure (Integer)
  74.  
  75. ValInt:
  76.  
  77.     ARG    StrP,DWORD,1
  78.     ARG    ErrPosP,DWORD,1
  79.  
  80.     ENTRY    FAR
  81.     LES    DI,StrP
  82.     MOV    CL,ES:[DI]
  83.     XOR    CH,CH
  84.     INC    DI
  85.     JCXZ    @@2
  86. @@1:    CMP    BYTE PTR ES:[DI],' '
  87.     JNE    @@2
  88.     INC    DI
  89.     LOOP    @@1
  90. @@2:    CALL    Str2Int
  91.     JC    @@3
  92.     JCXZ    @@4
  93. @@3:    MOV    CX,DI
  94.     SUB    CX,StrP.ofs
  95.     XOR    AX,AX
  96.     XOR    DX,DX
  97. @@4:    LES    DI,ErrPosP
  98.     MOV    ES:[DI],CX
  99.     EXIT
  100.  
  101. CODE    ENDS
  102.  
  103.     END
  104.