Software > Coding
Was hindert den Turboasm, eine INL für ds GFA-basic zu erstellen.
guest3744:
Wo liegt der Fehler, ich finde ihn nicht?
Meine Frage auch, wie wird der Text erkannt von der Sprungvariable? Ich sehe das nicht raus.
Gruss
laufkopf:
So funktioniert es
--- Zitat --- move.l 4(SP),D0
asl.w #2,D0
lea tabelle(PC),A0
move.l a0,a1
add d0,a1
sub.l (A1),A0
jmp (A0)
rts
eins:
move.l #100,d0
rts
zwei:
rts
drei:
rts
vier:
rts
fuenf:
rts
tabelle: DC.L 1
DC.L tabelle-eins
DC.L tabelle-zwei
DC.L tabelle-drei
DC.L tabelle-vier
DC.L tabelle-fuenf
--- Ende Zitat ---
laufkopf:
--- Zitat von: peter hold am Mo 21.09.2015, 19:56:05 ---Ich habe immer alles übersetzt.
Einmal nur die Zahlen unten rein und dann einmal den Text unten rein.
Meine Frage auch, wie wird der Text erkannt von der Sprungvariable? Ich sehe das nicht raus.
Gruss
--- Ende Zitat ---
--- Code: ---move.l 4(SP),D0
--- Ende Code ---
gewünschte Funktion nach D0 holen
--- Code: ---asl.w #2,D0
--- Ende Code ---
mit 4 multiplizieren
--- Code: ---lea tabelle(PC),A0
--- Ende Code ---
Adresse der Tabelle nach A0
--- Code: ---move.l a0,a1
--- Ende Code ---
und kopie nach A1
--- Code: ---add D0,A1
--- Ende Code ---
Addiere D0 zu A1 und schreibe das Ergebnis nach A1. I(n A1 steht die Adresse der Tabelle. in D0 die gewünschte Funktion x 4 um den Offset in der Tabelle, welche Longs beinhaltet auszugleichen)
--- Code: ---sub.l (A1),A0
--- Ende Code ---
Subtrahiere den Wert auf den die Adresse in A1 zeigt mit A0 und schreibe das Ergebnis nach A0
--- Code: ---jmp (A0)
--- Ende Code ---
Springe zu der Funktion dessen Adresse in A0 steht
--- Code: ---tabelle: DC.L 1
DC.L tabelle-eins
DC.L tabelle-zwei
DC.L tabelle-drei
DC.L tabelle-vier
DC.L tabelle-fuenf
--- Ende Code ---
Die Tabelle beinhaltet nach dem Assemblieren die Differenzen zwischen Anfangsadresse der Tabelle und den Funktionen.
guest3744:
Es funktioniert jetzt mit deinem neuen Programm...., es war mein fehler.
Deine Antwort #21 am: Heute um 20:43:37
Gruss
laufkopf:
Im Anhang meine Version, welche funktioniert zum Vergleich
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln