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

    {
     > Really need an inline macro to add a character to the end of a string.
    How 'bout this one (from my book, of course):
    }

    Procedure AddStr14(Var Str : String; C : Char);
    InLine(
      $58/            {    POP   AX            ; get chr C in AX }
      $5F/            {    POP   DI            ; pop offset Str  }
      $07/            {    POP   ES            ; pop segment Str }
      $26/            {    ES:                 }
      $FE/$05/        {    INC   BYTE PTR [DI] ; inc length byte }
      $31/$DB/        {    XOR   BX,BX         }
      $26/            {    ES:                 }
      $8A/$1D/        {    MOV   BL,[DI]       ; get length byte }
      $01/$DF/        {    ADD   DI,BX         ; goto end of str }
      $AA);           {    STOSB               ; add character C }

    Var
      Str : String;

    begin
      Str := 'Bob';
      AddStr14(Str, ' ');
      AddStr14(Str, 'S');
      AddStr14(Str, 'w');
      AddStr14(Str, 'a');
      AddStr14(Str, 'r');
      AddStr14(Str, 't');
      WriteLn(Str)
    end.

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