title   Conversie Intel8 -> Atom floating point

CSEG    SEGMENT PARA PUBLIC 'CODE'
        ASSUME CS:CSEG, DS:CSEG, ES:CSEG, SS:CSEG
        ORG 100H

START   PROC NEAR
        JMP  INTOM

ATOM    DQ  0
INTEL   DQ  -0.046875

INTOM:  MOV     AH,BYTE PTR INTEL[7]            ;LAADT MANTISSA IN AX:BX:BX
        MOV     AL,BYTE PTR INTEL[6]
        MOV     BH,BYTE PTR INTEL[5]
        MOV     BL,BYTE PTR INTEL[4]
        MOV     DH,BYTE PTR INTEL[3]
        MOV     DL,BYTE PTR INTEL[2]
        MOV     CX,11                           ;LAADT TELLER
LB1:    SHL     DX,1                            ;SCHUIF LINKS
        RCL     BX,1
        RCL     AX,1
        LOOP    LB1                             ;ELF MAAL DOEN
        SHL     AX,1                            ;EVEN OPSCHUIVEN
        MOV     CL,BYTE PTR INTEL[7]            ;LEES TEKEN VAN INTEL
        SHL     CL,1                            ;SCHUIF TEKEN IN CARRY
        RCR     AX,1                            ;SCHUIF TEKEN IN MANTISSA
        MOV     BYTE PTR ATOM[1],AH             ;ATOM MANTISSA WEGSCHRIJVEN
        MOV     BYTE PTR ATOM[2],AL
        MOV     BYTE PTR ATOM[3],BH
        MOV     BYTE PTR ATOM[4],BL
        MOV     AH,BYTE PTR INTEL[7]            ;LAADT INTEL EXPONENT
        MOV     AL,BYTE PTR INTEL[6]
        MOV     CL,4                            ;LAADT TELLER
        SHR     AX,CL                           ;BEPAAL EXPONENT
        AND     AX,7FFH                         ;ALLEEN ONDERSTE 11 BITS
        SUB     AX,1022                         ;ATOM EXPONENT BEREKENEN
        PUSHF                                   ;SAVE CARRY
        SHL     AL,1                            ;EVEN PLAATSMAKEN VOOR BIAS
        POPF                                    ;HAAL CARRY TERUG
        RCR     AL,1                            ;ZET CARRY ALS BIAS
        XOR     AL,80h                          ;INVERTEER OM KLOPPEND TE MAKEN
        MOV     BYTE PTR ATOM[0],AL             ;BERG ATOM EXPONENT OP
        RET

START   ENDP

CSEG    ENDS
        END     START
