Software > Coding

ASM: Ergebnis von divs aufteilen in 2x 16 Bit für die Ergebnisse.

(1/3) > >>

guest3744:
Hallo, guten Tag.
Wie wird es in GFA-Basic rausgefiltert?  16 Bit Ergebnis und 16 Bit Rest von der Division?
PS: Mein Gfa-Basic-Buch wird noch geliefert von Amazon.

Danke.
Gruss

Beim lezten Wert kommt 65386 raus, Als Word ist es   -150, weil das Bit 15 gesetzt ist.
Wie bekomme ich mit dem GFA-Befehl zügig das vordere Word und das hintere Word jeweils in & rein, das es richtig ausgegeben wird?


--- Code: ---CLS
INLINE addr%,100
BLOAD "D:\INL\MULDIV.INL",addr%
DIM r%(16)
'
r%(0)=1
r%(1)=150
r%(2)=3
RCALL addr%,r%()
m%=r%(0)
'
r%(0)=2
r%(1)=450
r%(2)=3
RCALL addr%,r%()
d%=r%(0)
'
r%(0)=3
r%(1)=150
r%(2)=-3
RCALL addr%,r%()
ms%=r%(0)
'
r%(0)=(4)
r%(1)=450
r%(2)=-3
RCALL addr%,r%()
ds%=r%(0)
'
PRINT m%
PRINT d%
PRINT ms%
PRINT ds%
PAUSE 50

--- Ende Code ---


--- Code: ---                asl.w   #2,D0
                lea     tab(PC),A0
                movea.l A0,A1
                adda.w  D0,A1
                suba.l  (A1),A0
                jmp     (A0)
                rts

mul:
                mulu    D1,D2
                move.l  D2,D0
                rts
div:
                divu    D2,D1
                move.l  D1,D0
                rts

muls:
                muls    D1,D2
                move.l  D2,D0
                rts

divs:
                divs    D2,D1
                move.l  D1,D0
                rts

tab:            DC.L 1
                DC.L tab-mul
                DC.L tab-div
                DC.L tab-muls
                DC.L tab-divs
                END

--- Ende Code ---
               

laufkopf:
card(#)
card(swap(#))

guest3744:
Danke für den Hinweiss.

Aber  bei "ds&=CARD(SWAP(r%(0)))" ist d& "0" .

Danke.
Gruss

laufkopf:
bessere Lösung ist im asm ist den rückgabewert wieder auf long zu setzen, also
ext.l d0

guest3744:
Danke.

Das geht jetzt : ds%=SWAP(r%(0))\65535, da kommt der richtige Wert,

Ich muss ja den Rest von der Division auch noch rausfiltern.
Gibt es in GFA-Basic da keine schnelle Lösung für beides?


Gruss

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln