Category : Assembly Language Source Code
Archive   : ASM_SUBR.ZIP
Filename : FIX

 
Output of file : FIX contained in archive : ASM_SUBR.ZIP
;-------------------------fix routine begins--------------------------+
; from BLUEBOOK OF ASSEMBLY ROUTINES FOR IBM PC & XT.
; page : 107
;
; NAME FIX
;
; ROUTINE FOR Conversion from Internal Floating Point to 16-Bit Integer
;
; FUNCTION: This routine converts from internal single precision binary
; floating point to internal 16-bit signed two's complement integer.
;
; INPUT: Upon entry a single precision binary floating point is in
; SFPBUFF. The single precision floating point nu ber has a 24-bit
; binary mantissa, a sign bit, and an 8-bit exponent biased by 128.
;
; OUTPUT: Upon exit a 16-bit signed two's complement binary number
; is in the DX register.
;
; REGISTERS USED: Only DX is modified, used for output.
;
; SEGMENTS REFERENCED: The data segment contains storage for SFPBUFF.
;
; ROUTINES CALLED: None
;
; SPECIAL NOTES: Equates used to shorten address fields.
;
; ROUTINE TO CONVERT FROM INTERNAL FLOATING POINT TO INTERNAL INTEGER
; (truncate).
;
fix proc far
;
; the number is in sfpbuff
;
push cx ; save registers
push ax
;
; get the mantissa
mov ax,sfpbuffw0 ; AX gets the low part
mov dx,sfpbuffw2 ; DX gets high part
and dx,007Fh ; just the mantissa
or dx,0080h ; restore MSB
;
; get the exponent
mov cl,sfpbuffb3 ; get the exponent
mov ch,0 ; extend to 16-bit
sub cx,88h ; subtract bias
cmp cx,0 ; check its sign
jl fix1 ; if negative
jg fix2 ; if positive
je fix3 ; if zero
;
fix1:
; shift right
neg cx ; absolute value
;
fix2:
sar dx,1 ; shift all bits right
rcr ax,1 ; carry on
loop fix2
;
jmp fix4 ; end of case
;
fix3:
; shift left
sal ax,1 ; shift all bits left
rcl dx,1 ; carry on
loop fix3
;
jmp fix4 ; end of case
;
fix4:
; check the sign
mov al,sfpbuffb2 ; get sign
and al,80h ; just bit 7
jz fix5 ; is it on ?
neg dx ; two's compl if negative
;
fix5:
;
pop ax ; restore registers
pop cx
ret ; return
;
fix endp
;-------------------------fix routine ends---------------------------+


  3 Responses to “Category : Assembly Language Source Code
Archive   : ASM_SUBR.ZIP
Filename : FIX

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/