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

    {
    I needed a routine to convert a byte value into a string with leading zeros.
    > So I made one in BASM: Byte2lzStr. If you want, include this in SWAG.
    }
    var s: string;
        tel, n : byte;

    procedure Byte2lzStr( n, width: byte; var str: string ); assembler;
      { Byte to string with leading zeros }
    asm
            std                 { string operations backwards }
            mov   al, [n]       { numeric value to convert    }
            mov   cl, [width]   { width of str                }
            xor   ch, ch        { clear ch                    }
            les   di, str       { adress of str               }
            mov   [di], cl      { length of str               }
            add   di, cx        { start with last char str    }
    @start: jcxz  @exit         { done?                       }
            aam                 { divide al by 10             }
            add   al, 30h       { convert remainder to char   }
            stosb               { store digit                 }
            xchg  al, ah        { swap remainder and quotient }
            dec   cl            { count down                  }
            jmp   @start        { next digit                  }
    @exit:
    end  { Byte2lzStr };

    begin
      randomize;
      for tel := 1 to 24 do
      begin
        n := random( 256 );
        Byte2lzStr( n, 5, s );
        writeln( tel:2,':  ', n:3,'  ', s,'  [',length(s),']' );
      end;
    end.

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