Einführung in AVR Assembler

Größe: px
Ab Seite anzeigen:

Download "Einführung in AVR Assembler"

Transkript

1 Einführung in AVR Assembler Dennis Fassbender Institut für Technik Autonomer Systeme (LRT8) Universität der Bundeswehr München

2 Was ist Assembler? Low-level-Programmiersprache Erlaubt direkten Zugriff auf Ressourcen wie Register, Speicher und Ports Instruktionen lassen sich direkt in (bei AVR 16 Bit breite) Machinenbefehle übersetzen, die vom Prozessor aus dem Speicher gelesen und ausgeführt werden Bsp: add r0, r

3 Register: Eigenschaften Allgemein spezielle, idr 8 Bit breite Speicher sehr schneller Zugriff durch CPU möglich können zb im Gegensatz zu Speicherzellen im Hauptspeicher direkt in Assembler-Instruktionen verwendet werden insgesamt 32 Register (r0 bis r31) verfügbar r0 bis r15 jedoch nur eingeschränkt nutzbar

4 Register: Verwendung ldi r16, 0 (Konstante 0 in r16 laden) ldi r16, 30 (Konstante 0 in r16 laden) ldi r16, 0xff (Hexadezimale Konstante 0xff, also 255, in r16 laden) mov r17, r16 (Wert in r16 nach r17 kopieren) add r16, r17 (Wert in r17 zu Wert in r16 addieren) addi r16, 10 (Konstante 10 zu Wert in r16 addieren) andi r16, 0b (UND-Verknüpfung von Wert in r16 mit Binärwert , also 15) lsl r16 (Bits in r16 um eine Position nach links schieben) cpi r16, 37 (Wert in r16 mit Konstante 37 vergleichen)

5 Register: Eigenschaften Lange Register Registerpaare r25:24, r27:r26, r29:r28 und r31:30 bilden 16-Bit-Register ( lange Register ) r27:r26, r29:r28 und r31:30 auch als X, Y und Z adressierbar bestehen aus high byte und low byte XL (r26) steht bspw für niederes Byte in X, XH (r27) für höheres Um bspw konstanten Wert in 16-Bit-Register zu laden, sind zwei ldi-instruktionen nötig (zb ldi r25, 1 und ldi r24, 255 r25:r24 enthält Wert 511) X, Y und Z können als Zeiger in Speicher verwendet werden

6 Lange Register: Verwendung adiw ZH:ZL, 1 (Konstante 1 zu 16-Bit-Wert in langem Register Z addieren) adiw r25:r24, 90 (Konstante 90 zu 16-Bit-Wert in langem Register r25:r24 addieren) sbiw ZH:ZL, 1 (Konstante 1 von 16-Bit-Wert in langem Register Z subtrahieren) sbiw r25:r24, 90 (Konstante 90 von 16-Bit-Wert in langem Register r25:r24 subtrahieren) ld r16, Z (lade Wert, der an Speicherstelle Z steht, in r16) st Z, r16 (schreibe Wert in r16 in Speicherstelle Z)

7 Ports: Eigenschaften Allgemein dienen meist der Kommunikation mit internen oder externen Geräten AVRs haben bis zu 64 direkt addressierbare Ports Addressierung über vordefinierte Konstanten, zb PORTB Statusregister bestimmte Operationen manipulieren Bits im Statusregister Bsp: dec r16 setzt Zero-Flag, falls Ergebnis 0 ist Bsp: cpi r16, 10 setzt Zero-Flag, falls r16 Wert 10 enthält nützlich für Steuerung des Programmablaufs (mehr dazu später)

8 Ports: Verwendung I/O-Ports müssen vor Verwendung explizit als Ein-/Ausgabe-Port konfiguriert werden PORTx bzw PINx wird mittels DDRx (data direction register) konfiguriert (x ist Platzhalter): ldi r16, 0xff out DDRA, r16 ldi r16, 0 out DDRB, r16 ; alle Bits in r16 auf 1 setzen ; Wert in DDRA schreiben ; PORTA ist nun Ausgabe-Port, ; zb fuer LEDs ; alle Bits in r16 auf 0 setzen ; Wert in DDRB schreiben ; PINB ist nun Eingabe-Port, ; zb fuer Schalter

9 Ports: Verwendung out PORTB, r16 (Wert in r16 auf Port B ausgeben) in r17, PIND (Wert an Port D in Register r17 einlesen) sbi PORTB, 0 (Bit 0 von Port B setzen) cbi PORTB, 0 (Bit 0 von Port B löschen)

10 Sprungbefehle und Labels Kontrollstrukturen in Hochsprachen Verzweigungen: if ( ) { } Schleifen: while ( ) { }, for ( ) { } Wie in Assembler realisiert? Labels Markieren Speicherstellen, an denen Daten oder Programmcode stehen können Sprungbefehle Springen zu Labels, dh die Programmausführung wird an der durch das Label markierten Speicherstelle fortgesetzt

11 Sprungbefehle und Labels: Beispiele Endlosschleife durch unbedingten Sprung main: rjmp main for-schleife mit 100 Iterationen ldi r16, 0 ; Zählvariable initialisieren schleife: ; Sprung-Label inc r16 ; Zählvariable um eins erhöhen cpi r16, 100 ; und mit Konstante 100 vergleichen brlo schleife ; brlo = branch if lower ; also Schleife erneut starten, ; solange r16 < 100

12 Sprungbefehle und Labels: Beispiele if-verzweigung cpi r16, 100 ; Vergeich mit Konstante 100 brne ungleich ; brne = branch if not equal ; falls r16 den Wert 100 enthält, ; wird die Ausführung hier ganz ; normal fortgesetzt und der rjmp if_ende ; ungleich -Zweig übersprungen ungleich: ; Ausführung hier fortsetzen, falls ; r16 nicht 100 enthält if_ende:

13 Sprungbefehle und das Statusregister Operationen mit Auswirkung auf Statusregister Mathematische Operationen: add, sub, inc, dec, Bit-Operatoren: and, or, com, lsl, lsr, setzen zb Zero-Flag, wenn Ergebnis 0 ist add speichert Übertrag im Carry-Flag lsl und lsr speichern dort das rausgeschobene Bit Vergleichsoperationen: cp, cpi, setzen ebenfalls Zero-Flag, wenn verglichene Werte identisch sind

14 Sprungbefehle und das Statusregister Von Bits im Statusregister beeinflusste Operationen breq: branch if equal, dh wenn Zero-Flag gesetzt ist brne: branch if not equal brcs: branch if carry set, dh wenn Carry-Flag gesetzt ist brcc: branch if carry cleared brsh: branch if same or higher brlo: branch if lower

15 Stack dt: Stapel dient der Speicherung von Daten im Arbeitsspeicher LIFO-Prinzip: last in, first out zuletzt auf Stack abgelegtes Byte wird als erstes gelesen Operationen: push (legt Byte auf Stack ab) pop (entfernt zuletzt abgelegtes Byte vom Stack)

16 Stack: Beispiel PC: program counter, zeigt auf nächsten Befehl SP: stack pointer, zeigt auf höchste freie SRAM-Adresse Die Hexadezimalzahlen stellen Speicheradressen dar PC Flash-Speicher 0x80 ldi r16, 16 0x82 ldi r17, 17 0x84 ldi r18, 18 0x86 push r16 0x88 push r17 0x90 push r18 0x92 pop r17 0x94 pop r18 0x96 addi r16, 15 0x98 pop r16 r16 r17 r18??? SP SRAM 0x2000? 0x1FFF? 0x1FFE? 0x1FFD?

17 Stack: Beispiel Konstante 16 wurde in Register r16 geladen PC Flash-Speicher 0x80 ldi r16, 16 0x82 ldi r17, 17 0x84 ldi r18, 18 0x86 push r16 0x88 push r17 0x90 push r18 0x92 pop r17 0x94 pop r18 0x96 addi r16, 15 0x98 pop r16 r16 r17 r18 16?? SP SRAM 0x2000? 0x1FFF? 0x1FFE? 0x1FFD?

18 Stack: Beispiel Konstante 17 wurde in Register r17 geladen PC Flash-Speicher 0x80 ldi r16, 16 0x82 ldi r17, 17 0x84 ldi r18, 18 0x86 push r16 0x88 push r17 0x90 push r18 0x92 pop r17 0x94 pop r18 0x96 addi r16, 15 0x98 pop r16 r16 r17 r ? SP SRAM 0x2000? 0x1FFF? 0x1FFE? 0x1FFD?

19 Stack: Beispiel Konstante 18 wurde in Register r18 geladen PC Flash-Speicher 0x80 ldi r16, 16 0x82 ldi r17, 17 0x84 ldi r18, 18 0x86 push r16 0x88 push r17 0x90 push r18 0x92 pop r17 0x94 pop r18 0x96 addi r16, 15 0x98 pop r16 r16 r17 r SP SRAM 0x2000? 0x1FFF? 0x1FFE? 0x1FFD?

20 Stack: Beispiel Wert in r16 wurde auf Stack gelegt, Stackpointer dekrementiert PC Flash-Speicher 0x80 ldi r16, 16 0x82 ldi r17, 17 0x84 ldi r18, 18 0x86 push r16 0x88 push r17 0x90 push r18 0x92 pop r17 0x94 pop r18 0x96 addi r16, 15 0x98 pop r16 r16 r17 r SP SRAM 0x x1FFF? 0x1FFE? 0x1FFD?

21 Stack: Beispiel Wert in r17 wurde auf Stack gelegt, Stackpointer dekrementiert PC Flash-Speicher 0x80 ldi r16, 16 0x82 ldi r17, 17 0x84 ldi r18, 18 0x86 push r16 0x88 push r17 0x90 push r18 0x92 pop r17 0x94 pop r18 0x96 addi r16, 15 0x98 pop r16 r16 r17 r SP SRAM 0x x1FFF 17 0x1FFE? 0x1FFD?

22 Stack: Beispiel Wert in r18 wurde auf Stack gelegt, Stackpointer dekrementiert PC Flash-Speicher 0x80 ldi r16, 16 0x82 ldi r17, 17 0x84 ldi r18, 18 0x86 push r16 0x88 push r17 0x90 push r18 0x92 pop r17 0x94 pop r18 0x96 addi r16, 15 0x98 pop r16 r16 r17 r SP SRAM 0x x1FFF 17 0x1FFE 18 0x1FFD?

23 Stack: Beispiel Oberster Wert wurde von Stack genommen und in r17 gespeichert, Stackpointer inkrementiert PC Flash-Speicher 0x80 ldi r16, 16 0x82 ldi r17, 17 0x84 ldi r18, 18 0x86 push r16 0x88 push r17 0x90 push r18 0x92 pop r17 0x94 pop r18 0x96 addi r16, 15 0x98 pop r16 r16 r17 r SP SRAM 0x x1FFF 17 0x1FFE 18 0x1FFD?

24 Stack: Beispiel Oberster Wert wurde von Stack genommen und in r18 gespeichert, Stackpointer inkrementiert PC Flash-Speicher 0x80 ldi r16, 16 0x82 ldi r17, 17 0x84 ldi r18, 18 0x86 push r16 0x88 push r17 0x90 push r18 0x92 pop r17 0x94 pop r18 0x96 addi r16, 15 0x98 pop r16 r16 r17 r SP SRAM 0x x1FFF 17 0x1FFE 18 0x1FFD?

25 Stack: Beispiel Konstante 15 wurde zu Wert in r16 addiert PC Flash-Speicher 0x80 ldi r16, 16 0x82 ldi r17, 17 0x84 ldi r18, 18 0x86 push r16 0x88 push r17 0x90 push r18 0x92 pop r17 0x94 pop r18 0x96 addi r16, 15 0x98 pop r16 r16 r17 r SP SRAM 0x x1FFF 17 0x1FFE 18 0x1FFD?

26 Stack: Beispiel Oberster Wert wurde von Stack genommen und in r16 gespeichert, Stackpointer inkrementiert PC Flash-Speicher 0x80 ldi r16, 16 0x82 ldi r17, 17 0x84 ldi r18, 18 0x86 push r16 0x88 push r17 0x90 push r18 0x92 pop r17 0x94 pop r18 0x96 addi r16, 15 0x98 pop r16 r16 r17 r SP SRAM 0x x1FFF 17 0x1FFE 18 0x1FFD?

27 Stack: Initialisierung Um den Stack eines AVR-Mikrocontrollers nutzen zu können, muss zunächst der Stack-Pointer über den Port SP initialisiert werden: ldi r16, low(ramend) out SPL, r16 ldi r16, high(ramend) out SPH, r16 Die 16-Bit-Konstante RAMEND enthält die höchste gültige SRAM-Adresse low liefert deren niederes Byte, high das höhere Anschließend können push und pop wie im Beispiel verwendet werden

28 Subroutinen Beispiel in C++ void swap ( int& a, int& b ) { int temp = a; a = b; b = temp; }

29 Subroutinen Äquivalent in Assembler (Werte in r16 und r17 vertauschen) swap: push r18 mov r18, r16 mov r16, r17 mov r17, r18 pop r18 ret rcall swap ; Beginn der Subroutine ; Wert von r18 sichern ; Werte in r16 und r17 mit ; Umweg über r18 vertauschen ; alten Wert von r18 wiederherstellen ; Rücksprungadresse vom Stack holen ; und dorthin springen ; Rücksprungadresse (dh Adresse der ; nachfolgenden Instruktion) auf Stack ; ablegen und zum Label swap springen

30 Subroutinen & Stack: Beispiel Informationen zum folgenden Beispiel Subroutine (mit Label swap) beginnt an Adresse 0x80 im Flash-Speicher Warum ausgerechnet bei 0x80? Dazu später mehr Dahinter folgt ab Adresse 0x92 das Hauptprogramm (Label main) Programmausführung beginnt bei AVR-Mikrocontrollern immer an Adresse 0x00 Dort steht Sprungbefehl zum Label main, dh Subroutine wird zunächst übersprungen und Hauptprogramm wird ausgeführt

31 Subroutinen & Stack: Beispiel Labels: main = 0x92, swap = 0x80 PC Flash-Speicher 0x00 rjmp main 0x80 push r18 0x82 mov r18, r16 0x84 mov r16, r17 0x86 mov r17, r18 0x88 pop r18 0x90 ret 0x92 ldi r16, 5 0x94 ldi r17, 10 0x96 rcall swap 0x98 rjmp main r16 r17 r18?? 18 SP SRAM 0x2000? 0x1FFF? 0x1FFE? 0x1FFD?

32 Subroutinen & Stack: Beispiel Labels: main = 0x92, swap = 0x80 PC Flash-Speicher 0x00 rjmp main 0x80 push r18 0x82 mov r18, r16 0x84 mov r16, r17 0x86 mov r17, r18 0x88 pop r18 0x90 ret 0x92 ldi r16, 5 0x94 ldi r17, 10 0x96 rcall swap 0x98 rjmp main r16 r17 r18?? 18 SP SRAM 0x2000? 0x1FFF? 0x1FFE? 0x1FFD?

33 Subroutinen & Stack: Beispiel Labels: main = 0x92, swap = 0x80 PC Flash-Speicher 0x00 rjmp main 0x80 push r18 0x82 mov r18, r16 0x84 mov r16, r17 0x86 mov r17, r18 0x88 pop r18 0x90 ret 0x92 ldi r16, 5 0x94 ldi r17, 10 0x96 rcall swap 0x98 rjmp main r16 r17 r18 5? 18 SP SRAM 0x2000? 0x1FFF? 0x1FFE? 0x1FFD?

34 Subroutinen & Stack: Beispiel Labels: main = 0x92, swap = 0x80 PC Flash-Speicher 0x00 rjmp main 0x80 push r18 0x82 mov r18, r16 0x84 mov r16, r17 0x86 mov r17, r18 0x88 pop r18 0x90 ret 0x92 ldi r16, 5 0x94 ldi r17, 10 0x96 rcall swap 0x98 rjmp main r16 r17 r SP SRAM 0x2000? 0x1FFF? 0x1FFE? 0x1FFD?

35 Subroutinen & Stack: Beispiel Labels: main = 0x92, swap = 0x80 PC Flash-Speicher 0x00 rjmp main 0x80 push r18 0x82 mov r18, r16 0x84 mov r16, r17 0x86 mov r17, r18 0x88 pop r18 0x90 ret 0x92 ldi r16, 5 0x94 ldi r17, 10 0x96 rcall swap 0x98 rjmp main r16 r17 r SP SRAM 0x2000 0x98 0x1FFF? 0x1FFE? 0x1FFD?

36 Subroutinen & Stack: Beispiel Labels: main = 0x92, swap = 0x80 PC Flash-Speicher 0x00 rjmp main 0x80 push r18 0x82 mov r18, r16 0x84 mov r16, r17 0x86 mov r17, r18 0x88 pop r18 0x90 ret 0x92 ldi r16, 5 0x94 ldi r17, 10 0x96 rcall swap 0x98 rjmp main r16 r17 r SP SRAM 0x2000 0x98 0x1FFF 18 0x1FFE? 0x1FFD?

37 Subroutinen & Stack: Beispiel Labels: main = 0x92, swap = 0x80 PC Flash-Speicher 0x00 rjmp main 0x80 push r18 0x82 mov r18, r16 0x84 mov r16, r17 0x86 mov r17, r18 0x88 pop r18 0x90 ret 0x92 ldi r16, 5 0x94 ldi r17, 10 0x96 rcall swap 0x98 rjmp main r16 r17 r SP SRAM 0x2000 0x98 0x1FFF 18 0x1FFE? 0x1FFD?

38 Subroutinen & Stack: Beispiel Labels: main = 0x92, swap = 0x80 PC Flash-Speicher 0x00 rjmp main 0x80 push r18 0x82 mov r18, r16 0x84 mov r16, r17 0x86 mov r17, r18 0x88 pop r18 0x90 ret 0x92 ldi r16, 5 0x94 ldi r17, 10 0x96 rcall swap 0x98 rjmp main r16 r17 r SP SRAM 0x2000 0x98 0x1FFF 18 0x1FFE? 0x1FFD?

39 Subroutinen & Stack: Beispiel Labels: main = 0x92, swap = 0x80 PC Flash-Speicher 0x00 rjmp main 0x80 push r18 0x82 mov r18, r16 0x84 mov r16, r17 0x86 mov r17, r18 0x88 pop r18 0x90 ret 0x92 ldi r16, 5 0x94 ldi r17, 10 0x96 rcall swap 0x98 rjmp main r16 r17 r SP SRAM 0x2000 0x98 0x1FFF 18 0x1FFE? 0x1FFD?

40 Subroutinen & Stack: Beispiel Labels: main = 0x92, swap = 0x80 PC Flash-Speicher 0x00 rjmp main 0x80 push r18 0x82 mov r18, r16 0x84 mov r16, r17 0x86 mov r17, r18 0x88 pop r18 0x90 ret 0x92 ldi r16, 5 0x94 ldi r17, 10 0x96 rcall swap 0x98 rjmp main r16 r17 r SP SRAM 0x2000 0x98 0x1FFF 18 0x1FFE? 0x1FFD?

41 Subroutinen & Stack: Beispiel Labels: main = 0x92, swap = 0x80 PC Flash-Speicher 0x00 rjmp main 0x80 push r18 0x82 mov r18, r16 0x84 mov r16, r17 0x86 mov r17, r18 0x88 pop r18 0x90 ret 0x92 ldi r16, 5 0x94 ldi r17, 10 0x96 rcall swap 0x98 rjmp main r16 r17 r SP SRAM 0x2000 0x98 0x1FFF 18 0x1FFE? 0x1FFD?

42 Subroutinen Zu beachtende Regeln vor Aufruf von Subroutinen Stack-Pointer initialisieren, da rcall dort die Rücksprungadresse ablegt benutzte Register zu Beginn der Subroutine ggf auf Stack sichern und am Ende wiederherstellen, damit Werte nicht verloren gehen sicherstellen, dass Stackpointer vor ret wirklich dieselbe Adresse enthält wie zu Beginn der Subroutine; sonst erfolgt Sprung an falsche Adresse!

43 Interrupts Unterbrechungen des Programmablaufs ausgelöst zb durch Timer-Überlauf oder wechselnden Pegel an Port ATmega-Datenblätter enthalten Liste der auf jeweiligen MCUs verfügbaren Interrupts Vorteil: Man muss nicht ständig selber prüfen, ob das auslösende Ereignis eingetreten ist Interruts aktivieren: sei Interruts deaktivieren: cli Interrupt-Service-Routine (ISR), die durch Interrupt ausgelöst wird, wird über Interrupt-Vektor festgelegt

44 Interrupts Interrupt-Vektor beginnt an Adresse 0x00 im Flash-Speicher Adressen enthalten rjmp-befehle, die Sprung an Startadresse der entsprechenden ISR veranlassen bei Eintreten eines Interrupts: Interrupts werden deaktiviert aktueller Befehl wird abgearbeitet, Programmzähler erhöht Wert des Programmzählers wird auf Stack gesichert Sprung an fest definierte Adresse im Interrupt-Vektor Ausführung des dortigen Sprungbefehls ISR muss idr mit Befehl reti enden reti lädt Rücksprungadresse von Stack in Programmzähler und aktiviert anschließend Interrupts (dh Stackpointer muss vor Ausführung von reti denselben Wert enthalten wie zu Beginn der ISR!)

45 Interrupts Interrupt-Vektor: Beispiel org 0x00 rjmp MAIN_LOOP ; wird bei Programmstart ausgeführt org OVF0addr rjmp TIMER0_OVERFLOW ; Timer-0-Überlauf TIMER0_OVERFLOW: [Interrupt-Behandlung] reti MAIN_LOOP: [Hauptprogramm, hier muss zb sei ausgeführt werden]

46 Interrupts Interrupt-Vektor: Anmerkungen Im Beispiel wird davon ausgegangen, dass nur der Timer-0-Interrupt aktiviert wurde Wurden andere Interrupts aktiviert, ohne entsprechende rjmp-befehle im Interrupt-Vektor einzutragen, treten Fehler auf Zur Sicherheit kann man an jeder Adresse im Interrupt-Vektor, die noch keinen rjmp-befehl enthält, den Befehl reti eintragen Wenn dann der zugehörige Interrupt ausgelöst wird, hat er keine Auswirkung

Einführung in AVR-Assembler

Einführung in AVR-Assembler Einführung in AVR-Assembler Easterhack 2008 Chaos Computer Club Cologne Stefan Schürmans, BlinkenArea stefan@blinkenarea.org Version 1.0.4 Easterhack 2008 Einführung in AVR-Assembler 1 Inhalt Vorstellung

Mehr

B1 Stapelspeicher (stack)

B1 Stapelspeicher (stack) B1 Stapelspeicher (stack) Arbeitsweise des LIFO-Stapelspeichers Im Kapitel "Unterprogramme" wurde schon erwähnt, dass Unterprogramme einen so genannten Stapelspeicher (Kellerspeicher, Stapel, stack) benötigen

Mehr

Core und Speicher des ATmega16

Core und Speicher des ATmega16 Ausarbeitung Core und Speicher des ATmega16 Verfasst von: Daniel Dünker Quellen: http://www.atmel.com/dyn/resources/prod_documents/doc2466.pdf Inhaltsverzeichnis 1.Allgemeines (S. 3) 2.Die Alu (S. 4) 3.Das

Mehr

Atmel AVR für Dummies

Atmel AVR für Dummies Atmel AVR für Dummies fd0@koeln.ccc.de 29.12.2005 Übersicht 1 Hardware Kurzvorstellung Atmega8 Programmierkabel (Eigenbau vs. Kommerzlösung) Alternative: Bootloader (Programmieren via rs232) Software Speicher

Mehr

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen Mikroprozessoren Grundlagen Aufbau, Blockschaltbild Grundlegende Datentypen AVR-Controller Anatomie Befehlssatz Assembler Speicherzugriff Adressierungsarten Kontrollstrukturen Stack Input / Output (I/O)

Mehr

Rechnerarchitektur und Betriebssysteme (CS201): AVR-CPU und -Assembler

Rechnerarchitektur und Betriebssysteme (CS201): AVR-CPU und -Assembler Rechnerarchitektur und Betriebssysteme (CS201): AVR-CPU und -Assembler 1. Oktober 2013 Prof. Dr. Christian Tschudin Departement Mathematik und Informatik, Universität Basel Wiederholung / Diskussion 1.

Mehr

Wer in der Grundschule ein wenig aufgepasst hat, sollte in der Lage sein schriftlich eine Zahl durch eine zweite zu teilen.

Wer in der Grundschule ein wenig aufgepasst hat, sollte in der Lage sein schriftlich eine Zahl durch eine zweite zu teilen. Teilen binär Teil 1 - Vorzeichenlose Ganzzahlen ============ Irgendwann steht jeder Programmieren vor diesem Problem. Wie teile ich eine Binärzahl durch eine zweite? Wer in der Grundschule ein wenig aufgepasst

Mehr

Multitasking / virtuelle Maschinen mittels Atmel AVR- Mikrocontrollern (Simple & Stupid)

Multitasking / virtuelle Maschinen mittels Atmel AVR- Mikrocontrollern (Simple & Stupid) VM/AVR SIMPLE & STUPID 1 Multitasking / virtuelle Maschinen mittels Atmel AVR- Mikrocontrollern (Simple & Stupid) Stand: 26. 1. 2010 Zweck: Elementare Demonstration der Mehrprogrammausführung auf Grundlage

Mehr

Technische Informatik 2: Addressierung und Befehle

Technische Informatik 2: Addressierung und Befehle Technische Informatik 2: Addressierung und Befehle Memory Map Programm Speicher: Adresse $000-$FFF max. 4096 Byte für kompiliertes Programm Data Memory: Adresse $0000-$FFFF 32 8Bit Register 64 I/O Register

Mehr

Parallel-IO. Ports am ATmega128

Parallel-IO. Ports am ATmega128 Parallel-IO Ansteuerung Miniprojekt Lauflicht Ports am ATmega128 PortE (PE7...PE0) alternativ, z.b. USART0 (RS232) 1 Pin von PortC Port C (PC7...PC0) 1 Parallel-IO-Port "Sammelsurium" verschiedener Speicher

Mehr

Übungen für die Einführung in die Assemblerprogrammierung mit dem Prozessor c515c

Übungen für die Einführung in die Assemblerprogrammierung mit dem Prozessor c515c Übungen für die Einführung in die Assemblerprogrammierung mit dem Prozessor c515c 1 Transportbefehle 1.1 Verwendung nur Akku und Register (R0, R1,... R7) 1.1.1 Kopieren Sie den Wert aus Register1 nach

Mehr

Befehlssatz AVR RISC Controller

Befehlssatz AVR RISC Controller Befehlssatz AVR RISC Controller Design-Philosophie des AVR Befehlssatzes Assembler-Sprache AVR-Befehlssatz Philosophie RISC = Reduced Instruction Set Computing keine komplexen Befehle möglichst symmetrischer

Mehr

Rechnerarchitektur und Betriebssysteme (CS201): Asm-Programmierung, Stack, Compiler

Rechnerarchitektur und Betriebssysteme (CS201): Asm-Programmierung, Stack, Compiler Rechnerarchitektur und Betriebssysteme (CS201): Asm-Programmierung, Stack, Compiler 11. November 2005 Prof. Dr. Christian Tschudin Departement Informatik, Universität Basel Wiederholung / Diskussion 1.

Mehr

U5-2 Register beim AVR-µC

U5-2 Register beim AVR-µC U5 4. Übungsaufgabe U5 4. Übungsaufgabe U5-2 Register beim AVR-µC U5-2 Register beim AVR-mC Grundlegendes zur Übung mit dem AVR-µC 1 Überblick Register Beim AVR µc sind die Register: I/O Ports Interrupts

Mehr

Zusammenfassung der Assemblerbefehle des 8051

Zusammenfassung der Assemblerbefehle des 8051 Zusammenfassung der Assemblerbefehle des 8051 Seite 1 von 5 Befehl Bezeichnung Syntax Wirkung / Beispiel Befehle zum Datentransfer MOV Move MOV [Ziel],[Quelle] MOV P1,P3 Kopiert den Inhalt von P3 nach

Mehr

Betriebssysteme Kap B: Hardwaremechanismen

Betriebssysteme Kap B: Hardwaremechanismen 1 Betriebssysteme Kap B: Hardwaremechanismen 2 Beispielprozessor Ein- / Ausgabe p[ ] ir Leitwerk pc Register a f sp Rechenwerk Speicher m[ ] Spezielle Register Flagregister f f.i: Interrupt-Enable-Flag

Mehr

Makros sind Textersetzungen, welche vom Präprozessor aufgelöst werden. Dies Passiert bevor der Compiler die Datein verarbeitet.

Makros sind Textersetzungen, welche vom Präprozessor aufgelöst werden. Dies Passiert bevor der Compiler die Datein verarbeitet. U4 4. Übung U4 4. Übung Besprechung Aufgabe 2 Makros Register I/O-Ports U4.1 U4-1 Makros U4-1 Makros Makros sind Textersetzungen, welche vom Präprozessor aufgelöst werden. Dies Passiert bevor der Compiler

Mehr

Die Mikroprogrammebene eines Rechners

Die Mikroprogrammebene eines Rechners Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten, z.b. Befehl holen Befehl dekodieren Operanden holen etc.

Mehr

TECHNISCHE HOCHSCHULE NÜRNBERG GEORG SIMON OHM Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten, z.b. Befehl

Mehr

GdI2 - Systemnahe Programmierung in C Übungen Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2006 U4.fm

GdI2 - Systemnahe Programmierung in C Übungen Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2006 U4.fm U4 4. Übungsaufgabe U4 4. Übungsaufgabe Grundlegendes zur Übung mit dem AVR-µC Register I/O Ports Interrupts AVR-Umgebung U4.1 U4-1 Grundlegendes zur Übung mit dem AVR-mC U4-1 Grundlegendes zur Übung mit

Mehr

1 Assembler. 2 LED-Steuerung

1 Assembler. 2 LED-Steuerung Inhaltsverzeichnis Inhaltsverzeichnis... 1 1 Assembler... 2 2 LED-Steuerung... 2 3 Taster Abfrage ( Port I/O)... 3 3.1 Zahlensysteme... 3 3.2 Ausgabe... 4 3.2.1 Assembler-Sourcecode... 4 3.2.2 Assemblieren...

Mehr

Gerhard Paulus gp@gnomsoft.de

Gerhard Paulus gp@gnomsoft.de -------------------------------------------------------------- Assembler ab 0 und 1 8.10.2002 -------------------------------------------------------------- Gerhard Paulus gp@gnomsoft.de Copyright (c)

Mehr

MOP: Befehlsliste für den Mikrocontroller 8051

MOP: Befehlsliste für den Mikrocontroller 8051 Beuth Hochschule Berlin FB VI, Labor für Digitaltechnik MOP: Befehlsliste für den Mikrocontroller 8051 Erläuterung der Operanden Operand A addr11 addr16 bit /bit C #data #data16 direct DPTR PC Ri Rn rel

Mehr

Rechnerarchitektur Atmega 32. 1 Vortrag Atmega 32. Von Urs Müller und Marion Knoth. Urs Müller Seite 1 von 7

Rechnerarchitektur Atmega 32. 1 Vortrag Atmega 32. Von Urs Müller und Marion Knoth. Urs Müller Seite 1 von 7 1 Vortrag Atmega 32 Von Urs Müller und Marion Knoth Urs Müller Seite 1 von 7 Inhaltsverzeichnis 1 Vortrag Atmega 32 1 1.1 Einleitung 3 1.1.1 Hersteller ATMEL 3 1.1.2 AVR - Mikrocontroller Familie 3 2 Übersicht

Mehr

U23 2008 Abend 3: Musterlösungen, Taster entprellen, Unterprozeduren, Interrupts, Timer

U23 2008 Abend 3: Musterlösungen, Taster entprellen, Unterprozeduren, Interrupts, Timer Abend 3: Musterlösungen, Taster entprellen, Unterprozeduren, Interrupts, Timer Alexander Neumann e.v. http://koeln.ccc.de Köln, 1.9.2008 1 Musterlösungen Aufgabe 1 & 2 2 Taster entprellen

Mehr

Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13

Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13 Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13 Eine Einführung in Aufbau, Funktionsweise, Programmierung und Nutzen von Mikroprozessoren Teil II: Wat iss ene Bit, Byte un Word?

Mehr

Interrupts. Funktionsprinzip. Funktionsprinzip. Beispiel in C

Interrupts. Funktionsprinzip. Funktionsprinzip. Beispiel in C Interrupts Funktionsprinzip Interrupts bei ATmega128 Beispiel in C Funktionsprinzip 1 Was ist ein Interrupt? C muss auf Ereignisse reagieren können, z.b.: - jemand drückt eine Taste - USART hat Daten empfangen

Mehr

x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013

x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013 x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013 1 / 53 Inhaltsverzeichnis 1 Einführung 2 Assembler Syntax, Register und Flags 3 Hauptspeicher 4 Stack 5 Assemblerbefehle

Mehr

2

2 TINF Interrupts EDT-Referat Jürgen Schwarzbauer 2ANB 1995/96 Inhalt : Was ist ein Interrupt? Zweck von Interrupts Maskierbare und nicht maskierbare Interrupts Aufruf eines Interrupts Anwendung von Interrupts

Mehr

Grundlagen zur Assemblerprogrammierung unter SPIM im Sommersemester Lorenz Schauer Mobile & Verteilte Systeme

Grundlagen zur Assemblerprogrammierung unter SPIM im Sommersemester Lorenz Schauer Mobile & Verteilte Systeme Grundlagen zur Assemblerprogrammierung unter SPIM im Sommersemester 2016 Lorenz Schauer Mobile & Verteilte Systeme 12. Juli 2016 Agenda heute Grundlagen: Unterprogramme I Call-by-Value (CBV) vs. Call-by-Reference

Mehr

Mikrocomputertechnik. Adressierungsarten

Mikrocomputertechnik. Adressierungsarten Adressierungsarten Ein Mikroprozessor bietet meist eine Reihe von Möglichkeiten, die Operanden für eine Rechenoperation zu bestimmen. Diese Möglichkeiten bezeichnet man als Adressierungsarten. unmittelbare

Mehr

Microcontroller Kurs Programmieren. 09.10.11 Microcontroller Kurs/Johannes Fuchs 1

Microcontroller Kurs Programmieren. 09.10.11 Microcontroller Kurs/Johannes Fuchs 1 Microcontroller Kurs Programmieren 9.1.11 Microcontroller Kurs/Johannes Fuchs 1 General Purpose Input Output (GPIO) Jeder der Pins der vier I/O Ports kann als Eingabe- oder Ausgabe-leitung benutzt werden.

Mehr

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015 Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015 Ziele der Übung Aufgabe 1 Aufbau und Aufruf von Funktionen in Assembler Codeanalyse

Mehr

Lösungen zum Kurs "Mikrocontroller Hard- und Software

Lösungen zum Kurs Mikrocontroller Hard- und Software Lösungen zum Kurs "Mikrocontroller Hard- und Software Gerhard Schmidt Kastanienallee 20 64289 Darmstadt http://www.avr-asm-tutorial.net Lösung Aufgabe 2 Aufgabe 2 sbi DDRB,PB0 2 Takte sbi PORTB,PB0 2 Takte

Mehr

Daniel Betz Wintersemester 2011/12

Daniel Betz Wintersemester 2011/12 Daniel Betz Wintersemester 2011/12 Digitally signed by daniel.betz@daniel-betz.com Date: 2011.12.04 17:24:40 +01'00' Insgesamt 16 Register von je 16 Bit (=WORD) Breite Untere 8 Register auch als 2 Register

Mehr

Programmieren in C Teil 3: Mikrocontrollerprogrammierung

Programmieren in C Teil 3: Mikrocontrollerprogrammierung Programmieren in C Teil 3: Mikrocontrollerprogrammierung 08/30/10 Fachbereich Physik Institut für Kernphysik Bastian Löher, Martin Konrad 1 Tag 1 Hello World 08/30/10 Fachbereich Physik Institut für Kernphysik

Mehr

Kap 4. 4 Die Mikroprogrammebene eines Rechners

Kap 4. 4 Die Mikroprogrammebene eines Rechners 4 Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten (Befehl holen, Befehl dekodieren, Operanden holen etc.).

Mehr

Heute nur MIPS-Praxis (4 Aufgaben)

Heute nur MIPS-Praxis (4 Aufgaben) Themen heute Heute nur MIPS-Praxis (4 Aufgaben) Hinweis: Diese Aufgaben findet ihr auf den Übungsblättern zu den Tutorien (bei Aufgabe 4 wurde eine Teilaufgabe und im Tutorium #6 bereits geklärte Wissensfragen

Mehr

Teil Rechnerarchitekturen M05. AVR-CPU und Assembler, Memory Map, Stack, Prozeduraufruf, Calling Convention

Teil Rechnerarchitekturen M05. AVR-CPU und Assembler, Memory Map, Stack, Prozeduraufruf, Calling Convention Teil Rechnerarchitekturen M05 AVR-CPU und Assembler, Memory Map, Stack, Prozeduraufruf, Calling Convention Corinna Schmitt corinna.schmitt@unibas.ch AVR-CPU und -Assembler 2015 Corinna Schmitt Teil Rechnerarchitekturen

Mehr

Mikrocomputertechnik. Thema: Der Aufbau des XC888-Mikrocontrollers -Teil 1 -

Mikrocomputertechnik. Thema: Der Aufbau des XC888-Mikrocontrollers -Teil 1 - Mikrocomputertechnik Thema: Der Aufbau des XC888-Mikrocontrollers -Teil 1 - Mikroprozessor-Achritekturen Folie 2 Mikroprozessor-Achritekturen Klassifizierung anhand Wortbreite CPU-Architektur und Busleitungen

Mehr

05. Assembler-Programmierung. Datenstrukturen des ATMega32. Literatur

05. Assembler-Programmierung. Datenstrukturen des ATMega32. Literatur 0. Assembler-Programmierung Datenstrukturen des ATMega32 Literatur mikrocontroller.net avr-asm-tutorial.net asm Alles über AVR AVR-Assembler-Einführung Assembler AVR-Aufbau, Register, Befehle 2008: ouravr.com/attachment/microschematic/index.swf

Mehr

3.0 8051 Assembler und Hochsprachen

3.0 8051 Assembler und Hochsprachen 3.0 8051 Assembler und Hochsprachen Eine kurze Übersicht zum Ablauf einer Programmierung eines 8051 Mikrocontrollers. 3.1 Der 8051 Maschinencode Grundsätzlich akzeptiert ein 8051 Mikrocontroller als Befehle

Mehr

U5 Fortgeschrittene AVR-Programmierung

U5 Fortgeschrittene AVR-Programmierung U5 Fortgeschrittene AVR-Programmierung U5 Fortgeschrittene AVR-Programmierung Interrupts Synchronisation mit Unterbrechungsbehandlungen Stromsparmodi des AVR U5.1 U5-1 Externe Interrupts des AVR-μC U5-1

Mehr

Wer möchte, kann sein Programm auch auf echter Hardware testen

Wer möchte, kann sein Programm auch auf echter Hardware testen U4 3. Übungsaufgabe U4 3. Übungsaufgabe Grundlegendes zur Übung mit dem AVR-μC Register I/O-Ports AVR-Umgebung Peripherie U4.1 U4-1 Grundlegendes zur Übung mit dem AVR-mC U4-1 Grundlegendes zur Übung mit

Mehr

AVR-Mikrocontrollertechnik

AVR-Mikrocontrollertechnik 1/31 Ziele der Weiterbildung Vermitteln von Grundlagen zu den AVR Controllern Vermitteln von Assembler Grundlagen Vorstellen der benötigten Hard und Software Eigenständiges Programmieren der Controller

Mehr

Der Toy Rechner Ein einfacher Mikrorechner

Der Toy Rechner Ein einfacher Mikrorechner Der Toy Rechner Ein einfacher Mikrorechner Dr. Gerald Heim Haid-und-Neu-Str. 10-14 76131 Karlsruhe 16. Mai 1995 Allgemeine Informationen 2 Quelle: Phil Kopmann, Microcoded versus Hard-Wired Logic, Byte

Mehr

Rechnerarchitektur, Einführung in die Laborübungen

Rechnerarchitektur, Einführung in die Laborübungen Rechnerarchitektur, Einführung in die Laborübungen G. Kemnitz 24. November 2016 Inbetriebnahme der Mikrorechnerbaudruppe 1. Anschluss 5V-Netzteil 2. Anschluss Programmer 3. Einschalter 4. Eingabeschalter

Mehr

Rechnerarchitektur und Betriebssysteme (CS201): Memory Map, Stack, Prozeduraufruf, Calling Convent.

Rechnerarchitektur und Betriebssysteme (CS201): Memory Map, Stack, Prozeduraufruf, Calling Convent. Rechnerarchitektur und Betriebssysteme (CS201): Memory Map, Stack, Prozeduraufruf, Calling Convent. 19. Oktober 2012 Prof. Dr. Christian Tschudin Departement Mathematik und Informatik, Universität Basel

Mehr

10. Die Adressierungsarten des MSP 430

10. Die Adressierungsarten des MSP 430 10. Die Adressierungsarten 10.1 Übersicht über die Adressierungsarten 10.2 -Operanden 10.3 Indexregister mit Distanz 10.4 Symbolische (relativ zum ) 10.5 Absolute 10.6 Indirekte 10.7 Indirekte Adressierung

Mehr

Mikrocontroller - Schnelleinstieg

Mikrocontroller - Schnelleinstieg Mikrocontroller - Schnelleinstieg Am Beispiel des Atmel Mega8 Philipp Fabian Benedikt Maier Mikrocontroller Schnelleinstieg Seite 1 Mikrocontroller - Schnelleinstieg: - Was ist ein Mikrokontroller? - Welche

Mehr

4 Assembler für die 8051-Controller-Familie

4 Assembler für die 8051-Controller-Familie 4 Assembler für die 8051-Controller-Familie Tabelle 4.1 Wichtige Schreibweisen und Bedeutungen für die Befehle Abkürzung #data data addr Rr @Rr code addr Bedeutung Daten sind in der Instruktion codiert

Mehr

einfache PIC-Übungsprogramme

einfache PIC-Übungsprogramme einfache PIC-Übungsprogramme Schreibe in MPLAB für das PIC-Übungsboard 01 mit dem PIC16F88 folgendes Programm, assembliere und dokumentiere dieses, schreibe es anschließend mittels dem Programmiergerät

Mehr

Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13. Teil IV: Programmieren an Beispielen

Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13. Teil IV: Programmieren an Beispielen Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13 Eine Einführung in Aufbau, Funktionsweise, Programmierung und Nutzen von Mikroprozessoren Teil IV: Programmieren an Beispielen Die

Mehr

AVR-Mikrocontroller in BASCOM programmieren, Teil 2

AVR-Mikrocontroller in BASCOM programmieren, Teil 2 jean-claude.feltes@education.lu 1 AVR-Mikrocontroller in BASCOM programmieren, Teil 2 13. Interrupts 13.1 Externe Interrupts durch Taster Wenn Taster mittels Polling abgefragt werden, wie in Teil 1 beschrieben,

Mehr

Institut für Informatik Prof. Dr. D. Hogrefe Dipl.-Inf. R. Soltwisch, Dipl.-Inform. M. Ebner, Prof. Dr. D. Hogrefe Informatik II - SS 04.

Institut für Informatik Prof. Dr. D. Hogrefe Dipl.-Inf. R. Soltwisch, Dipl.-Inform. M. Ebner, Prof. Dr. D. Hogrefe Informatik II - SS 04. Kontrollstrukturen Informatik II SS 2004 Teil 4: Assembler Programmierung Sprünge (bedingte und unbedingte) If-then-else, Case Loop (n Durchläufe) While (Abbruchbedingung) Institut für Informatik Prof.

Mehr

Stephan Brumme, SST, 2.FS, Matrikelnr. 70 25 44

Stephan Brumme, SST, 2.FS, Matrikelnr. 70 25 44 Aufgabe 33 a) Der Pseudobefehl move $rd,$rs wird als addu $rd,$0,$rs übersetzt. Dabei macht sich SPIM zunutze, dass das Register $0 immer Null ist. Somit wird das Register $rd ersetzt durch $rd=0+$rs=$rs,

Mehr

0 C (Carry) Überlauf des 8ten Bits. 1 DC (Digit Carry) Überlauf des 4ten Bits. Mnemonic Parameter Beschreibung Status-Flags.

0 C (Carry) Überlauf des 8ten Bits. 1 DC (Digit Carry) Überlauf des 4ten Bits. Mnemonic Parameter Beschreibung Status-Flags. 3. Assembler-Programmierung Der PIC 16F84A Microcontroller kennt 35 verschiedene Befehle. Für eine ausführliche Beschreibung aller Befehle siehe PIC16F84A-Datenblatt Kapitel 7.1. 3.1 Wichtige Flaggen im

Mehr

Unterprogramme. Unterprogramme

Unterprogramme. Unterprogramme Unterprogramme Unterprogramme wichtiges Hilfsmittel für mehrfach benötigte Programmabschnitte spielen in höheren Programmiersprachen eine wesentliche Rolle in Assembler sind bestimmte Konventionen nötig

Mehr

HC680 PROGRAMMER'S REFERENCE MANUAL

HC680 PROGRAMMER'S REFERENCE MANUAL HC680 PROGRAMMER'S REFERENCE MANUAL Programmieranleitung Mnemonic Assembler Maschinenbefehl Wirkung /Bedeutung Register (0 bis 3 allg. Reg.) Ope- Opcode/Binärcode - Adressierungsart - Nr Bez. xx Bin Art

Mehr

U3 3. Übung U3 3. Übung. Systemnahe Programmierung in C Übungen Moritz Strübe Universität Erlangen-Nürnberg Informatik 4, 2009 U3.fm

U3 3. Übung U3 3. Übung. Systemnahe Programmierung in C Übungen Moritz Strübe Universität Erlangen-Nürnberg Informatik 4, 2009 U3.fm U3 3. Übung U3 3. Übung Besprechung Aufgabe 1 Pointer Register und Ports U3.1 U3-1 Zeiger U3-1 Zeiger 1 Einordnung Konstante: a 0110 0001 Variable: a Zeiger-Variable (Pointer): a char *p = &a; p U3.2 2

Mehr

Speicheraufbau des AT89C5131

Speicheraufbau des AT89C5131 Speicheraufbau des AT89C5131 Prinzip: - getrennter Programmspeicher (ROM) und Datenspeicher (RAM) - interner Speicher (auf dem Chip) und externer Speicher (Zusatzbausteine) Das Experimentalsystem hat keinen

Mehr

Ein erstes Assembler-Projekt

Ein erstes Assembler-Projekt Das Attiny-Projekt Ein erstes Assembler-Projekt 1 Ein erstes Assembler-Projekt In diesem Kapitel wollen wir ein erstes einfaches Assembler-Programm für unsere Attiny-Platine schreiben. Worum soll es gehen?

Mehr

Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13. Teil VI: Programmieren an weiteren Beispielen

Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13. Teil VI: Programmieren an weiteren Beispielen Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13 Eine Einführung in Aufbau, Funktionsweise, Programmierung und Nutzen von Mikroprozessoren Teil VI: Programmieren an weiteren Beispielen

Mehr

Fachhochschule Kaiserslautern Fachbereich Angewandte Ingenieurwissenschaften WS2010/11. Zeitpunkt der Prüfung: 18.01.2011 Beginn: 10.

Fachhochschule Kaiserslautern Fachbereich Angewandte Ingenieurwissenschaften WS2010/11. Zeitpunkt der Prüfung: 18.01.2011 Beginn: 10. Lehrprozessor: Coldfire MCF-5272 Zeitpunkt der Prüfung: 18.01.2011 Beginn: 10.45 Uhr Raum: Aula Bearbeitungszeit: 180 Minuten Erlaubte Hilfsmittel: Gedrucktes Vorlesungsskript von Prof. Neuschwander mit

Mehr

Technische Informatik II Rechnerarchitektur

Technische Informatik II Rechnerarchitektur Technische Informatik II Rechnerarchitektur 3.Unterprogramme in MMIX Matthias Dräger E-Mail: www: mdraeger@mi.fu-berlin.de www.matthias-draeger.info/lehre/sose2010ti2/ tinyurl.com/sose2010ti2 Zuletzt bearbeitet:

Mehr

Einführung in die Programmierung von Mikrocontrollern mit C/C++

Einführung in die Programmierung von Mikrocontrollern mit C/C++ Einführung in die Programmierung von Mikrocontrollern mit C/C++ Vorlesung Prof. Dr.-Ing. habil. G.-P. Ostermeyer Rechenleistung/Speicher Systemintegration Grundlagen der Mikrocontrollertechnik (Wiederholung)

Mehr

Einführung in die Welt der Microcontroller

Einführung in die Welt der Microcontroller Übersicht Microcontroller Schaltungen Sonstiges Einführung in die Welt der Microcontroller Übersicht Microcontroller Schaltungen Sonstiges Inhaltsverzeichnis 1 Übersicht Möglichkeiten Einsatz 2 Microcontroller

Mehr

Kurs "Mikrocontroller Hard- und Software

Kurs Mikrocontroller Hard- und Software Kurs "Mikrocontroller Hard- und Software Gerhard Schmidt Kastanienallee 20 64289 Darmstadt http://www.avr-asm-tutorial.net Hardware Hardware-Aufbau Controller Experimentierboard I/O-Ports Timing Hardwaretimer

Mehr

Mikroprozessor bzw. CPU (Central Processing. - Steuerwerk (Control Unit) - Rechenwerk bzw. ALU (Arithmetic Logic Unit)

Mikroprozessor bzw. CPU (Central Processing. - Steuerwerk (Control Unit) - Rechenwerk bzw. ALU (Arithmetic Logic Unit) Der Demo-Computer besitzt einen 4Bit-Mikroprozessor. Er kann entsprechend Wörter mit einer Breite von 4 Bits in einem Schritt verarbeiten. Die einzelnen Schritte der Abarbeitung werden durch Lampen visualisiert.

Mehr

Name: ES2 Klausur Thema: ARM 25.6.07. Name: Punkte: Note:

Name: ES2 Klausur Thema: ARM 25.6.07. Name: Punkte: Note: Name: Punkte: Note: Hinweise für das Lösen der Aufgaben: Zeit: 95 min. Name nicht vergessen! Geben Sie alle Blätter ab. Die Reihenfolge der Aufgaben ist unabhängig vom Schwierigkeitsgrad. Erlaubte Hilfsmittel

Mehr

Assembler für BASIC Programmierer

Assembler für BASIC Programmierer Assembler für BASIC Programmierer Von jean-claude.feltes@education.lu Wenn es mal schnell gehen muss: ASM und BAS mischen in BASCOM. Warum? Gibt es gute Gründe, sich mit Assembler herumzuplagen, wenn alles

Mehr

Zuse-Computer: Z1. erster Rechner mit binären Zahlen. Entwicklung der computergerechten. (Grundlage für IEEE-754) funktionierte leider nie zuverlässig

Zuse-Computer: Z1. erster Rechner mit binären Zahlen. Entwicklung der computergerechten. (Grundlage für IEEE-754) funktionierte leider nie zuverlässig Überblick Grundlagen: Spannung, Strom, Widerstand, IV-Kennlinien Elektronische Messgeräte im Elektronikpraktikum Passive Filter Signaltransport im Kabel Transistor Operationsverstärker PID-Regler Sensorik

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Kapitel 22: Mima-X Thomas Worsch KIT, Institut für Theoretische Informatik Wintersemester 2015/2016 GBI Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik

Mehr

Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures

Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures Vorbesprechung U8 Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures Basistypen Alignment der Basistypen auf deren Grösse Grössen (abhängig

Mehr

Name : Klasse : Punkte : Note :

Name : Klasse : Punkte : Note : Name : Klasse : Punkte : Note : Zeit: 08.00 bis 09.30 Es dürfen alle Unterlagen verwendet werden. Die Aufgaben sind möglichst direkt auf den Blättern zu lösen (Antworten bitte in ganzen Sätzen!), bei Bedarf

Mehr

Befehlssatz der Mikrocontroller der 51er -Familie

Befehlssatz der Mikrocontroller der 51er -Familie Befehlssatz der Mikrocontroller der 51er -Familie Abkürzungen: Mikrocontrollerfamilie 8051 Befehlssatz A : Akkumulator Rn : Register R0..R7 Ri : R0 oder R1 dadr : direkte Byte-Adresse im int. Speicher

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 17 Vom Programm zur Maschine Prof. Dr. Ralf H. Reussner Version 1.0 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD),

Mehr

3AA. Prof. Dr. Wolfgang P. Kowalk. Universität Oldenburg WS 2005/2006

3AA. Prof. Dr. Wolfgang P. Kowalk. Universität Oldenburg WS 2005/2006 3AA Prof. Dr. Wolfgang P. Kowalk Universität Oldenburg WS 2005/2006 Version vom 24.10.2005 Übersicht Einführung in maschinennahe Programmierung Verständnis für grundlegende Vorgänge im Computer Jedes Programm

Mehr

Compiler: Vom Code zum Maschinen-Code. C Programmierung - Vorlesung 2 Hochschule Regensburg 19.03.2012 Universitätsstraße 31, 93053 Regensburg

Compiler: Vom Code zum Maschinen-Code. C Programmierung - Vorlesung 2 Hochschule Regensburg 19.03.2012 Universitätsstraße 31, 93053 Regensburg Compiler: Vom Code zum Maschinen-Code C Programmierung - Vorlesung 2 Hochschule Regensburg 19.03.2012 Universitätsstraße 31, 93053 Regensburg Prof. Dr. Jan Dünnweber Zusammenhänge: C und Assembler Hochsprachen

Mehr

Tag 2 Eingabe und Interrupts

Tag 2 Eingabe und Interrupts Tag 2 Eingabe und Interrupts 08/30/10 Fachbereich Physik Institut für Kernphysik Bastian Löher, Martin Konrad 1 Taster Direkt an Portpin angeschlossen (etwa PINB0, PIND3) Pull-Up-Widerstände einschalten!

Mehr

, WS2013 Übungsgruppen: Di., Fr.,

, WS2013 Übungsgruppen: Di., Fr., VU Technische Grundlagen der Informatik Übung : Stack, Pipelining., WS20 Übungsgruppen: Di., 0.01. Fr.,.01.201 Aufgabe 1: Stack - Funktionsweise Erläutern Sie die Funktionsweise eines Stacks bzw. Kellerspeichers

Mehr

C4 Die SPI Schnittstelle

C4 Die SPI Schnittstelle C4 Die SPI Schnittstelle Einführung Motorola entwickelte die synchrone SPI-Master-Slave Schnittstelle, (Serial Periphal Interface) für die Kommunikation zwischen Mikrocontrollern. Ein ähnliches Bus System

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 6.11.07, Weitere Anweisungen Übersicht 1 Verbundanweisung 2 Bedingte Anweisung 3 Auswahlanweisung 4 for Schleife 5 while Schleife 6 do Schleife 7 break Anweisung 8 continue Anweisung 9 Leere

Mehr

L3. Datenmanipulation

L3. Datenmanipulation L Datenmanipulation Aufbau eines Computers Prozessor, Arbeitsspeicher und system Maschinensprachen und Maschinenbefehle Beispiel einer vereinfachten Maschinensprache Ausführung des Programms und Befehlszyklus

Mehr

Microcontroller Praktikum SS2010 Dipl. Ing. R. Reisch

Microcontroller Praktikum SS2010 Dipl. Ing. R. Reisch Microcontroller Praktikum SS2010 Dipl. Ing. R. Reisch Die wichtigsten Unterlagen/Tools Für das Praktikum Unterlagen/Kenntnisse/Tools wichtig: Datenblatt des AT80USB1287 µc Schaltplan des im Praktikum verwendeten

Mehr

Lösungsvorschlag 9. Übung Technische Grundlagen der Informatik II Sommersemester 2009

Lösungsvorschlag 9. Übung Technische Grundlagen der Informatik II Sommersemester 2009 Fachgebiet Rechnerarchitektur Fachbereich Informatik Lösungsvorschlag 9. Übung Technische Grundlagen der Informatik II Sommersemester 2009 Aufgabe 9.1: Dinatos-Algorithmus-Analyse Die folgenden Verilog-Zeilen

Mehr

1 Eigenes zu Interrupts und...

1 Eigenes zu Interrupts und... 1 Eigenes zu Interrupts und... Abfragebetrieb = polling Unterbrechungsbetrieb 1. Interrupt = Unterbrechung 2. IRQ = Interrupt-Request = Interrupt-Anforderung = Unterbrechungsanforderung 3. ISR = Interrupt-Service-Routine

Mehr

DHBW Stuttgart Mikrocomputertechnik Labor KEIL Entwicklungsumgebung. Projektstruktur

DHBW Stuttgart Mikrocomputertechnik Labor KEIL Entwicklungsumgebung. Projektstruktur Projektstruktur 25.10.12 K.Kraft D\MCT_Labor_2013\Dokumente\Projektdetails.odt 1 Typischer Aufbau eines 8051 Programms Start Adresse = 0003H External Interrupt 0 ISR Interrupt Service Routinen Start Adresse

Mehr

Assembler DOS (Beta 1) Copyright 2000 Thomas Peschko. Assembler II - DOS. ASSEMBLER Arbeiten mit Dateien und Daten.

Assembler DOS (Beta 1) Copyright 2000 Thomas Peschko. Assembler II - DOS. ASSEMBLER Arbeiten mit Dateien und Daten. Assembler II - DOS ASSEMBLER Arbeiten mit Dateien und Daten peschko@aol.com 1 Wer nun den Eindruck hat, dass unsere Programme hauptsächlich nur Unterprogramme vor ihren Karren spannen und sich darauf beschränken

Mehr

Prozessoren für mobile und. eingebettete Systeme II: Die AVR-Architektur. EMES: Eigenschaften mobiler und eingebetteter Systeme

Prozessoren für mobile und. eingebettete Systeme II: Die AVR-Architektur. EMES: Eigenschaften mobiler und eingebetteter Systeme EMES: Eigenschaften mobiler und eingebetteter Systeme Prozessoren für mobile und 00101111010010011101001010101 eingebettete Systeme II: Die AVR-Architektur Dipl. Inf. Jan Richling Wintersemester 2004/2005

Mehr

Microcomputertechnik

Microcomputertechnik Microcomputertechnik mit Mikrocontrollern der Familie 8051 Bearbeitet von Bernd-Dieter Schaaf 2. Auflage 2002. Buch. 230 S. Hardcover ISBN 978 3 446 22089 8 Format (B x L): 16 x 22,7 cm Gewicht: 407 g

Mehr

Übungen zu Systemnahe Programmierung in C (SPiC)

Übungen zu Systemnahe Programmierung in C (SPiC) Übungen zu Systemnahe Programmierung in C (SPiC) Sebastian Maier, Heiko Janker (Lehrstuhl Informatik 4) Übung 2 Wintersemester 2015/2016 Inhalt Compileroptimierung Ein- & Ausgabe über Pins Interrupts Synchronisation

Mehr

Mikrocontroller-Programmierung

Mikrocontroller-Programmierung Mikrocontroller-Programmierung Anhand des HC12 Fabian Wiesel Überblick Überblick Mikrocontroller Überblick HC12 CPU Peripherie des DG128 Assemblerprogrammierung Mikrocontroller Leistungsfähigkeit: zwischen

Mehr

Assembler - Adressierungsarten

Assembler - Adressierungsarten Assembler - Adressierungsarten Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler - Adressierungsarten 1/31 2008-04-01

Mehr

Gegenüberstellung von Assembler- und C-Programmierung

Gegenüberstellung von Assembler- und C-Programmierung Gegenüberstellung von Assembler- und C-Programmierung Assembler-Version C-Version org 8000h #pragma code=0x8000 #pragma xdata=0x2000 INPUT equ 0e081h OUTPUT equ 0e082h neu: mov dptr,#input movx a,@dptr

Mehr

Rechnerarchitektur und Betriebssysteme (CS201): Peripheriebausteine, IO, Interrupts und Timer

Rechnerarchitektur und Betriebssysteme (CS201): Peripheriebausteine, IO, Interrupts und Timer Rechnerarchitektur und Betriebssysteme (CS201): Peripheriebausteine, IO, Interrupts und Timer 8. Oktober 2013 Prof. Dr. Christian Tschudin Departement Mathematik und Informatik, Universität Basel Wiederholung

Mehr

Inhalt. Aufgabe 4: LED-Modul Hinweise Testen des Moduls Sommersemester 2015

Inhalt. Aufgabe 4: LED-Modul Hinweise Testen des Moduls Sommersemester 2015 Übungen zu Systemnahe Programmierung in C (SPiC) Peter Wägemann, Sebastian Maier, Heiko Janker () Übung 4 Ablauf vom Quellcode zum laufenden Programm Active-high & Active-low Hinweise Sommersemester 2015

Mehr

Ein RC5 Code Übersetzer

Ein RC5 Code Übersetzer Ein RC5 Code Übersetzer Seite 1 / 11 Seit dem Ende des normalen terrestrischen TV s ist die Benutzerfreundlichkeit meines DVD Recorders stark reduziert. Der interne Tuner ist nicht mehr nutzbar. Nun, der

Mehr

2. Programmierung in C

2. Programmierung in C 2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)

Mehr

Technische Informatik 1 - Übung 3 3. & 4. November Philipp Miedl

Technische Informatik 1 - Übung 3 3. & 4. November Philipp Miedl Technische Informatik 1 - Übung 3 3. & 4. November 2016 Philipp Miedl Philipp Miedl 3. 11. 2016 1 Ziele der Übungen Aufgabe 1 Philipp Miedl 3. 11. 2016 2 Ziele der Übungen Aufgabe 1 Aufbau von Objekt-Dateien

Mehr