AD Wandlung Lehrbrief 3

Postby fiesicus » Fri Apr 30, 2010 12:00 am

Im Lehrbrief 3 S.104 ganz oben steht:

wert= <<2;

auf S. 105 ganz unten steht:

wert = (ADDH<2) + (ADDL& 0x03);

Frage: Warum lässt man das Register ADDH um zwei Stellen nach links rotieren und nicht wie auf S. 104 den Variablenwert um zwei Stellen nach links rotieren ?

Richtig wäre doch wert = (wert<<2) + (ADDL& 0x03);
Oder?
fiesicus
 
Posts: 20
Joined: Fri Jan 03, 2014 2:01 pm

Postby μtronix » Sun May 02, 2010 12:00 am

Hallo fiesicus,

Du kannst die Operationen natürlich auch so aufteilen, daß sie in mehreren Zeilen abgehandelt werden. In dem hier von Dir genannten Beispiel ist dies lediglich in einer Zeile zusammengefaßt.
Wichtig ist doch, daß die Forderung "Hole den Wert aus dem Register ADDH, verschiebe diesen um zwei Stellen nach links, hole den Wert aus ADDL, maskiere die beiden unteren Bits und addiere beide Werte" erfüllt wird.
Wie das im Programm umgesetzt wird, bleibt Dir überlassen. Der Einzeiler ist eben der kürzeste Weg.

Du kannst also auch erst ADDH in einer Variable speichern, verschieben und dann den maskierten ADDL-Registerinhalt addieren.


Viele Grüße
Patrick
μtronix
 
Posts: 197
Joined: Fri Jan 03, 2014 2:12 pm

Postby fiesicus » Tue May 04, 2010 12:00 am

Aber ADDH ist doch nur 8 Bit breit. Wenn ich um zwei Stellen nach links rotieren lasse fallen doch die letzten beidesn Stellen hinten raus. Und die Variable wert ist doch 16 bit breit da klappt das rotieren. Ich dachte diese Vorgehensweise wäre gerade der Trick an dieser Sache.
fiesicus
 
Posts: 20
Joined: Fri Jan 03, 2014 2:01 pm

Postby alexbeielektor » Tue May 04, 2010 12:00 am

die Verschiebung findet ja in der Variablen "wert" im Speicher statt, nicht im ADDH, das ist einfach eine Verkürzung der Schreibweise.

"wert" wird ja ADDH mit dem ADDL zugewiesen, verknüpft und verschoben, halt in einer einzigen Zeile.
Da geht nichts verloren.
alexbeielektor
 
Posts: 32
Joined: Fri Jan 03, 2014 2:12 pm


Return to Mikrocontroller-Fernlehrgang (TFH)

Who is online

Users browsing this forum: No registered users and 1 guest