Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  mulrl.asm

  Sprache: Masm
 

; Static Name Aliases
;
 TITLE   mulm

include qheadl.asm

QFLT_DATA SEGMENT
temp DW NQ+2 DUP (?)
source DW NQ+2 DUP (?)
QFLT_DATA ENDS

QFLT_TEXT      SEGMENT
 ASSUME CS: QFLT_TEXT

; Multiply mantissa of x by mantissa of y, result to y
; subm( x, y )
 PUBLIC _mulm
_mulm PROC FAR
 push bp
 mov bp,sp
 push si
 push di
 push ax
 push bx
 push cx
 push dx
 push es
 push ds

 push ds
 pop es

; temp area for the product
 lea bx,temp
; clear the temp area
 xor ax,ax
 mov di,bx
 mov cx,NQ+2
 rep stosw

; read source
 push ds
 lea di,source
 add di,4
 mov cx,OMG
 lds si,DWORD PTR [bp+6]
 ASSUME DS: NOTHING
 add si,4
 rep movsw

 pop ds
 ASSUME DS: DGROUP
 lea si,source
 les di,DWORD PTR [bp+10;dest

 xor cx,cx ; for adc 0

hh = OMG-1

rept OMG-1

g = 0
h = hh
rept (hh+1)/2
if g LE OMG-2
if h LE OMG-2
 zmul g,h
 zmul h,g
endif
endif
g = g+1
h = h-1
endm

if g EQ h
 zmul g,g
endif

hh = hh-1

endm

 zmul 0,0

mulnorm:
 push ds
 pop dx
 call far ptr mdnorm

 mov si,bx
 add si,4
 add di,4
 mov cx,OMG
 rep movsw


 pop ds
 pop es
 pop dx
 pop cx
 pop bx
 pop ax
 pop di
 pop si
 pop bp
 ret 
_mulm ENDP



; Source has at most 16 significant bits

 PUBLIC _mulin
_mulin PROC NEAR
 push bp
 mov bp,sp
 push si
 push di
 push ax
 push bx
 push cx
 push dx
 push es
 push ds

 push ds
 pop es

; temp area
 lea bx,temp
; clear the temp area
 xor ax,ax
 mov di,bx
 mov cx,NQ+2
 rep stosw

; read source
 push ds
 lea di,source
 add di,4
 mov cx,OMG
 lds si,DWORD PTR [bp+6]
 ASSUME DS: NOTHING
 add si,4
 rep movsw

 pop ds
 ASSUME DS: DGROUP

 lea si,source
 les di,DWORD PTR [bp+10;dest

 xor cx,cx ; for adc 0


h = OMG-2

rept OMG-1
 zmul h,0
h = h-1
endm

 jmp mulnorm

_mulin ENDP



; normalize and round off
; enter with source = bx, dest = di

 PUBLIC mdnorm
mdnorm PROC FAR
 push ds
 push dx
 pop  ds
 mov cx,3
$normlp:
 test word ptr [bx]+6,08000H
 jnz $round

; Prevent exponent from wrapping around.
; Rounding may be incorrect when this happens.
 test word ptr es:[di]+2,0FFFFH
 jz $nlup
 sub word ptr es:[di]+2,1
; shift up 1 bit and decrement exponent
g = NQ+NQ
 clc
rept OMG
 rcl word ptr [bx]+g,1
g = g-2
endm
$nlup:
 loop $normlp

$round:


; round off
g = NQ+NQ
 test word ptr [bx]+g,08000H
 jnz $doround
 jmp $done

$doround:
 xor cx,cx
g = NQ+NQ-2
 add word ptr [bx]+g,1
rept OMG-1
g = g-2
 adc word ptr [bx]+g,cx
endm

; check for overflow on rounding up
 test word ptr [bx]+4,0FFFFH
 jz $done

; shift down 1 bit and increment exponent
g = 4
 clc
rept OMG
 rcr word ptr [bx]+g,1
g = g+2
endm
 add word ptr es:[di]+2,1


$done:
 pop ds
 ret
mdnorm ENDP

QFLT_TEXT ENDS
END

Messung V0.5 in Prozent
C=91 H=95 G=92

¤ Dauer der Verarbeitung: 0.15 Sekunden  (vorverarbeitet am  2026-06-28) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik