Home ==> Instruktionsliste
ATtiny13

Liste der Audrücke in AVR-Assembler


Zahlenarten

An Zahlenarten sind zulässig:
ZahlenartKennzeichenBeispiel
Dezimalzahl(kein).equ Zahl = 123
Binärzahl0b.equ Zahl = 0b1111011
Hexadezimalzahl0x.equ Zahl = 0x7B
Groß- und Kleinschreibung werden in Assembler nicht unterschieden. Das spielt nur bei Tabellen mit ASCII-Zeichen eine Rolle, z. B. .db "abcd" ist nicht identisch mit .db "ABCD".

Ausdrücke

Ausdrücke erlauben es in Assembler, Zahlen zu berechnen oder logische Entscheidungen zu fällen.

Wichtig ist zu beachten, dass nur der Assembler selbst diese Berechnungen ausführt und nur dann das das Ergebnis im ausführbaren Code landet, wenn es mit LDI-Instruktionen oder als Tabelle mit .db- oder .dw-Direktiven in den Code übernommen wird.

In Assembler werden alle Operationen mit Ganzzahlen ausgeführt. Das heißt, alle verwendeten Zahlen sind ganzzahlig und alle Operationen führen nur zu ganzzahligen Ergebnissen. Beim Dividieren wird daher das Ergebnis grundsätzlich abgerundet. Soll das Ergebnis aufgerundet werden, kann dies folgendermaßen erfolgen:


.equ N1 = 2345
.equ N2 = 56
.equ Erg1 = N1 / N2 ; Ergebnis ist 41
.equ Erg = (N1 + N2 / 2) / N2 ; Ergebnis ist 42 
 
In Ausdrücken können Leer- und Tabulatorzeichen enthalten sein, diese werden beim Auswerten ignoriert. Das Einfügen solcher Trennzeichen ist aber nicht erforderlich. Es ist unzulässig, in zusammengehörigen Symbolen Trennzeichen einzufügen (z. B. bei ! = oder < =).
AusdruckstypSymbol
Ausdruck
BeschreibungBeispiel
Logisch!Nicht, Umkehr des Wahrheitswerts.equ f2 = ! f1 ; ergibt wahr (1) wenn f1 falsch (0)
&&Verknüpft linken und rechten Ausdruck mit logischem UND .equ f = 1 && 0 ; ergibt falsch (0)
||Verknüpft linken und rechten Ausdruck mit logischem ODER .equ f = 0 || 1 ; ergibt wahr (1)
Vergleich<Vergleich ob linker Ausdruck kleiner als rechter Ausdruck .equ f = 234 < 567 ; ergibt falsch (0)
<=Vergleich ob linker Ausdruck kleiner oder gleich rechter Ausdruck .equ f = 234 /lt;= 234 ; ergibt wahr (1)
>Vergleich ob linker Ausdruck größer als rechter Ausdruck .equ f = 234 > 567 ; ergibt falsch (0)
>=Vergleich ob linker Ausdruck größer oder gleich rechter Ausdruck .equ f = 234 >= 234 ; ergibt wahr (1)
==Vergleich ob linker Ausdruck gleich rechter Ausdruck .equ f = 234 == 234 ; ergibt wahr (1)
!=Vergleich ob linker Ausdruck ungleich rechter Ausdruck .equ f = 234 != 234 ; ergibt falsch (0)
Binär~Bitweise Nicht .equ 0b1010 ~ 0011 ; ergibt 0b1001
&Bitweise UND .equ f = 0b1010 & 0b0010 ; ergibt 0b0010
|Bitweises ODER .equ f = 0b1010 | 0b0011 ; ergibt 0b1011
^Bitweises Exklusiv-Oder .equ f = 0b1010 | 0b0011 ; ergibt 0b1001
<<Linksschieben (Multiplikation mit 2n) .equ f = 1 << 7 ; ergibt 0b1000000
>>Rechtsschieben (Division durch 2n) .equ f = 0b11000000 >> 3 ; ergibt 0b00110000
Arithmetik+Plus, Addieren .equ f = 123 + 24 ; ergibt 147
-Subtrahieren, Minus .equ f = 123 - 24 ; ergibt 99
*Malnehmen, Multiplizieren .equ f = 123 * 24 ; ergibt 2952
/Teilen, Dividieren .equ f = 123 / 24 ; ergibt 5!
%Modulo, Divisionsrest .equ f = 123 % 24 ; ergibt 3

Funktionen

Die folgenden Funktionen können für Berechnungen verwendet werden.
FunktionliefertBeispiel
LOWdie niedrigsten 8 Bits .equ f = Low(0x1234) ; ergibt 0x34
HIGHdie oberen 8 Bits .equ f = High(0x1234) ; ergibt 0x12
BYTE2die oberen 8 Bits .equ f = Byte2(0x1234) ; ergibt 0x12
BYTE3die Bits 16 bis 23 .equ f = Byte3(0x123456) ; ergibt 0x12
BYTE4die Bits 24 bis 31 .equ f = Byte4(0x12345678) ; ergibt 0x12
LWRDdie untersten 16 Bits .equ f = Lwrd(0x12345678) ; ergibt 0x5678
HWRDdie oberen 16 Bits .equ f = Hwrd(0x12345678) ; ergibt 0x1234
EXP2zwei hoch Zahl .equ f = Exp2(16) - 1 ; ergibt 65535
LOG2Zweierlogaritmus der Zahl .equ f = Log2(65535) ; ergibt 15 (!)

Prioritätsregeln

Je höher der Ausdruck in der obigen Tabelle steht, desto prioritärer wird er bei der Berechnung ausgewertet. Die Bearbeitung der Formeln erfolgt bei gleicher Priorität von links nach rechts. Mit Klammern kann die Prioritätsregel außer Kraft gesetzt werden (Klammerausdrücke werden immer zuerst ausgewertet).

©2018 by www.gsc-elektronic.net