AVR Assembler Makros: Unterschied zwischen den Versionen
Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Keine Bearbeitungszusammenfassung |
Yahp (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 4: | Zeile 4: | ||
=== 16 Bit Konstante in Z-Pointer laden === | === 16 Bit Konstante in Z-Pointer laden === | ||
Natürlich auch möglich mit X- und Y-Pointer. | |||
<pre> | <pre> | ||
.MACRO SetZPtr ;(Adresse) | .MACRO SetZPtr ;(Adresse) | ||
ldi ZL, LOW(@0) | ldi ZL, LOW(@0) | ||
ldi ZH, HIGH(@0) | ldi ZH, HIGH(@0) | ||
.ENDMACRO | .ENDMACRO | ||
</pre> | </pre> | ||
Zeile 16: | Zeile 18: | ||
<pre> | <pre> | ||
.MACRO SWAP ;(a, b) | .MACRO SWAP ;(a, b) | ||
eor @0, @1 | eor @0, @1 | ||
eor @1, @0 | eor @1, @0 | ||
eor @0, @1 | eor @0, @1 | ||
.ENDMACRO | |||
</pre> | |||
=== Konstante addieren === | |||
<pre> | |||
.MACRO ADDI ;(a, k) | |||
subi @0, -(@1) | |||
.ENDMACRO | |||
</pre> | |||
=== Konstante addieren (16 Bit) === | |||
<pre> | |||
.MACRO ADDIW ;(RdL:RdH, k) | |||
subi @0L, LOW(-@1) | |||
sbci @0H, HIGH(-@1) | |||
.ENDMACRO | .ENDMACRO | ||
</pre> | </pre> |
Version vom 17. Juli 2005, 12:36 Uhr
Hier entsteht eine Sammlung von verschiedenen nützlichen Makros für den AVR Assembler.
16 Bit Konstante in Z-Pointer laden
Natürlich auch möglich mit X- und Y-Pointer.
.MACRO SetZPtr ;(Adresse) ldi ZL, LOW(@0) ldi ZH, HIGH(@0) .ENDMACRO
2 Register ohne Zwischenspeicher vertauschen
.MACRO SWAP ;(a, b) eor @0, @1 eor @1, @0 eor @0, @1 .ENDMACRO
Konstante addieren
.MACRO ADDI ;(a, k) subi @0, -(@1) .ENDMACRO
Konstante addieren (16 Bit)
.MACRO ADDIW ;(RdL:RdH, k) subi @0L, LOW(-@1) sbci @0H, HIGH(-@1) .ENDMACRO