home *** CD-ROM | disk | FTP | other *** search
/ RBBS in a Box Volume 1 #3.1 / RBBSIABOX31.cdr / msch / ms_ieee.asm < prev    next >
Assembly Source File  |  1983-01-21  |  3KB  |  84 lines

  1. ;  2) From: ST0030     50-Lines
  2. ; On:15 JAN 1983  At: 02:22
  3. ; To: ST3891     Cc: ST0030
  4. ; Subject: REAL NUMBER HELP
  5. ;
  6. ;
  7. ; MIKE,
  8. ;
  9. ; THE FOLLOWING PROGRAMS (asm) WILL CONVERT TO AND FROM MICROSOFT
  10. ; REAL NUMBER AND THE IEEE STANDARD. THE ONLY DIFFERENCE IS THE EXPONENT
  11. ; BIAS.
  12.  
  13. ; KEEP IN MIND THAT IN MEMORY THE FIRST THREE BYTES ARE THE MANTISSA
  14. ; AND THE 4TH BYTE IS THE EXPONENT.
  15. ;
  16. ; GOOD LUCK, DAVE BAKER ST0030
  17. ;
  18. ;
  19. TITLE CONVERT IEEE/MICROSOFT REAL FORMATS
  20.         NAME        CONV_REAL
  21. ;
  22. BSEG            SEGMENT         WORD PUBLIC 'CODE'
  23.                 ASSUME          CS:BSEG,DS:BSEG,ES:BSEG,SS:BSEG
  24. ;
  25. ;
  26. M2IREAL         PROC            NEAR
  27.                 PUBLIC          M2IREAL
  28. ;
  29. ; ENTRY - DX:AX = MICROSOFT REAL NUMBER
  30. ; EXIT  - DX:AX = IEEE REAL NUMBER
  31. ;
  32.                 PUSH            CX
  33.                 PUSH            BX
  34.                 MOV             CX,AX           ; SAVE LS PART
  35.                 MOV             BX,DX           ; AND MS PART
  36.                 XOR             DX,DX
  37.                 MOV             AL,BH           ; AL = MICROSOFT EXPONENT
  38.                 SUB             AL,2
  39.                 SHR             AL,1            ; SHIFT EXPONENT
  40.                 JNC             M2_00
  41.                 MOV             DL,80H          ; SEL BIT 0 OF EXPONENT
  42. M2_00:          MOV             AH,BL           ; GET MICROSOFT SIGN
  43.                 AND             AH,80H
  44.                 OR              AL,AH           ; AL = IEEE EXPONENT AND SIGN
  45.                 MOV             DH,AL
  46.                 AND             BL,7FH
  47.                 OR              DL,BL
  48.                 MOV             AX,CX           ; DS:AX = IEEE FORMAT
  49.                 POP             BX
  50.                 POP             CX
  51.                 RET
  52. M2IREAL         ENDP
  53. ;
  54. ;
  55. I2MREAL         PROC            NEAR
  56.                 PUBLIC          I2MREAL
  57. ;
  58. ; ENTRY - DS:AX = IEEE REAL NUMBER
  59. ; EXIT  - DS:AX = MICROSOFT REAL NUMBER
  60. ;
  61.                 PUSH            CX
  62.                 PUSH            BX
  63.                 MOV             BX,DX           ; SAVE MS PART
  64.                 MOV             CX,AX           ; AND LS PART
  65.                 XOR             DX,DX           ; CLEAR DX
  66.                 MOV             AL,BH           ; GET EXP AND SIGN
  67.                 SHL             AL,1            ; SHIFT EXPONENT
  68.                 JNC             I2_00
  69.                 MOV             DL,80H
  70. I2_00:          TEST            BL,80H
  71.                 JZ              I2_01
  72.                 OR              AL,1
  73. I2_01:          ADD             AL,2            ; AL - IEEE EXPONENT
  74.                 MOV             DH,AL
  75.                 AND             BL,7FH
  76.                 OR              DL,BL
  77.                 MOV             AX,CX
  78.                 POP             BX
  79.                 POP             CX
  80.                 RET
  81. I2MREAL         ENDP
  82. BSEG            ENDS
  83.                 END
  84.