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

(*
From: LEE BARKER
Subj: FAST Up/Low Case CORRECTION
*)

Uses CRT;

  function LoStr(const s:string):string; assembler;
  asm
    push ds
    lds  si,s
    les  di,@result
    lodsb            { load and store length of string }
    stosb
    xor  ch,ch
    mov  cl,al
    jcxz @empty      { FIX for null string }
  @LowerLoop:
    lodsb
    cmp  al,'A'
    jb   @cont
    cmp  al,'Z'
    ja   @cont
    add  al,' '
  @cont:
    stosb
    loop @LowerLoop
  @empty:
    pop  ds
  end;  { LoStr }

  function UpStr(const s:string):string; assembler;
  asm
    push ds
    lds  si,s
    les  di,@result
    lodsb            { load and store length of string }
    stosb
    xor  ch,ch
    mov  cl,al
    jcxz @empty      { FIX for null length string }
  @upperLoop:
    lodsb
    cmp  al,'a'
    jb   @cont
    cmp  al,'z'
    ja   @cont
    sub  al,' '
  @cont:
    stosb
    loop @UpperLoop
  @empty:
    pop  ds
  end;  { UpStr }

VAR S : String;

BEGIN
  ClrScr;
  WriteLn(LoStr('LEE BARKER'));
  WriteLn(UpStr('lee barker'));
  Readkey;
END.

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