actionbrowser.com
Mittels push und pop können Werte auf den Stack gelegt bzw. wieder vom Stack geholt werden. Der Stack wird außerdem genutzt, um die Rücksprungadresse bei Subroutinen-Aufrüfen mittels call bzw. rcall zu speichern. Arithmetische Befehle Arthmetische Befehle verknüpfen üblicherweise entweder zwei Register miteinander oder ein Register mit einer Konstante. Als Operationen stehen die Addtion ( add) und Subtraktion ( sub) zur Verfügung. Es gibt auch jeweils eine Veriante, in der das Übertragsbit aus einer vorhergehenden Operation verwendet wird ( adc bzw. sbc). Für die Addition der Konstante 1 stehen die Befehle inc (Inkrement) bzw. dec (Dekrement) zur Verfügung. Logische Befehle Zu den logischen Befehlen gehört die AND Verknüpfung ( and bzw. Assembler befehle atmel. andi), die ODER Verknüpfung ( or bzw. ori), die Exclusive-ODER Verknüpfung ( eor) und die Invertierung aller Bits ( com). Sprünge Unbedingte Sprünge Bei unbedingten Sprüngen ist der Sprung nicht von einer Bedingung abhängig. Es gibt relative Sprünge ( rjmp) und absolute Sprünge ( jmp).
Diese Bezeichner knnen nicht neu definiert werden oder in Sprungmarken verwendet werden. Ein Kommentar beginnt mit einem Semikolon und endet am Ende der Zeile. Innerhalb des Kommentars sind beliebige Zeichen erlaubt, man kann also Programmzeilen auskommentieren. Andreas Hofmeister 1998-12-05
Allgemeines Der Befehlssatz des Atmel AVR ist ein typischer RISC -Befehlssatz. Bei der Entwicklung der AVR Reihe stand vor allem eine möglichst effiziente Nutzung durch C-Compiler im Vordergrund. Assembler befehle atmel ice. Komplette Übersicht über den Befehlssatz von Atmel Auszug der wichtigsten Befehle Blockschaltbild Blockschaltbild des AVR (Quelle: Datenblatt ATMega16 © Atmel Corporation) Im Blockschaltbild des Atmel AVR ATMega16 erkennt man am oberen und unteren Ende die vier IO-Ports. Rund um den Prozessorkern ( AVR CPU) befindet sich folgende Peripheriebausteine: ADC, mit Multiplexer auf die Pins von Port A I²C Schnittstelle (TWI - Two Wire Interface) auf Port C Timer/Counter Watchdogtimer mit dem internen Oszillator MCU Ctrl. & Timing - zuständig für den Prozessortakt und Reset Interrupt Einheit EEPROM USART auf Port D SPI auf Port B Komperator Diese Peripheriebausteine sind über einen Adress/Datenbus mit dem Prozessorkern verbunden. Der Prozessorkern besteht aus dem Flash Speicher für das eigentliche Programm und dem SRAM für die Laufzeitvariablen.
Die oberen 4 Bits des Ausgangs PortB sollen unverändert bleiben.
Tauscht man nun den 'breq'-Befehl gegen den 'brne'-Befehl aus, so bleibt die LED, nach dem bertragen des Programmes, dunkel. Erst wenn man eines der beiden Vergleichsparameter ndert, stimmt der Status fr den Sprungbefehl wieder (hier: Springe wenn nicht gleich) und die LED wird eingeschaltet. Durch ndern der beiden Parameter und des Sprungbefehls, kann man alle mglichen Vergleiche selbst ausprobieren.
Die relativen Sprünge können den Befehlszähler um +/-2048 verändern. Dies benötigt zwar eine entsprechende Berücksichtigung vom Assembler bzw. Compiler aus, stellt aber durch die kompaktere Ausführung (ein Befehlswort statt zwei) eine Optimierung dar. Bedingte Sprünge Die bedingten Sprünge bedienen sich der Überprüfung von Flags aus dem Statusregister und entscheiden anhand deren Zustandes, ob der Sprung genommen wird oder nicht. Umgang mit Ports -Einlesen und Ausgeben mit Assembler | mezdata.de. Häufig genutzt werden hier breq (branch if equal), brne (branch if not equal), brlo (branch if lower) und brsh (branch if same or higher). Die Statusflags müssen durch einen vorhergehenden Befehl entsprechend gesetzt werden. Will man kein Register für einen Vergleich ändern, sondern nur die Statusflags, so eignet sich der cp (compare) Befehl. Dieser Vergleicht zwei Register mittels Subtraktion und setzt die Flags entsprechend.
Mit or kann gemischt werden vermöge 0 or x = x. Einfache Schaltnetze simulieren Mikro-Controller bzw. Speicher-Programmierbare-Steuerungen (SPS) werden oft auch eingesetzt um Schaltnetze zu realisieren. Eine logische Funktion kann durch geschickte Abfolgen von Assembler-Befehlen simuliert werden. Hinweis: Bei unserer Mikro-Controller-Beschaltung leuchten die LED bei 0 und gedrückte Taster erzeugen das Signal 0, man spricht hierbei von negativer Logik. Wen das zu sehr verwirren mag, kann die Eingaben leicht invertieren mit dem COM-Befehl (aus null mach eins). Für die Ausgabe empfiehlt es sich hier, die Port-Bit-Befehle SBI, CBI zu erwägen. Logisches Und simulieren Entwickeln Sie zwei unterschiedliche Assembler-Programme für die Funktion LED1 = S1 AND S2. Hierbei unberührte Ein- bzw. Ausgänge dürfen nicht tangiert werden! Lösung anzeigen.. Assembler - Wir sprechen AVRisch. Logisches Oder simulieren Entwickeln Sie eine Lösung für die Funktionen LED1 = S1 AND S2 AND S3, LED2 = S3 OR S4. Ausgänge dürfen nicht tangiert werden!