home *** CD-ROM | disk | FTP | other *** search
- MULTIPLY: MOVEM.L D0-D4,-(SP)
- CLR.W D4 ; Positivt tecken
-
- TST.L D6 ; Är D6 positivt ?
- BPL.S POSITIVE1
- NEG.L D6 ; D6 = -D6
- NOT.W D4 ; Byt tecken
-
- POSITIVE1: TST.L D7 ; Är D7 positivt ?
- BPL.S POSITIVE2
- NEG.L D7 ; D7 = -D7
- NOT.W D4 ; Byt tecken
-
- POSITIVE2: MOVE.W D6,D1 ; D1 = decimaldel1
- SWAP D6
- MOVE.W D6,D0 ; D0 = heltalsdel1
- MOVE.W D7,D3 ; D3 = decimaldel2
- SWAP D7
- MOVE.W D7,D2 ; D2 = heltalsdel2
-
- MOVE.W D3,D7
- MULU D0,D7 ; D7 = heltal1*decimal2
-
- MULU D2,D0
- SWAP D0
- CLR.W D0
- ADD.L D0,D7 ; D7 = D7+heltal1*heltal2
-
- MULU D1,D2
- ADD.L D2,D7 ; D7 = D7+decimal1*heltal2
-
- MULU D3,D1
- CLR.W D1
- SWAP D1
- ADD.L D1,D7 ; D7 =D7+decimal1*decimal2
-
- TST.W D4 ; Vilket tecken ?
- BEQ.S SIGNOK
- NEG.L D7 ; Byt tecken på produkten
-
- SIGNOK: MOVEM.L (SP)+,D0-D4
- RTS