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

    {Convert a Decimal to a String - Maximum number of bits = 16}

    Function Dec2Bin (D: Word; No_Bits: Byte): String;
    Var A   : Word;
        L   : Byte;
        S   : String;
    Begin
       S := '';
       A := Trunc (Exp ((No_Bits-1)*Ln (2)));
       For L := No_Bits downto 1 do
       Begin
          A := A div 2;
          If (D AND A)=A then S := S+'1' else S := S+'0';
       End;
       Dec2Bin := S;
    End;

    (*------------------------------------------------------*)
    Function BinStr(num:word;bits:byte):string; assembler;
    ASM
          PUSHF
          LES  DI, @Result
          XOR  CH, CH
          MOV  CL, bits
          MOV  ES:[DI], CL
          JCXZ @@3
          ADD  DI, CX
          MOV  BX, num
          STD
    @@1:  MOV  AL, BL
          AND  AL, $01
          OR   AL, $30
          STOSB
          SHR  BX, 1
          LOOP @@1
    @@3:  POPF
    End;

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