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

    {
    SEAN PALMER

    these routines change formats 'in place' without changing the number of
    bytes, ever, so you can safely use $V-
    }

    unit asciiz;  {routines for converting strings to asciiz and back}

    interface

    procedure asciiz2string(var a : string);
    procedure string2asciiz(var s : string);

    implementation

    {note: any asciiz must be length 255 or less}

    procedure asciiz2string(var a : string); assembler;
    asm
      push ds
      cld
      lds  si, a
      mov  cx, 0
     @L:
      xchg al, byte ptr[si]
      inc  si
      or   al, al
      jnz  @L
      mov  ax, si
      mov  si, word ptr a
      sub  ax, si   {calc length}
      dec  ax
      mov  [si], al
      pop  ds
    end;

    procedure string2asciiz(var s : string); assembler;
    asm
      push  ds
      lds   si, s
      les   di, s
      lodsb
      mov   cl, al
      xor   ch, ch
      cld
      rep   movsb
      xor   al, al
      stosb
      pop   ds
    end;

    end.

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