Forum: Mikrocontroller und Digitale Elektronik MC68HC12 - TFR Befehl verständnis


von BLauWaL (Gast)


Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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).

von BLauWaL (Gast)


Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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?

von BLauWaL (Gast)


Lesenswert?

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.

von BLauWaL (Gast)


Lesenswert?

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.

von (prx) A. K. (prx)


Lesenswert?

Na also, da steht alles drin. Bei 8=>16 wird oben mit 0 erweitert, 
andersum gibt's das untere Byte.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von BLauWaL (Gast)


Lesenswert?

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

von Michael U. (amiga)


Lesenswert?

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

von APW (Gast)


Lesenswert?

>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.

von APW (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.