Hallo,guten Tag.
Ich brauche bitte einmal Hilfe für die Datenübernahme mit dem Stack.
So rufe ich auf in GFA-Basic:
RETURN C:inl%(L:w0%,L:w1%,L:w2%)
In ASM soll es so sein:
1. Wert in D0 > w0%
2. Wert in D1 > w1%
3. Wert in D2 > w2%
Wie übergebe ich jetzt bitte in welcher Reigenfolge die Daten über den Stack SP?
Muss der Stack danach wieder neu gesetzt werden?
move.l 4(SP),D0
move.l 8(SP),D1
move.l 12(SP),D2
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
So rufe ich auf in GFA-Basic:
CLS
INLINE inl%,100
BLOAD "D:\INL\CMULDIV.INL",inl%
'
erg%=@muldiv(3,30,45)
PRINT erg%
PAUSE 50
'
FUNCTION muldiv(w0%,w1%,w2%)
$F%
RETURN C:inl%(L:w0%,L:w1%,L:w2%)
ENDFUNC
Danke.
Gruss