home *** CD-ROM | disk | FTP | other *** search
/ DOS Wares / doswares.zip / doswares / DATABASE / DBASE4NL / SAMPLES.ZIP / STRSUBST.ASM < prev    next >
Encoding:
Assembly Source File  |  1993-05-18  |  2.0 KB  |  67 lines

  1. ; Strsubst.asm (Bronbestand voor Strsubst.bin)
  2. ;
  3. ; Vervang tekens in een tekenreeks.
  4. ;
  5. ; Gebruik - Met het commando CALL:
  6. ;
  7. ;       LOAD Strsubst
  8. ;       CALL Strsubst WITH <Tuitdr1>, <Tuitdr2>, <Tuitdr3>
  9. ;
  10. ; Gebruik - Met de functie CALL():
  11. ;
  12. ;       LOAD Strsubst
  13. ;       uitkomst = CALL("Strsubst", <Tuitdr1>, <Tuitdr2>, <Tuitdr3>)
  14. ;
  15. ;       Met het programma Strsubst wordt in <Tuitdr1> elke keer
  16. ;       dat het eerste teken van <Tuitdr2> voorkomt, dit teken 
  17. ;       vervangen door het eerste teken in <Tuitdr3>.
  18. ;
  19. ;  Versie 2.0/0422
  20. CODE    SEGMENT BYTE PUBLIC 'CODE'
  21. STRSUB  PROC    FAR
  22. ASSUME  CS:CODE
  23.  
  24.         PARAM1  EQU   ES:[DI+0]
  25.         PARAM2  EQU   ES:[DI+4]
  26.         PARAM3  EQU   ES:[DI+8]
  27.         PARAM4  EQU   ES:[DI+12]
  28.         PARAM5  EQU   ES:[DI+16]
  29.         PARAM6  EQU   ES:[DI+20]
  30.         PARAM7  EQU   ES:[DI+24]
  31.  
  32. START:
  33.         PUSH  BP                ; Sla het stack-frame op
  34.         MOV   BP, SP
  35.  
  36. ; Stop als er niet tenminste 3 parameters zijn.
  37.         CMP   CX, 3
  38.         JL    DONE
  39.  
  40. ; Laad eerste byte van tweede parameter in CL
  41.         LDS   BX, PARAM2        ; DS:BX wijst naar tweede parameter
  42.         MOV   CL, [BX]          ; Sla eerste byte op
  43.  
  44. ; Laad eerste byte van derde paramter in CH
  45.         LDS   BX, PARAM3        ; DS:BX wijst naar derde parameter
  46.         MOV   CH, [BX]          ; Sla eerste byte op in CH
  47.  
  48. ; Wijs met DS:BX naar eerste parameter
  49.         LDS   BX, PARAM1
  50.  
  51. ; Maak een lus voor elk teken in eerste parameter
  52. AGAIN:  MOV   AL, [BX]          ; Plaats het volgende teken in AL
  53.         CMP   AL, 0             ; Is einde van de reeks bereikt?
  54.         JE    DONE              ;    Ja:stoppen
  55.         CMP   AL, CL            ; Is dit het gezochte teken?
  56.         JNE   NEXT              ;    Nee: niet vervangen
  57.         MOV   [BX], CH          ;    Ja: vervangen
  58. NEXT:   INC   BX                ; Wijs naar volgend teken
  59.         JMP   AGAIN             ;
  60.  
  61. DONE:   POP   BP                ; Herstel het stack-frame
  62.         RET
  63.  
  64. STRSUB  ENDP
  65. CODE    ENDS
  66.         END
  67.