Hi Leute. Folgender Code
1 | shiftlooop:
|
2 |
|
3 | ld temp0, -X //Mit Carry Zeile rundshiften
|
4 | rol temp0
|
5 | st X, temp0
|
6 |
|
7 | inc temp1
|
8 | cpi temp1, 8
|
9 | brne shiftlooop
|
Die Schleife soll jetzt immer ein Byte aus dem Speicher holen, rotieren
(carry!) und schreiben. Würde theoretisch auch genauso funktioniert.
WENN da nicht folgendes wäre:
mein inc und cpi verändern das Carryflag. Das heißt, beim nächsten
Durchlauf dieser Schleife steht das falsche Carryflag drin.
Es soll bei dem Schleifendurchlauf n das Carry Bit von dem
Schleifendurchlauf n-1 reingeschoben werden.
Versteht ihr?
Komischerweise klappt folgendes nicht: (temp4 ist unbenutzt)
1 | shiftlooop:
|
2 |
|
3 | out SREG, temp4
|
4 | ld temp0, -X //Mit Carry Zeile rundshiften
|
5 | rol temp0
|
6 | st X, temp0
|
7 | in temp4, SREG
|
8 |
|
9 | inc temp1
|
10 | cpi temp1, 8
|
11 | brne shiftlooop
|