Forum: Mikrocontroller und Digitale Elektronik Brne frage!!


von Leo (Gast)


Lesenswert?

werde aus dem tutorial nicht ganz schlau!
wenn z.B.
1
cpi 1, 1
2
brne wahr
3
........



in diesem fall wird nun zu wahr gesprungen oder?

1
cpi 2,1
2
brne wahr
3
........


in diesem fall wird nun mit ..... weitergearbeitet oder?

von Spess53 (Gast)


Lesenswert?

Hi

>oder?

Genau umgedreht.

MfG Spess

von Bernd S. (bernds1)


Lesenswert?

Leo schrieb:
> werde aus dem tutorial nicht ganz schlau!
> wenn z.B.
>
>
1
cpi 1, 1
2
> brne wahr
3
> ........
>
> in diesem fall wird nun zu wahr gesprungen oder?

Der Vergleich von 1 und 1 ergibt "wahr", stimmt's?
Du sagst, daß er bei "nicht wahr" springen soll.
"brne" heißt "branch if not equal"
Also wird nicht gesprungen und mit der folgenden Instruktion 
weitergemacht.
>
>
>
>
1
cpi 2,1
2
> brne wahr
3
> ........
Hier wird gesprungen, weil der Vergleich von 2 und i "not equal" ist.
>
>
> in diesem fall wird nun mit ..... weitergearbeitet oder?
Nein, sondern bei "wahr".

von Vuvuzelatus (Gast)


Lesenswert?

"cpi 1, 2" wird vom Assembler gar nicht akzeptiert. Der erste Operand 
muss ein Register zwischen r16 und r31 sein.

von Bernd S. (bernds1)


Lesenswert?

Danke für den Hinweis. Ich bin nicht so fit in Assembler, das hab ich 
nicht gemerkt. Mir gings auch nur um die Erklärung zum "brne". Die war 
aber hoffentlich richtig, oder? ;-)))

von Floh (Gast)


Lesenswert?

Also, ein "cp" / "cpi" ist nichts anderes als eine Subtraktion, bei der 
das Ergebnis aber nicht abgespeichert wird. Die Flags (Zero, Vorzeichen, 
usw.) werden aber gesetzt oder gelöscht. Ein nachfolgender Befehl kann 
diese Flags nun auswerten, wie z.B. der "brne".
Dieser springt zur angegebenen Marke, wenn das Zero-Flag nicht gesetzt 
ist.

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.