Assembler-Unterprogramme
|
|
- Kora Abel
- vor 5 Jahren
- Abrufe
Transkript
1 Assembler-Unterprogramme Rolle des Stack Prinzipieller Ablauf Prinzipieller Aufbau Unterprogramme void main(void) int sub(int i) { { int i,k; return i*2; i = sub(13); } k = sub(14); } Wie macht man das in Assembler? Problem: Merken, wo man hergekommen ist, um am Ende des Unterprogramms zurückzufinden. 1
2 Stapelspeicher (Stack) Organisationsprinzip eines Speicherbereiches - Verwendung z.b. in Prozessoren - Speicherung lokaler Variablen Funktionsaufruf: - Speicherung der Rücksprungadresse (Adresse, an der das Programm nach dem Funktionsaufruf weiter ausgeführt werden muss) wächst zumeist von hohen zu niedrigen Adressen Stackpointer (SP) - enthält Adresse des ersten freien Speicherplatzes im Stack - wird in speziellem e e Register des Prozessors s gehalten (Stackpointer te SP) arbeitet nach dem Prinzip first-in-last-out zwei wesentliche Aktionen - push (Einkellern, etwas auf dem Stapel ablegen) - pop (Auskellern, etwas vom Stapel nehmen) Register R0..R15 16 Bit Program counter 16 Bit Stack Pointer R16..R31 I T H S V N Z C X = R27:R26 R26 Y = R29:R28 Z = R31:R30 Flags Index Register 2
3 Funktionsprinzip Stack (push) 0x10F8 0x00 0x10F9 0x07 0x10FA 0x00 0x10FB 0x07 0x10FC 0x1E 0x10FD 0x1A 0x10FE 0x00 0x10FF 0xFE SP push push 3 5 0x10F8 0x00 0x10F9 0x07 0x10FA 0x00 0x10FB 0x07 0x10FC 0x1E 0x10FD 0x1A 0x10FE 0x00 SP 0x10FF 0x03 0x10F8 0x00 0x10F9 0x07 0x10FA 0x00 0x10FB 0x07 0x10FC 0x1E 0x10FD 0x1A SP 0x10FE 0x05 0x10FF 0x03 Stack-Adresse Stack-Inhalt Funktionsprinzip Stack (pop) 0x10F8 0x00 0x10F9 0x07 0x10FA 0x00 0x10FB 0x07 0x10FC 0x1E 0x10FD 0x1A SP 0x10FE 0x05 0x10FF 0x03 pop pop 5 3 0x10F8 0x00 0x10F9 0x07 0x10FA 0x00 0x10FB 0x07 0x10FC 0x1E 0x10FD 0x1A 0x10FE 0x05 SP 0x10FF 0x03 0x10F8 0x00 0x10F9 0x07 0x10FA 0x00 0x10FB 0x07 0x10FC 0x1E 0x10FD 0x1A 0x10FE 0x05 0x10FF 0x03 SP 3
4 Stack im RAM des ATmega128 $0000 $0020 $0060 RAMEND= 0x10ff Register I/O RAM Stack 1 Byte RAM: 4k Bytes Datenspeicher Der Stack startet ganz oben im Adressraum und wächst hin zu kleineren Adressen in den RAM hinein. i Stack-Initialisierung.include ATMega128.inc reset: ldi r16, LOW(RAMEND) out SPL, r16 ldi r16, HIGH(RAMEND) out SPH, r16 call test end: rjmp end test: ; Unterprogramm ret Stackpointer SP wird auf die letzte Adresse des RAM gesetzt letzte Adresse des RAM ist in ATMega128.inc als RAMEND definiert 4
5 Ablauf Unterprogramm 1. Bearbeitung eines Programms 2. call Unterprogrammname - PC+1 -> Stack - PC <- Adresse Unterprogramm 3. Abarbeitung des Unterprogramms - Verhindern sog. Nebeneffekte bei Eintritt: Speichern des Inhalts der lokal verwendeten Register auf dem Stack vor Beendigung: Wiederherstellen des Inhalts der lokal verwendeten Register vom Stack 4. ret - stack -> PC 5. Weiterbearbeitung des Programms ab Befehl, der auf call folgt call und ret am Beispiel call wait stack ldi r16,0x b... wait: 00002b 00002e nop ret PC 00002b PC Schritt 2 Schritt 4 5
6 Parameter-Übergabe einfachster Weg über Register - in Dokumentation beschreiben, welche Register für Parameter- Übergabe verwendet werden, z.b. Parameter in Register A, Ergebnis in Register B Parameterwert -> RegisterA Start UP Register A verarbeiten Unterprogramm... Register B weiterverarbeiten Ergebnis in Register B speichern Ende UP in C #define M 0xffff // Parameter (16 Bit) unsigned int nwait=m; Warten (sehr einfach) in Assembler.equ M=0xffff ; Parameter (16 Bit) ldi r27, HIGH(M) ldi r26, LOW(M) call wait... wait: wait_loop: ;max. ;Schleifenzahl wait(nwait);... void wait(unsigned short n) { do{ sbiw r26, 1 n--; brne wait_loop } while(n!= 0); ret } Tue nichts bis der Wert der Zählvariable 0 ist! Wie lange das dauert, ist von der Anzahl der Schleifendurchläufe und der Anzahl der Befehle des Unterprogramms abhängig 6
7 Register-Satz des ATmega128 Universal-Register (8Bit) R0..R15 16 Bit Program counter (PC) 16 Bit Stack Pointer (SP) R16..R31 I T H S V N Z C X = R27:R26 Y = R29:R28 Z = R31:R30 Status- oder Flag- Register (8Bit, SREG) Doppel-Register für indirekte Adressierung (16Bit) Die Flags im Statusregister C Z N V S H T I Global Interrupt Enable: erlaubt, dass der C Interrupts erhält Bit Copy Storage: Flag zum Austausch von Bits zwischen Registern Half Carry Flag: zeigt übertrag zwischen Bit3 und Bit4 an Sign Bit, S = N V: zeigt negatives Vorzeichen an Two s Complement Overflow Flag: MSB beider Operanden war vor der Operation gleich und MSB Ergebnis ist anders Negative Flag: zeigt an, dass Ergebnis einer Operation negativ sein könnte (MSB ist 1) Zero Flag: zeigt an, dass Ergebnis einer Operation Null ist Carry Flag: zeigt an, dass bei einer Operation ein Überlauf oder ein Borrow in der höchsten Stelle (MSB) aufgetreten ist 7
8 Zweck des Statusregisters wird vom C automatisch verändert und zeigt den Zustand des Ergebnisses der letzten Operation an, die die Flags beeinflusst hat, z.b.: - Operation ergab 0 -> Z-Flag wird gesetzt - Operation ergab einen Überlauf im höchstwertigen Bit -> C- Flag wird gesetzt einzelne Bits im Statusregister können zu bestimmten Zwecken auch durch den Programmierer gesetzt oder zurückgesetzt t werden - Interrupts sollen erlaubt werden -> Programmierer setzt das Interrupt-Flag (Befehl sei set enable interrupt) Befehls-Dokumentation und Flags Bedeutung Beispiel AND Flag wird durch Befehl beeinflusst S, N, Z 0 Flag wird durch Befehl zurückgesetzt V 1 Flag wird durch Befehl gesetzt - Flag wird durch Befehl nicht beeinflusst I,T,H,C 8
9 Bedingte Sprünge Relative Sprünge abhängig vom Zustand der Flags Syntax: sprungbefehl k ; k... wohin Sprungweite: -64 <= k <= +63 Befehle - wenn wahr: PC PC+k+1 - wenn falsch: PC PC +1 Beispiel: ldi r17, 8 nochmal: dec r17 brne weiter ;springe, wenn r17 nicht 0 rjmp nochmal ;sonst dekrementiere r17 nochmal weiter: nop Bedingte Sprünge Flag 1 oder 0? Flag 1 (set) 0 (cleared) Carry brcs brcc branch if carry set/cleared Negative brmi brpl branch if minus/plus Overflow brvs brvc branch if overflow set/cleared Zero breq brne branch if equal/not equal zero 9
10 Unterprogramm prinzipieller Aufbau Reset: Stack initialisieren (am besten am RAM-Ende)... Unterprogrammname: ; im UP verwendete Register retten ; (außer Register für Rückgabeparameter) push Register1 push Register2... ; Verarbeitung (Register1, 2) ; Registerinhalte wieder herstellen pop Register2 pop Register1 ret Tasteneingabe in Assembler 10
11 Grundsätzlicher Ablauf Tasteneingabe Grundsätzlicher Ablauf Tasteneingabe in C #include <avr\io.h> in Assembler.include m128def.inc // PortD alle Pins //auf Eingabe DDRD=0x00; ; PortD alle Pins ;auf Eingabe ldi r16, 0x00 out DDRD, r16 // Pullups ein PORTD=0xff; ;Pullups ein ldi r16, 0xff out PORTD, r16 11
12 Grundsätzlicher Ablauf Tasteneingabe in C while(pind==0xff); in Assembler notpressed: in r16, PIND cpi r16, 0xff breq notpressed Grundsätzlicher Ablauf Tasteneingabe in C while(pind!=0xff); in Assembler pressed: in r16, PIND cpi r16, 0xff brne pressed 12
13 Grundsätzlicher Ablauf Tasteneingabe in C _delay_ms(100); in Assembler (keine Bibliotheksfunktion, Aufruf kann je nach Gestaltung des Unterprogramms abweichen) ldi r27, 0x03 ldi r26, 0xff call wait Zugriff auf Konstanten im ROM Speicher-Organisation im ROM Zeiger in Assembler Beispiel: Ausgabe von LED-Mustern 13
14 Ausgabe von LED-Mustern Unterprogramm void putpattern(char* ppattern) soll LED-Muster auf LEDs anzeigen LED-Muster werden als konstante Arrays im ROM abgelegt, deren Ende mit dem Wert 0 gekennzeichnet ist (Null-terminiert) - Muster ist zur Laufzeit nicht veränderbar (const) - zum Lesen aus dem ROM wird der Befehl lpm verwendet - die Adresse des jeweils auszugebenden Bytes wird in Doppel- Registern (16 Bit) gespeichert Ablage eines Musters im ROM.cseg PAT1:.db 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00 Speicherbelegung (ROM) Adresse Inhalt (16 Bit) 0x00003e 0x02 0x01 0x00003f 0x04 0x03 0x x08 0x x00 0x80 höherwertiges niederwertiges Byte Byte kleinste adressierbare Einheit im ROM ist das Datenwort (16 Bit) Muster bestehen aus Bytes (8 Bit) 14
15 Register-Satz des ATmega128 Universal-Register (8Bit) R0..R15 16 Bit Program counter (PC) 16 Bit Stack Pointer (SP) R16..R31 I T H S V N Z C X = R27:R26 Y = R29:R28 Z = R31:R30 Status- oder Flag- Register (8Bit, SREG) Doppel-Register für Zeiger (16Bit) indirekte Adressierung Register mit High und Low-Teil ansprechbar, z.b.: ldi ZH, 0x00 ; lädt r31 ldi ZL, 0x03 ; lädt r30 Program Memory Access Load Program Memory Beispiel: lpm r16,z 15
16 Program Memory Access Post-increment Beispiel: lpm r16,z+ LPM am Beispiel Speicherbelegung (ROM) Adresse Inhalt (16 Bit) 0x x10 0x08 0x x40 0x20 0x x00 0x80 High-Byte des Inhalts der Adresse Inhalt Z-Register Adresse in Z (oder X oder Y) LSB Low-Byte de es Inhalts der Adresse e Z++ Z++ 16
17 if else... Vergleich r16==0 [nein] [ja] unsigned char r16=1; if( r16 == 0) aktion1(); else aktion2(); aktion1 not_null aktion2 endif... not_null: endif: ldi r16,1 cpi r16,0 brne not_null call aktion1 jmp endif call aktion2 nop 17
Sprungbefehle und Kontroll-Strukturen
Sprungbefehle und Kontroll-Strukturen Statusregister und Flags Sprungbefehle Kontrollstrukturen Das Status-Register 1 Register-Satz des ATmega128 Universal-Register (8Bit) R0..R15 16 Bit Program counter
MehrMikroprozessoren 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)
MehrAufbau eines Assembler-Programms
Aufbau eines Assembler-Programms. Assembler-Anweisungen (Direktiven) Einbindung von include-files Definition von Konstanten, Reservierung von Speicherplatz im RAM, 2. Was tun, wenn C Reset-Signal erhält
MehrEinführung in AVR Assembler
Einführung in AVR Assembler Dennis Fassbender Institut für Technik Autonomer Systeme (LRT8) Universität der Bundeswehr München 09042014 Was ist Assembler? Low-level-Programmiersprache Erlaubt direkten
Mehr1.7 Atmega-Programmierung in ASM/Verschachtelte Schleifen
.7 Atmega-Programmierung in ASM/Verschachtelte Schleifen.7. Aufgabe Die beiden LEDs sollen abwechselnd blinken. Mit der bisherigen Lösung flackern sie nur (Beispiel: blink0.asm):. include /usr/share/avra/m8def.
MehrB1 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
Mehr05. 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
MehrU23 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
MehrCore 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
MehrMikroprozessoren 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)
MehrAtmel 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
MehrUse of the LPM (Load Program Memory)
Use of the LPM (Load Program Memory) Use of the LPM (Load Program Memory) Instruction with the AVR Assembler Load Constants from Program Memory Use of Lookup Tables The LPM instruction is included in the
Mehr8. Beschreibung des Prozessors MSP 430
8. Beschreibung des Prozessors MSP 430 8.1 Die Eigenschaften des MSP 430 8.2 Die Register des MSP 430 8.3 Der Aufbau des Speichers 8.4 Interrupts 8.5 Der Watchdog Programmierkurs II Wolfgang Effelsberg
MehrProcessorsTechnik Labor LCD-Uhr
ProcessorsTechnik Labor LCD-Uhr Xu,Zhen 20465719 Aufgabe Beschreibung:LCD-Uhr HardWare :LCD161A. (4B.8B Dataverarbeiten ). Clock Chip:KS0066U Programmieren Sprache :Assemble LCD1602 PIN definieren : Pin
MehrZusammenfassung 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
MehrRechnerarchitektur 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.
MehrAVR-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,
MehrDaniel 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... Adressierung und Befehlsfolgen (1) Speicherbelegung. Hauptspeicheradressen. Inhalt von Speicherbelegungen: Operanden - Zahlen - Zeichen Befehle
Adressierung und Befehlsfolgen (1) Speicherbelegung Hauptspeicheradressen Inhalt von Speicherbelegungen: Operanden - Zahlen - Zeichen Befehle Address 0 1 i k 2-1 n bits...... word 0 word 1 b n-1 b 1 b
MehrMikrocomputertechnik. Unterprogramm
Unterprogramm Ein Teilproblem wird entweder zur mehrmaligen Verwendung oder zur Programmstrukturierung als Unterprogramm codiert. Ein Unterprogramm wird von einem übergeordneten Programm (Hauptprogramm)
MehrU23 Assembler Workshop
Ike e.v. http://koeln.ccc.de 2016-11-05 Überblick 1 CPU, Assembler Überblick x86 x86 Assembler 2 RAM, Stack, Calling Conventions Stack Calling Conventions Stackframes 3 Branches Jumps 4 Speicher, C-Interface
MehrBefehlssatz 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
Mehr2.1 Atmega-Peripherie/Interrupts
2.1 Atmega-Peripherie/Interrupts 2.1.1 Situation Während LED2 fortlaufend blinkt, soll LED2 jederzeit sofort durch Tastendruck von T1 eingeschaltet werden können. Dazu muss man im Programm regelmäÿig nachsehen,
MehrStack, Stackpointer, Unterprogramm HP: 0 * 1 * 2 * 3 CAL UP1 4 * 5 * 6 CAL UP2 7 *... UP1: 30 * 33 RET UP2: 40 * 41 CAL UP1 42 * 43 RET
Stack, Stackpointer, Unterprogramm HP: 0 * 1 * 2 * 3 CAL UP1 4 * 5 * 6 CAL UP2 7 *... UP1: 30 * 33 RET UP2: 40 * 41 CAL UP1 42 * 43 RET Stack, Stackpointer, UP Stack (Stapel, FIFO) wird benötigt UP-Ruf:
MehrMikroprozessoren 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)
MehrAssembler - 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
Mehrmyavr Programmierung in C
myavr Programmierung in C Stefan Goebel Februar 2017 Stefan Goebel myavr Programmierung in C Februar 2017 1 / 12 Grundgerüst... braucht man immer! #include // Register- und Konstantendefinitionen
MehrDas Attiny-Projekt Der Bootloader 1
Das Attiny-Projekt Der Bootloader 1 Der Bootloader Bei unserer Attiny-Platine werden die Programme über die serielle Schnittstelle übertragen. Grundsätzlich wäre es möglich, hierzu auf die im Attiny-Mikrocontroller
MehrKap.2 Befehlsschnittstelle. Prozessoren, externe Sicht
Kap.2 Befehlsschnittstelle Prozessoren, externe Sicht 2 Befehlsschnittstelle 2.1 elementare Datentypen, Operationen 2.2 logische Speicherorganisation 2.3 Maschinenbefehlssatz 2.4 Klassifikation von Befehlssätzen
MehrU23 Assembler Workshop
Ike e.v. http://koeln.ccc.de 2016-11-05 Überblick 1 CPU, Assembler Überblick x86 x86 Assembler 2 RAM, Stack, Calling Conventions Stack Calling Conventions Stackframes 3 Branches Jumps 4 Speicher, C-Interface
Mehr"Organisation und Technologie von Rechensystemen 4"
Klausur OTRS-4, 29.09.2004 Seite 1 (12) INSTITUT FÜR INFORMATIK Lehrstuhl für Rechnerarchitektur (Informatik 3) Universität Erlangen-Nürnberg Martensstr. 3, 91058 Erlangen 29.09.2004 Klausur zu "Organisation
MehrGrundlegende Programmiertechniken
Das Attiny-Projekt Grundlegende Programmiertechniken 1 Grundlegende Programmiertechniken Es gibt zwei Aspekte der Assemblerprogrammiertechnik, die als grundlegend angesehen werden können: Zum Einem der
MehrSpeicheraufbau 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
MehrAtmega Interrupts. Rachid Abdallah Gruppe 3 Betreuer : Benjamin Bös
Atmega Interrupts Rachid Abdallah Gruppe 3 Betreuer : Benjamin Bös Inhaltsverzeichnis Vorbereitung Was Sind Interrupts Interruptvektoren Software Interrupts Hardware Interrupts Quellen 2 Vorbereitung Rechner
Mehr1.9 Atmega-Programmierung in ASM/LED-Ziffernanzeige
1.9 Atmega-Programmierung in ASM/LED-Ziffernanzeige 1.9.1 Idee Bei der Programmentwicklung braucht man es ab und zu, dass man sich an bestimmten Stellen des Programms Variablenwerte anzeigen lässt. Bei
MehrEinfü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
Mehr1 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...
MehrComputersysteme. Stacks Anwendung in der Assembler-Programmierung
Computersysteme Stacks Anwendung in der Assembler-Programmierung 1 Unterprogramme Betrachten wir zunächst folgendes Programm m_mod_n : /Berechne m modulo n für positive Integerwerte m und n. /Beim Programmstart
MehrNTB Druckdatum: InI II. Ausführung auf kleine Rechenleistung
MICROCONTROLLER Einführung Eigenschaften Steuer- und Regelungsaufgaben Simulation Emulation Vielfältige Peripheriemodule Ausführung auf Ausführung auf kleine Rechenleistung dem Host dem Zielsystem Kein
MehrRechnernetze und Organisation
Framework für Assignment A2 1 Übersicht Framework für Assignment A2 WH: Aufgabenstellung Klassen und Methoden Getting started Erste Instruktion aus Testdaten dekodieren 2 Aufgabenstellung Instruction-Set
MehrMOP: 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
MehrTechnische Informatik I Übung 3: Assembler
Technische Informatik I Übung 3: Assembler Roman Trüb Computer Engineering Group, ETH Zürich 1 Lernziele Übung 3 Aufgabe 1 Aufbau und Aufruf von Funktionen in Assembler Assembler Codeanalyse Aufgabe 2
MehrTechnische 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
MehrParallel-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
MehrRechnerarchitektur 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.
Mehr0 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
MehrARM-Cortex-M4 / Thumb-2-Befehlssatz Adressierungsarten und arithmetische Operationen
ARM-Cortex-M4 / Thumb-2-Befehlssatz Adressierungsarten und arithmetische Operationen Aufgabenstellung: - das beigefügte Assembler-Programm schrittweise ausführen - sich mit der Handhabung der Entwicklungswerkzeuge
MehrMultitasking / 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
Mehr9. Assembler: Der Prozessor Motorola 68000
9.1 Architektur des Prozessors M 68000 9.2 Adressierungsarten des M 68000 9-1 9.1 Beschreibung des Prozessors M 68000 Charakteristische Daten des 56 Maschinenbefehle 14 Adressierungsarten Zweiadressmaschine
Mehr9. Assembler: Der Prozessor Motorola 68000
9.1 Architektur des Prozessors M 68000 9.2 Adressierungsarten des M 68000 9-1 9.1 Beschreibung des Prozessors M 68000 Charakteristische Daten des 56 Maschinenbefehle 14 Adressierungsarten Zweiadressmaschine
MehrVorlesung 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),
MehrAufbau des Speichers. Interrupt Vektoren. 0xFFE0-0xFFFF. 16 Adressen f. Unterprog. ca. 60 kbyte Flash-ROM für Firmware, Programme, Daten, Tabellen
16 Adressen f. Unterprog. Wird i.d.r. einmal vor Inbetriebnahme beschrieben, kann jedoch in 512 Byte Bänken während Betr. verändert werden. Zwei kl. Bänke f. Programm. via Scatt.Fl. Nur 2kB schnelles RAM
MehrUnterprogramme mittels Stack (Forts.)
Unterprogramme mittels Stack (Forts.) gleiches Beispiel mit direkter Übergabe aller Parameter (8-Bit Wert a, 16-Bit Wert b, 16-Bit Ergebnis) durch call by value auf Stack: LDB a * Lade 8-Bit Wert a PSHS
MehrMikrocomputertechnik. 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
MehrGrundlagen 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
MehrSchritt Aktion Erläuterung 1 UBRR auf 25 setzen Baudrate auf 9600 TXEN-Bit von UCSRB auf 1 setzen
Das Attiny-Projekt Unterprogramme in Assembler 1 Unterprogramme Unterprogramme haben wir schon im Zusammenhang mit BASCOM kennen gelernt. Auch Assemblerprogramme können durch Unterprogramme strukturiert
MehrName: ES2 Klausur Thema: ARM Name: Punkte: Note:
Name: Punkte: Note: Hinweise für das Lösen der Aufgaben: Zeit: 75 min. Name nicht vergessen! Geben Sie alle Blätter ab. Die Reihenfolge der Aufgaben ist unabhängig vom Schwierigkeitsgrad. Erlaubte Hilfsmittel
MehrUnterstützung von Jump Tables
Unterstützung von Jump Tables Assembler Code: Label_ 1: Label_2: Label_n: Maschinen Code: 0x05342120: 1011010110 0x05443004: 0001011101 0x06756900: 0000111000 Jump Table Nr Label Adresse 0 Label_1 0x05342120
MehrÜbungsblatt 10 (Block C 2) (16 Punkte)
georg.von-der-brueggen [ ] tu-dortmund.de ulrich.gabor [ ] tu-dortmund.de pascal.libuschewski [ ] tu-dortmund.de Übung zur Vorlesung Rechnerstrukturen Wintersemester 2016 Übungsblatt 10 (Block C 2) (16
MehrEinführung Sprachfeatures Hinweise, Tipps und Styleguide Informationen. Einführung in C. Patrick Schulz
Patrick Schulz patrick.schulz@paec-media.de 29.04.2013 1 Einführung Einführung 2 3 4 Quellen 1 Einführung Einführung 2 3 4 Quellen Hello World in Java Einführung 1 public class hello_ world 2 { 3 public
Mehr1 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
MehrProgrammieren in C. Speicher anfordern, Unions und Bitfelder. Prof. Dr. Nikolaus Wulff
Programmieren in C Speicher anfordern, Unions und Bitfelder Prof. Dr. Nikolaus Wulff Vergleich: Felder und Strukturen Felder müssen Elemente vom selben Typ enthalten. Strukturen können Elemente unterschiedlichen
MehrVon-Neumann-Architektur
Von-Neumann-Architektur Bisher wichtig: Konstruktionsprinzip des Rechenwerkes und Leitwerkes. Neu: Größerer Arbeitsspeicher Ein- und Ausgabewerk (Peripherie) Rechenwerk (ALU) Steuerwerk (CU) Speicher...ppppp...dddddd..
MehrVorlesung Rechnerarchitektur
Vorlesung Rechnerarchitektur Sommersemester 2017 Carsten Hahn 8. Juni 2017 Agenda Grundlagen: Wiederholung Kontroll-Strukturen Stack-Speicher Unterprogramme I Unterprogramme II Call-by-Value (CBV) vs.
MehrInterrupts. 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
Mehr32 Bit Konstanten und Adressierung. Grundlagen der Rechnerarchitektur Assembler 78
32 Bit Konstanten und Adressierung Grundlagen der Rechnerarchitektur Assembler 78 Immediate kann nur 16 Bit lang sein Erinnerung: Laden einer Konstante in ein Register addi $t0, $zero, 200 Als Maschinen
MehrVorlesung: Rechnerstrukturen, Teil 2 (Modul IP7)
Vorlesung: Rechnerstrukturen, Teil 2 (Modul IP7) Vorlesung: Rechnerstrukturen, Teil 2 (Modul IP7) J. Zhang zhang@informatik.uni-hamburg.de Universität Hamburg AB Technische Aspekte Multimodaler Systeme
MehrBit Operationen. InE1 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert
Bit Operationen InE M. Thaler, tham@zhaw.ch Office TG28 http://www.zhaw.ch/~tham November 8 Um was geht es? Microcontroller z.b. Ansteuerung/Konfiguartion von I/O Registern oft notwendig: einzelne Bits
MehrHinweise C-Programmierung
Hinweise C-Programmierung Dr.-Ing. Volkmar Sieh Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2016/2017 V. Sieh Hinweise C-Programmierung
MehrPointer und Arrays. INE1, Montag M. Thaler, Office TG208. ZHAW, M. Thaler, K. Rege, G.
Pointer und Arrays INE1, Montag M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was geht es? Variable Speicherplatz Datenwert über Name ansprechbar hat Typ hat Adresse (Speicheradresse)
MehrKodieren von Anweisungen im Binärformat für Maschinen quasi natürlich, zumindest effizient. Für Menschen hingegen ist Binärformat schwierig
2.1 Einleitung Kodieren von Anweisungen im Binärformat für Maschinen quasi natürlich, zumindest effizient Hinsichtlich Zuverlässigkeit (digital vorteilhafter als analog) Für Menschen hingegen ist Binärformat
MehrTeil 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
MehrTECHNISCHE 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
Mehr4 Formelsammlung C/C++
4 Formelsammlung C/C++ 4.1 Datentypen Datentyp stdint.h type Bits Sign Wertebereich (unsigned) char uint8_t 8 Unsigned 0.. 255 signed char int8_t 8 Signed -128.. 127 unsigned short uint16_t 16 Unsigned
MehrTechnische 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
MehrGrundlagen der Informatik 11. Zeiger
11. Zeiger Motivation Zeiger und Adressen Zeiger und Funktionen Zeiger und Arrays Dynamische Objekte Grundlagen der Informatik (Alex Rempel) 1 Motivation Dynamische Speicherverwaltung Oft müssen große
MehrPraktikum Automatisierungstechnik AP1
Praktikum Automatisierungstechnik AP 1 1 Versuch 1 Praktikum Automatisierungstechnik AP1 Einführung in die Prozessorarchitektur und Maschinenprogrammierung Einführung. Bekanntmachen mit einem neuen Mikrocontroller.
MehrTeil III: Wat macht ene Mikrokontroller?
Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13 Eine Einführung in Aufbau, Funktionsweise, Programmierung und Nutzen von Mikroprozessoren Teil III: Wat macht ene Mikrokontroller?
MehrTeilprüfung Software- und Internettechnologie Programmierkurs 2 Wintersemester 2004/2005
Universität Mannheim Fakultät für Mathematik und Informatik Lehrstuhl für Praktische Informatik IV Prof. Dr. Wolfgang Effelsberg Teilprüfung Software- und Internettechnologie Programmierkurs 2 Wintersemester
MehrLö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
MehrInstitut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke
Java 2 Markus Reschke 07.10.2014 Datentypen Was wird gespeichert? Wie wird es gespeichert? Was kann man mit Werten eines Datentyps machen (Operationen, Methoden)? Welche Werte gehören zum Datentyp? Wie
Mehrx86 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
MehrMikrocontroller-Programmierung
Mikrocontroller-Programmierung Anhand des HC12 Fabian Wiesel Überblick Überblick Mikrocontroller Überblick HC12 CPU Peripherie des DG128 Assemblerprogrammierung Mikrocontroller Leistungsfähigkeit: zwischen
MehrKapitel 2. Zahlensysteme
Kapitel 2 Zahlensysteme 13.08.12 K.Kraft D:\MCT_Vorlesung\Folien2013\Zahlensysteme_2\Zahlensysteme.odt 2-1 Zahlensysteme Definitionen Ziffern : Zeichen zur Darstellung von Zahlen Zahl : Eine Folge von
MehrDatenstrukturen, 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
MehrWelche Informatik-Kenntnisse bringen Sie mit?
Welche Informatik-Kenntnisse bringen Sie mit? So gehen Sie vor! Lösen Sie die Aufgaben der Reihe nach von 1 bis 20, ohne das Lösungsblatt zur Hilfe zu nehmen. Der Schwierigkeitsgrad der Aufgaben nimmt
MehrInstitut 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.
MehrMaschinensprache. 2.5 x86 Speicherzugriff. Universität Mannheim
Maschinensprache 2.5 x86 Speicherzugriff Hauptspeicher Speicheraufbau Linearer, zusammenhängender Adressraum Kleinste adressierbare Einheit: 1 Byte Unterteilung in physikalischen, linearen und virtuellen
MehrGrundlagen der Informatik III Wintersemester 2010/ Vorlesung Dr.-Ing. Wolfgang Heenes
Grundlagen der Informatik III Wintersemester 2010/2011 7. Vorlesung Dr.-Ing. Wolfgang Heenes int main() { printf("hello, world!"); return 0; } msg: main:.data.asciiz "Hello, world!".text.globl main la
MehrÜbung Praktische Informatik II
Übung Praktische Informatik II FSS 2009 Benjamin Guthier Lehrstuhl für Praktische Informatik IV Universität Mannheim guthier@pi4.informatik.uni-mannheim.de 20.03.09 4-1 Heutige große Übung Ankündigung
MehrEinleitung Die Pins alphabetisch Kapitel 1 Programmierung des ATmega8 und des ATmega
Einleitung... 11 Die Pins alphabetisch.... 12 Kapitel 1 Programmierung des ATmega8 und des ATmega328.... 15 1.1 Was Sie auf den nächsten Seiten erwartet... 19 1.2 Was ist eine Micro Controller Unit (MCU)?....
MehrIR NEC Empfänger mit 4x7 LED Anzeige (ATtiny2313)
// Include C Libriaries #include #define F_CPU 4000000UL #include #include #include #include // Definition der Segmente #define SEG_O
MehrMikroprozessoren 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)
MehrProgrammierung mit C Zeiger
Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch
MehrU5-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
MehrProgrammiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften
Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder
Mehr6. Intel IA-32 Prozessoren Aufbau und Adressierungsarten
6. Intel IA-32 Prozessoren Aufbau und Adressierungsarten 6.1 Gegenstand der Vorlesung Interne Organisation - Architektur - Register - Statusbits - Speicherstruktur Basis-Adressierungsarten - direct - absolute
MehrWelche Register werden zur Parameterübergabe verwendet? In welcher Reihenfolge werden die Parameter auf dem Stack bzw. in den Registern abgelegt?
6.5 MMIX Befehle 291 Aufrufkonventionen Eine Aufrufkonvention (engl. calling convention) legt fest, wie einer Funktion Parameter übergeben werden und wie der Rückgabewert zurückgegeben wird. Damit spezifiziert
Mehr