[Back to CMDLINE SWAG index] [Back to Main SWAG index] [Original]

    {
    This is another BAsm I've written to optimize my Program. Some of the
    comma-delimited fields have the Underscore Character in the place of Spaces. It
    is desirable For them to be replaced For use in my Program.

    BeFore writing this Procedure I was using:

    Procedure Kill_(Var Strng : String);
    Repeat
      Subpos := Pos('_',String);
      if subpos > 0
         then Strng[subpos] := ' ';
    Until Killpos Subpos = 0;
    end;

    This was getting called approx 250,000 times in my project, and Turbo ProFiler
    practically waved a red flag at me about it!  <grin>

    This is my new Procedure which screams as Compared to the previous routine.

    I am using TP 6.0 Professional.

    -------------  Code Snippet begins  --------------
    }
    Procedure KILL_(Var STRNG); Assembler;
    { This Procedure KILLS Underscores from a String _and MODifIES THE orIGinAL_ }
    Asm
      LES DI, STRNG
      xor CX, CX
      MOV CL, [ES:DI] { Get String Length}
      MOV AL, '_'
      inC DI  { Point to FIRST String Char }
      CLD
    @Scan_For_underscore_loop:
      SCASB
      JE @FOUND_UNDERSCorE
      LOOP @SCAN_For_UNDERSCorE_LOOP
      JMP @OUTTATHIS
    @FOUND_UNDERSCorE:
      DEC DI
      MOV Byte PTR [ES:DI], ' '
      inc di
      jmp @scan_For_underscore_loop
    (92 min left), (H)elp, More? @OUTTATHIS:
    end;

    {
    Does anyone more knowledgable in Assembly than I am have any suggestions For
    this Procedure?   I Realize I am working With the original copy of the String
    with this Procedure, and modifying it to boot, but I am saving the time to copy
    it to/from the stack when I am making the changes.    My Program doES take this
    into account, and ONLY passes Strings to the procedure.
    }

[Back to CMDLINE SWAG index] [Back to Main SWAG index] [Original]