C86CODE SEGMENT BYTE PUBLIC ASSUME CS:C86CODE PUBLIC C@FCBF PUBLIC C@FCWF C@FCBF PROC NEAR ;CONVERT BYTE TO FLOATING CBW ;CONVERT TO INTEGER ; ;THENCE TO FLOATING C@FCWF LABEL NEAR ;CONVERT INTEGER TO FLOATING MOV CX,9800H ;INITIAL EXPONENT MOV DX,0 ;INITIAL ACC. EXTENSION CMP AX,0 ;CHECK FOR ZERO INPUT JNE NOTZERO ; ;FLOATING ZERO OUTPUT RET NOTZERO LABEL NEAR JG POSTVE ;NEGATE IF NEGATIVE MOV CL,80H ;AND SET RESULT SIGN NEG AX POSTVE LABEL NEAR LEFT LABEL NEAR ;SHIFT LEFT SHL AX,1 ;DOUBLE LENGTH 1 BIT RCL DX,1 DEC CH ;COMPENSATE EXPONENT (CAN'T OVERFLOW) CMP DL,0 JGE LEFT ;UNTIL DL 'SIGN' SET AND DL,7FH ;REMOVE ASSUMED 2**-1 OR DX,CX ;INSERT RESULT SIGN&EXPONENT RET C@FCBF ENDP C86CODE ENDS END