Forum: Mikrocontroller und Digitale Elektronik Addition einer Konstanten beim AVR


von Frank R. (gniddle)


Lesenswert?

Hallo,
ich hab da mal eine Frage.

Warum habe ich (scheinbar) beim AVR keinen Assembler-Befehl um zu einem
Register mit dem Wert x einen Konstate z.B 10 zu Addieren.
Bei der Subtraktion ist dies ja durchaus mit dem Befehl subi möglich.

Muss ich immer den 'Umweg' über z.B.
---------------
ldi temp, 10
add Wert, temp
---------------
nehmen oder hab ich nen Befehl übersehen?
Kenne den einen oder anderen Trick nicht?

Danke für die Hilfe :-)

Gruß Frank

von Christoph Kessler (Gast)


Lesenswert?

subi -10 geht, steht z.B. im Trampert-Buch

von Willi (Gast)


Lesenswert?

Wenn du es dir bequem machen willst,
kannst du dir auch einen Macro definieren:

.macro addi
    subi @0,-@1
.endmacro

Dann kannst du ganz "normal"
addi rxx,const schreiben.

z.B.
  addi r16,99
oder
  addi r18,'A

MfG Willi

von Willi (Gast)


Lesenswert?

im zweiten Beispiel soll es natürlich
 addi r18,'A'
heissen.


Mfg Willi

von Tassilo Böhr (Gast)


Lesenswert?

Das ganze hat natürlich den Nachteil, daß das Carry-Bit gesetzt wird,
wenn bei der ursprünglich gewünschten Addition gar kein Überlauf
aufgetreten wäre!! Eine Verzweigung aufgrund dieser Berechnung kann
dann schnell in die falsche Richtung gehen...

Tassilo

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.