Moin! Ich suche die korrekte Notation im AVR-Studio für 1) den aktuellen Programzähler (Z80, 8086 hieß das mal $) und 2) lokale Labels. Gibt es das für die AVRs nicht mehr? Danke!
Meinst Du Sowas? ldi wl,10+'0' ;Zehner-Stelle als ASCII, Zahl ist unter 0 dec wl ;Zehner runter und subi xl,-10 ;10 addieren bis positiv wird brlo pc-2 ;positiv? nein, 2 Zeilen hoch... rcall lcd_format ;ja, Zehner Stelle ausgeben... KH
Ja, genau das! Vielen Dank! Kann es sein, daß man PC nicht groß schreiben darf?
Das macht man mit label. ldi R16,8 loop: dec R16 brne loop die label sind global. Wie das mit einem label in einem Makro geht hab ich vergessen.
>> Das macht man mit label
wenn man's anders kann, kann man's auch anders machen. Ab 10 Label
wird's nämlich lästig.
Hab's gefunden. Assembler-Option -c ist streng mit
Groß-Klein-Schreibung.
Allen vielen Dank!
> Das macht man mit label.
Ich weiß...
Ich nutze diese Schreibweise ja auch nur in Macros und in includierbaren
Routinen (Programm-Module). Kleiner Vorteil dieser Schreibweise: Es gibt
keine Namenskonflikte, da man nicht versehentlich die gleichen
Bezeichner ein weiteres mal verwendet, was in Deinem Beispiel
vorprogrammiert ist (wer "loop" einmal als Label-Namen verwendet, der
macht das auch öfters). Beim modularen Programmieren kann das schnell in
die Hose gehen...
Übrigens könnte ich jetzt sagen, dass man Register nicht mit "r16"
anspricht, sondern mit "sprechenden Namen". Mir ist aber jetzt nicht
danach... ;-)
Es hat eben jeder seinen Stil, keiner (Stil) wird völlig falsch sein,
aber auch keiner völlig richtig. Es kommt halt immer auf die Situation
an, wobei meist mehrere Wege nach Rom führen.
KH
@KH in Macros verwendete Labels werden automatisch "umbenannt"
1 | .macro XYZ |
2 | loop: |
3 | dec temp |
4 | brne loop |
5 | |
6 | .endmacro |
7 | |
8 | loop: |
9 | XYZ |
10 | XYZ |
11 | XYZ |
12 | rjmp loop |
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.