Hi! Vielleicht sind ja hier noch ein paar ausser mir, die rein mit ASM auf den AVR´s programmieren. Frage mich gerade wieder, wieso gibt es keinen Befehl wie ADDI rd,k (Add Immediate)? Wo es doch den Befehl SUBI rd,k (Subtract Immediate) gibt. Kann mir das jemand erklären? Gut, da kann man ja mit nen Macro machen so wie... .macro ADDI ldi r25,@1 add @0,r25 .endmacro ... aber kostet nur (marginal) unnötig Rechenzeit und Flash. Gibt es noch undokumentierte, echte Befehle von denen es auch Infos irgend wo im Netz gibt? Zu meiner Zeit mit Z80-CPU (ZX81, ZX-Spectrum) war damals in ner Zeitung ein Bericht über "geheime" CPU-Befehle. Gruß Andi
Hallo Andi, ADDI hätte ich auch schon mal gebraucht. Naja eigentlich ist der Befehl ja auch überflüssig. Man kann ja einfach das 2erKomplement einer Konstante mit SUBI abziehen. Das läuft dann wie a+b = a - (-b). Kostet keinen Prozessorzyklus und kein bit mehr im Speicher. MfG, Khani
Man, auf das mit dem SUBI rd,-k hätt ich eigentlich selber kommen müssen. Danke für die Hinweise. Gruß Andi
Hi! gar nicht mal so dumm, "addi" mit "subi -k" zu machen. Aber wie lauft das dann mit einer 16bit? Ich möchte ähnlich adiw einer beliebigen 16-bit-Zahl eine positive 16bit-Konstante addieren. Wie sieht das dann als Macro aus? .macro subi16 ;H:L,k subi @1,low(@2) sbci @0,high(@2) .endmacro subi16 würde ja subtrahieren. Wo muß jetzt das "-" hin? subi @1,-low(@2) sbci @0,-high(@2) ;oder subi @1,low(-@2) sbci @0,high(-@2) ;oder wie??? Danke für die Hilfe Gralf
Hier aus meiner Sammlung der Macrobefehle: .macro AddIW ;Word-Addition auf Register RdL:RdH,K subi @0L,low(-@1) ;AddIW low:high + K16 sbci @0H,high(-@1) .endm Das W steht für Word, also 16 Bit. MfG Andi
Hi, habe mir erlaubt, das ganze unter http://www.mikrocontroller.net/articles/AVR_Assembler_Makros einzubasteln. So ein Quatsch wegen Urheberechts greift bei aufgrund der Schöpfungshöhe sowieso noch nicht ;-) Viele Grüße
Danke Andi! Werde mir wohl auch mal ne Macrosammlung anlegen. Dann steht man nur einmal vor solch Problemen. Gralf
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.