PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : If Befehl in Assembler



pacer_one
15.12.2007, 07:09
Hallo,

ich habe mal versucht den IF Befehl in meinem Blinkerprogramm zu verwenden. Irgendwie mag aber AVRstudio (v4.13) den Befehl nicht.


count_off:
.IF zaehler0 <= zeit0
inc zaehler0
rjmp count_off
.ENDIF

Der Assembler bringt mir schon in der 1. Zeile .IF.... einen Fehler:
syntax error, unexpected REGDEF

Weiß jemand bescheid?

Gruß, JK

s.o.
15.12.2007, 08:43
Hi,

if gibts in ASM nicht, du musst das folgendermaßen machen:
(R17 ist als Beispielregister gedacht)
CPI R17,(deine Zahl plus 1)
BRSH endif
inc zaehler0
rjmp count_off
endif:

Noch 2 Sachen: 1. Was mit dem Punk davor, ist immer eine ASM Derititife wird also von dem Assembler berarbeitet
2. <= versteht sich mit dem Befehlssatz von den Avrs nicht so gut... (Man muss es immer durch Umwege machen)

Grüße

pacer_one
15.12.2007, 09:04
nun, ich versuche gerade meinen Sprachschatz zu erweitern. Meine Blinkschaltung funktioniert schon. Aber ich modifiziere meine Programme und baue neue Befehle ein, die für mich neu sind.

In der Assembler-Hilfe steht der Befehl drin, also müsste es eigentlich gehen.
Und bei dem Befehl handelt es sich um eine Direktive an den Assembler.
Der AVR versteht diesen Befehl natürlich nicht ;-)

Besserwessi
15.12.2007, 16:36
Die Assembler direktive wird nur beim Übersetzen am PC ausgeführt, nicht wenn das Programm läuft. Es macht also keinen Sinn dabei auf die Register / Variablen des Assemblers zurückzugreifen. HInter dem IF muß ein "konstanter" Ausdruck stehen, der nur noch von per .equ definierten Konstanten abhängen darf. In diesem Fall kommt der Assembler wohl etwas durcheinander und gibt die etwas verwirrende Fehlermeldung.

pacer_one
15.12.2007, 16:56
ja, das wäre wohl die Erklärung dafür, dass es eine Fehlermeldung gibt.
Ich hätte gedacht, dass der Assembler das in entsprechende Befehle umsetzt.

Hatte mir jetzt extra das Buch von G. Schmitt gekauft, aber es wird da nix richtig erklärt. Alles sehr oberflächlich und durcheinander. Das ganze dannn gespickt mit Assemblerlistings. Da ist dann das PDf von Atmel noch besser für den Einstieg gedacht, leider in Englisch, so dass man ganz gern mal was überliest.

Sorry, aber das musste jetzt mal raus.

izaseba
15.12.2007, 19:06
Ich hätte gedacht, dass der Assembler das in entsprechende Befehle umsetzt.

Ne Du, warum nimmst Du nicht C ?
Sehr hardware nah und trotzdem komfortabel ...
Zu dem Buch, was ist das für ein Buch ?
Heißt der Autor wirklich G. Schmitt, oder G. Schmidt, Autor von http://www.avr-asm-tutorial.net/avr_de/index.html ?

Das würde mich wirklich interessieren !

Gruß Sebastian

pacer_one
15.12.2007, 21:05
Hi Sebastian,

Der Autor heißt tatsächlich G. Schmitt, schaust du mal hier:
http://www.amazon.de/Mikrocomputertechnik-Controllern-AVR-RISC-Familie-Programmierung-Assembler/dp/3486580167/ref=pd_bbs_sr_4?ie=UTF8&s=books&qid=1197752460&sr=8-4

Bevor ich auf C umsteige wollte ich mir erst mal den MC genauer anschauen,.
Außerdem hab ich ja schon mal in Assembler programmiert, ist nur ne Weile her und war auch nicht soo tiefgründig. Etwas später werde ich wohl dann C nutzen.

Außerdem, warum einfach wenns auch kompliziert geht... :-k