Function Hex2Bin (B : Byte) : String;

Var
  Temp : String [8];
  Pos, Mask : Byte;

begin
  Temp := '00000000';
  Pos := 8;
  Mask := 1;
  While (Pos > 0) Do
    begin
      if (B and Mask)
        then
          Temp [Pos] := '1';
      Dec (Pos);
      Mask := 2 * Mask;
    end;
  Hex2Bin := Temp;
end;







Function Hex2Bin( HexByte:Byte ):String; External; {$L HEX2Bin.OBJ}
Var i : Integer;
begin
  For i := $00 to $0F do WriteLn( Hex2Bin(i) );
end.
(*********************************************************************)

 The Assembly source ...

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
code        segment Byte 'CODE'     ; HEX2Bin.Asm
            assume  cs:code
; Function Hex2Bin( HexByte :Byte ) :String;
String      equ     dWord ptr [bp+6]
HexByte     equ     [bp+4]
            public  Hex2Bin
Hex2Bin     proc    Near            ; link into main TP Program
            push    bp              ; preserve
            mov     bp,sp           ; stack frame
            les     di, String      ; result String Pointer
            cld                     ; Forward scan
            mov     cx,8            ; 8 bits in a Byte
            mov     al,cl           ; to set
            stosb                   ; binary String length
            mov     ah, HexByte     ; get the hex Byte
    h2b:    xor     al,al           ; cheap zero
            rol     ax,1            ; high bit to low bit
            or      al,'0'          ; make it ascii
            stosb                   ; put it in String
            loop    h2b             ; get all 8 bits
            pop     bp              ; restore
            ret     2               ; purge stack & return
Hex2Bin     endp
code        ends
            end
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

 Here's the assembled OBJ File ...

 Put all of this remaining message in a Text File named HEX2Bin.SCR,
 then Type "DEBUG < HEX2Bin.SCR" (no quotes) to create HEX2Bin.ARC;
 then extract HEX2Bin.OBJ using PKUNPAK or PAK ...
 ---------------------------- DEBUG script ----------------------------
 N HEX2Bin.ARC
 E 0100 1A 02 48 45 58 32 42 49 4E 2E 4F 42 4A 00 5E 65 00 00 00 4A 19
 E 0115 13 22 60 F2 65 00 00 00 80 0D 00 0B 68 65 78 32 62 69 6E 2E 41
 E 012A 53 4D A9 96 07 00 00 04 43 4F 44 45 44 98 07 00 20 1D 00 02 02
 E 013F 01 1F 90 0E 00 00 01 07 48 45 58 32 42 49 4E 00 00 00 6A 88 04
 E 0154 00 00 A2 01 D1 A0 21 00 01 00 00 55 8B EC C4 7E 06 FC B9 08 00
 E 0169 8A C1 AA 8A 66 04 32 C0 D1 C0 0C 30 AA E2 F7 5D C2 02 00 21 8A
 E 017E 02 00 00 74 1A 00
 Rcx
 0084
 W
 Q
 ----------------------------------------------------------gbug-1.0b--
