Hallo, ich habe eine kleine Frage. Der Befehl TFR A,B transfermiert laut definition Register Inhalt von A in B. Was passiert aber mit dem A Register, bleibt der alte Wert erhalten oder wie läuft das? Ich habe leider momentan kein Testsystem zur Verfügung. Mit freundlichen Grüßen
TFR A,B überschreibt Register B mit dem Inhalt von Register A. Der Inhalt von Register A bleibt dadurch unverändert; d.h. nach der Operation enthalten beide Register den gleichen Wert. Anders sieht das beim Befehl EXG aus, der vertauscht die Registerinhalte. TFR A,B entspricht also dem hypothetischen Befehl LDA B (mit Registeradressierung).
Danke, noch eine Frage. Ich glaub die ist sehr Microcontroller abhängig, also ich beziehe mich hier auf den HC12. So wie ich die Definition des TFR Befehls verstanden habe ist eine solche Operation möglich: TFR X,A (16 Bit,8 Bit) Hier schreibt X die lower Bytes in A. Entspricht das der Wahrheit? Auf vielen Internetseiten steht das der TFR nur bei gleich großen Registern funktioniert, allerdings habe ich auch HC12 bezogene Seiten gefunden welche dies so als richtig darstellen. Mfg
Das entzieht sich meiner Kenntnis; ich habe mich nur eingehend mit dem 6809 beschäftigt. Lang ist's her. Hast Du denn keinen HC12 user's guide / kein Programmierhandbuch?
Wie schaut es denn bei dem aus? Nein habe ich leider nicht, wir haben im Studium dieses Controller benutzt und ein viel zu kleines Handbuch bekommen.
Vielleicht interpretiere ich auch schlecht. Dort steht: TFR r1,r2 (r1) => r2 or $00:(r1) => r2 or (r1[7:0]) => r2 r1,r2 = A,B,CCR,D,X,Y,SP Sorry für den Doppelpost.
Na also, da steht alles drin. Bei 8=>16 wird oben mit 0 erweitert, andersum gibt's das untere Byte.
Beim 09 müssen Quell- und Zielregister die gleiche Bitbreite haben. Der HC12 ist aber deutlich neuer, daher kann nicht vom 09 auf den HC12 geschlossen werden. Die beiden sind nur recht nahe Verwandte. Programmierhandbücher etc. sollten sich per Google auftreiben lassen, auch sollte die Motorola-Nachfolgefirma Informationen vorrätig haben. .... Ja, ein bisschen Google spuckt das hier aus: http://www.ee.bgu.ac.il/~shlomi/project/CPU12RM.pdf Auf Seite 306 ist der TFR-Befehl beschrieben.
Ich konnte aus (r1[7:0]) => r2 nicht viel lesen. Bedeutet das Bit7 - Bit0 [7:0] nach Register 2? Das Handbuch ist sehr gut, sehr ausführlich. Da steht auch ausdrücklich Xl => A. Damit wäre die Sache geklärt. Danke für eure Hilfe...manchmal bin ich doch noch etwas grün hinter den Ohren :-P Mfg
Hallo, ohne den Prozessor zu kennen: ja, bedeutet üblicherweise. Versuche Dich al die Art der Beschreibung zu gewöhnen, sie wird von fast allen Herstellern in ihren Beschreibungen benutzt. Erklärt mir in einer Zeile oft mehr als 3 Seiten lesen. ;-) Gruß aus Berlin Mochael
>Na also, da steht alles drin. Bei 8=>16 wird oben mit 0 erweitert, >andersum gibt's das untere Byte. Achtung: bei TFR (8 Bit -> 16 Bit) wird im 16 Bit Register das High-Byte nicht =0 gesetzt, sondern der 8Bit-Wert wird vorzeichenrichtig erweitert ! Also z.B. TFR A,X entspricht SEX A,X // SEX =sign ext. into 16 Bit Register Der Objektcode für die beiden Befehle ist übrigens derselbe.
Nochwas: Im Gegensatz zu LDAA B setzt TFR B,A keine CCR-Flags.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.