Maschinenorientierte Programmierung Prof. Dr. Sven-Hendrik Voß | Sommersemester 2015 Technische Informatik (Bachelor), Semester 2 Termin 3, 27.04.2015 Seite 2 Adressierung und Maschinenprogrammierung | Maschinenorientierte Programmierung | Inhaltsverzeichnis Aktuelles Themen und Termine Lernziele Adressraum Adressierungsarten Rechnerarchitektur und Programmierung Assemblerdirektiven Zusammenfassung Sommersemester 2015 Seite 3 Adressierung und Maschinenprogrammierung | Maschinenorientierte Programmierung | Sommersemester 2015 Aktuelles Alle Termine verschieben sich vorerst um eine Woche! Seite 4 Adressierung und Maschinenprogrammierung | Maschinenorientierte Programmierung | Sommersemester 2015 Themen und Termine - Seminaristischer Unterricht Seminaristischer Unterricht (SU): Zug 1 im Raum B-401, montags 10:00 11:30 Uhr, Zug 2 im Raum B-321, montags 12:15 - 13:45 Uhr Termin 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Datum 13.04. 20.04. 27.04. 04.05. 11.05. 18.05. 25.05. 01.06. 08.06. 15.06. 22.06. 29.06. 06.07. 13.07. 20.07. 27.07. Themen Organisatorisches, Einfuhrung Rechnerarchitekturen ¨ Befehlsausfuhrung und Organisationsprinzipien ¨ Adressierung und Maschinenprogrammierung Programmiermodell des 8051 Mikrocontrollers Assemblersyntax des 8051 Assemblersyntax und Betriebsmodi des 8051 ¨ aus (Pfingsten) fallt I/O Port-Programmierung, Umgang mit Instruktionen und Programme Interrupt-Programmierung Timer- und Counter-Programmierung Aufbau und Programmierung von seriellen Kommunikationsschnittstellen Benutzung der seriellen Schnittstelle, Timer, Interrupts Praxisbeispiele Hardwarenahe Programmierung in C Klausur Klausurruckgabe und Besprechung ¨ Seite 5 Adressierung und Maschinenprogrammierung | Maschinenorientierte Programmierung | Sommersemester 2015 Lernziele Nach diesem Termin sollten Sie... I das Prinzip des Adressraums verstanden haben I ¨ zwischen verschiedenen Adressierungsarten unterscheiden konnen I die Hierarchie von Programmiersprachen kennen I die Vorteile und Eigenarten von maschinennaher Programmierung verstanden haben Seite 6 Adressierung und Maschinenprogrammierung | Maschinenorientierte Programmierung | Sommersemester 2015 Adressraum Adressraum ist die Abstraktion des physikalischen Speichers I ¨ zusammenhangende Menge von Adressen plus deren Inhalte I ¨ maximale Große definiert durch die Breite des Adressbusses I umfasst Bereiche fur ¨ Daten, Programmcode (und Peripherie) Erinnerung: von Neumann-Architektur vs. Harvard-Architektur I Architekturkonzepte, die sich darin unterscheiden, wieviele ¨ ¨ Speicheradressraume bzw. Speicherzugriffswege grundsatzlich vorgesehen sind ¨ ¨ → Adressraume also jeweils von eingesetztem Konzept abhangig Seite 7 Adressierung und Maschinenprogrammierung | Maschinenorientierte Programmierung | Sommersemester 2015 Adressraum von Neumann-Architektur Adressen Prozessor Daten, Befehle Speicher Harvard-Architektur Adressen Programmspeicher Befehle Adressen Prozessor Daten Datenspeicher Seite 8 Adressierung und Maschinenprogrammierung | Adressraum von Neumann-Architektur Harvard-Architektur Maschinenorientierte Programmierung | Sommersemester 2015 Seite 9 Adressierung und Maschinenprogrammierung | Maschinenorientierte Programmierung | Sommersemester 2015 Adressraum Adressraum ist typischerweise in vier Bereiche aufgeteilt 1. fur Programm (Programmcode) ¨ das in Maschinencode ubersetzte ¨ 2. fur ¨ statische Daten, z.B. in einem Hauptprogramm deklarierte global verfugbare Arrays ¨ 3. einen Stackbereich zur Unterstutzung u.a. von Funktionsaufrufen aus ¨ einem Hauptprogramm ¨ 4. fur der Laufzeit entstehen, z.B. ¨ dynamische Daten, die wahrend Parameter, Variablen, Zwischenergebnisse, ... → nur die Bereiche fur ¨ das Programm und die statischen Daten sind zum ¨ Zeitpunkt der Programmierung der Hardware in ihrer Große bekannt! Seite 10 Adressierung und Maschinenprogrammierung | Maschinenorientierte Programmierung | Sommersemester 2015 Adressraum bei von Neumann Adressraum-Verwaltung bei von Neumann-Architektur I es gibt nur einen einzigen Speicheradressraum und einen einzigen Zugriffsweg I Daten- und Codespeicher werden mit derselben Befehlsgruppe abgearbeitet → vereinfacht: I es gibt aus der Sicht des Programmierers nur einen einzigen, von Adresse 0 an fortlaufend adressierbaren Speicher, der alle Programme, Daten, deskriptiven Angaben usw. aufnimmt, die fur ¨ die laufende Arbeit ¨ benotigt werden ¨ mit Speicherkapazitat ¨ bzgl. Programmcode Vorteile: . Flexibilitat und Daten . Programme lassen sich als Daten behandeln (d.h. mit ublichen Maschinenbefehlen transportieren, ¨ ¨ andern usw.) Seite 11 Adressierung und Maschinenprogrammierung | Maschinenorientierte Programmierung | Sommersemester 2015 Adressraum bei Harvard Adressraum-Verwaltung bei Harvard-Architektur I I I I ¨ es gibt zwei Speicheradressraume: einen fur ¨ Daten, einen fur ¨ Befehle Daten- und Codespeicher werden mit eigenen Befehlsgruppen verarbeitet ¨ Daten- und Codespeicher konnen denselben Adressraum verwenden Unterscheidung in echte Harvard-Maschinen und Maschinen mit ¨ der technischen Auslegung Harvard-Architektur gemaß Echte Harvard-Maschinen I I I es gibt eine gesonderte Speicheranordnung je Adressraum (d.h. getrennten Programmspeicher und Datenspeicher) ¨ unabhangige Zugriffswege zu beiden Speicheranordnungen Architekturbeispiel: Atmel AVR Maschinen mit Harvard-Architektur I I ¨ es gibt beide getrennte Adressraume, aber nur einen einzigen gemeinsamen Speicherzugriffsweg (Speicherbus) Architekturbeispiel: 8051 Seite 12 Adressierung und Maschinenprogrammierung | Maschinenorientierte Programmierung | Sommersemester 2015 Adressraum bei Harvard ¨ Vorteile: . hohere Leistung: gleichztg. Zugriff auf Daten und Befehle ¨ . Aufwandsoptimierung: unabhangige Optimierung beider Speicher hinsichtlich Zugriffsbreite, Technologie (RAM / ROM), etc. ¨ ¨ ¨ . hoheres Adressierungsvermogen: zwei Adressraume ¨ → Verdopplung des Adressierungsvermogens In der Praxis... I ¨ die meisten Prozessoren und großere Mikrocontroller sind von-Neumann-Maschinen (Verhalten) I im internen Aufbau Tendenz, die Vorteile beider Architekturen zu vereinigen I die meisten DSPs und kleine Mikrocontroller sind als Harvard-Maschinen ausgelegt Seite 13 Adressierung und Maschinenprogrammierung | Maschinenorientierte Programmierung | Sommersemester 2015 Adressraum bei Harvard Beispiel 8051 Mikrocontroller I ¨ hat nur einen einzigen Speicherbus aber getrennte Adressraume fur ¨ Programm und Daten I ¨ Adressraume teilen sich wiederum jeweils in internen und externen Speicherbereich I ¨ mehrere Adressraume haben dieselbe Adresse → eindeutige Zuordnung erforderlich! I ¨ mehr dazu spater unter Speichermodell des 8051 Mikrocontrollers“ ” Seite 14 Adressierung und Maschinenprogrammierung | Maschinenorientierte Programmierung | Sommersemester 2015 Adressierungsarten CPU kann Daten auf Daten auf verschiedene Arten zugreifen Adressierungsarten legen die Art des Datenzugriffs fest Beim 8051 Mikrocontroller (Akkumulatormaschine) gibt es folgende ¨ Adressierungsmoglichkeiten: I I I I I Unmittelbare (Immediate) Adressierung (Direkt-Wert) Register-Adressierung Direkte Adressierung Register-indirekte Adressierung Indizierte Adressierung Sie unterscheiden sich in I I I ¨ Anzahl benotigter Befehls-Bytes Befehlsausfuhrungszeit ¨ ¨ moglichen Zugriffszielen Hinweis: in vielen Assemblern ubliche Notation ¨ # bedeutet Konstante @ bedeutet indirekte Adressierung Seite 15 Adressierung und Maschinenprogrammierung | Maschinenorientierte Programmierung | Sommersemester 2015 Adressierungsarten Adress.-Art Unmittelbare Adressierung Beispiel MOV R1, #15 RegisterAdressierung MOV A, R0 Direkte Adress. MOV R0, 35h MOV R0, symb Adr Registerindirekte Adressierung MOV A, @R0 Indizierte Adressierung MOVC A,@A+DPTR A ... R1 R0 Prozessor Speicher Seite 16 Adressierung und Maschinenprogrammierung | Maschinenorientierte Programmierung | Sommersemester 2015 Adressierungsarten Zusammenfassung zu den Adressierungsarten Programmspeicher (Code) Unmittelbare Adressierung Operand RegisterAdressierung Registerbezeichner Direkte Adressierung ganze Adresse Register-indirekte Adressierung Registerbezeichner Register des Prozessors Datenspeicher Operand Operand Adresse Operand Seite 17 Adressierung und Maschinenprogrammierung | Maschinenorientierte Programmierung | Sommersemester 2015 Rechnerarchitektur und Programmierung Lehrgebiete der Rechnerarchitektur und maschinennahen Programmierung eng miteinander verbunden I zum Programmieren auf blanker Hardware mussen deren Wirkprinzipien ¨ klar sein I ¨ grundsatzlicher Aufbau des Universalrechners bereits behandelt I einzelne Funktionseinheiten bereits diskutiert Im Folgenden... I Einfuhrung in Grundlagen der Assemblerprogrammierung ¨ I Einarbeitung in eine bestimmte Hardware (8051 Mikrocontroller) I Kennenlernen der spezifischen Assemblersyntax Seite 18 Adressierung und Maschinenprogrammierung | Maschinenorientierte Programmierung | Sommersemester 2015 Rechnerarchitektur und Programmierung Hochsprachen Objektorientierte Sprache (C++, C#, Java, ...) Deklarative Sprache (SQL, Prolog, ... ) SELECT * FROM Tabelle Prozedurale/Imperative Sprache (Pascal, C, ...) IF a > 0 THEN ... Maschinennahe Sprache (Assembler) ADDL R0,R1 Maschinensprache 01000111100011... Sprachen der 5. Generation Objekte - Attribute, Methoden, Klassen, Klassenhierarchien, Vererbung Sprachen der 4. Generation inhaltsorientiert, nicht ablauforientiert, anwendernah, Berichtsgeneratoren, ... Sprachen der 3. Generation ablauforientiert, Kontrollstrukturen, Unterprogramme, komplexe Datentypen, ... Sprachen der 2. Generation prozessorspezifisch, Einzelbefehle Sprachen der 1. Generation prozessorspezifisch, Kombination aus Bits Seite 19 Adressierung und Maschinenprogrammierung | Maschinenorientierte Programmierung | Sommersemester 2015 Rechnerarchitektur und Programmierung Weshalb maschinennahe Programmierung? I Nutzung maschinenspezifischer Besonderheiten I ¨ ¨ maximale Ausnutzung der Hardware (hochstes Leistungsvermogen oder geringster Aufwand) I ¨ Umgehung von Unzulanglichkeiten (Workarounds) I vermittelt grundlegendes Erfahrungswissen zum Verstehen, Beurteilen ¨ und Auswahlen von Prozessorarchitekturen → in der Praxis nach wie vor erforderlich! Seite 20 Adressierung und Maschinenprogrammierung | Maschinenorientierte Programmierung | Sommersemester 2015 Maschinenprogramm Hexadezimalcode I hexadezimaler Maschinencode kann direkt von der CPU als Programm ausgefuhrt werden ¨ I vom Hersteller festgelegt und Datenbuchern zu entnehmen ¨ I Maschinencode wird in den Arbeitsspeicher transportiert (geladen) I Prozessor liest jede Anweisung (Befehl) und fuhrt ihn aus ¨ I Daten werden ebenfalls im Arbeitsspeicher aufbewahrt I Prozessor kann die Daten lesen, speichern und uber die ¨ Ein-/Ausgabesteuerung einlesen und ausgeben Beispiel fur ¨ 8051-Maschinencode: Code 74h E5h Bedeutung kopiere den nachfolgenden Wert (Konstante, hexadezimal) direkt in das A-Register des Rechenwerks kopiere den Inhalt der Speicherzelle in das A-Register, deren Adresse in der nachfolgenden RAM-Speicherzelle genannt wird Seite 21 Adressierung und Maschinenprogrammierung | Maschinenorientierte Programmierung | Sommersemester 2015 Assemblerprogramm Assemblermnemonik I Verwendung von auf das Ziel hinweisende Befehlsworte statt Zahlen I Assembler ubersetzt die Befehlsworte eins zu eins in die ¨ entsprechenden Zahlen des Maschinencodes I ¨ Warum ist das moglich? Assembler so aufgebaut, dass Programme fast ¨ ¨ unverandert in Maschinensprache transformiert werden konnen! I Befehle nennt man Assemblermnemonik der CPU Beispiel fur ¨ gleiches Programm in Assemblermnemonik: Code 74 22 Assemblermnemonik mov A, #22h E5 22 mov A, 22h Bedeutung kopiere die Konstante 22h direkt in das A-Register des Rechenwerks kopiere den Inhalt der Speicherzelle 22h direkt in das A-Register des Rechenwerks Maschinenbefehle 74h und E5h beinhalten bereits das Ziel (A-Register) des Kopiervorgangs und Anweisung zum Umgang mit dem Parameter Seite 22 Adressierung und Maschinenprogrammierung | Maschinenorientierte Programmierung | Sommersemester 2015 Assemblerdirektiven ¨ Befehle an das Ubersetzerprogramm I ¨ Befehle zur Steuerung des Verhaltens des Ubersetzerprogramms (Assembler und Linker) I nicht Bestandteil des Befehlssatzes I Befehle richten sich nicht an die CPU I ¨ ermoglichen die Definition von Symbolen, Reservierung von Speicherplatz, Platzierung von Programmcode... ¨ ¨ nur wahrend der Ubersetzung der Assemblermnemonik in Maschinensprache von Bedeutung I I Befehle tauchen im fertigen Maschinenprogramm nicht mehr auf I ¨ abhangig vom verwendeten Assemblerprogramm Seite 23 Adressierung und Maschinenprogrammierung | Maschinenorientierte Programmierung | Sommersemester 2015 Assemblerdirektiven Beispiel fur ¨ Assemblerdirektiven: Befehle org und end #22 (dezimal) = 0x16h ! Seite 24 Adressierung und Maschinenprogrammierung | Maschinenorientierte Programmierung | Sommersemester 2015 Assemblerdirektiven Assemblerbefehle blau dargestellt! I richten sich an die CPU I CPU soll ihren Akkumulator A mit der Zahl 22 laden (Zeilen 3A und 3C) I Zahl soll anschließend in die Speicherzelle DPH ubertragen werden ¨ I ¨ Zeilennummern gehoren nicht zum Quelltext Assemblerdirektiven violett dargestellt! I ¨ steuern die Ubersetzung der Assemblerbefehle durch den Assembler I org 03Ah Befehl stellt Assembler so ein, dass dieser das Programm ab Speicherzelle 03Ah ablegt I end Befehl sagt Assembler, dass er nicht weiter ubersetzen soll ¨ I weitere Zeilen dahinter werden nicht mehr ubersetzt ¨ I Direktiven des a51-Assembler Seite 25 Adressierung und Maschinenprogrammierung | Maschinenorientierte Programmierung | Sommersemester 2015 Zusammenfassung Heute haben Sie gelernt... I wie der Adressraum bei Harvard und von-Neumann verwaltet wird und welche Auswirkungen dies auf die praktische Benutzung hat I wo die Unterschiede verschiedener Arten von Programmiersprachen liegen I wie man von einem Assemblerprogramm zum Maschinenprogramm kommt Seite 26 Adressierung und Maschinenprogrammierung | Maschinenorientierte Programmierung | Sommersemester 2015 ¨ Ausblick auf nachste Stunde ¨ In der nachsten Stunde widmen wir uns... I dem Aufbau des Mikrocontrollers 8051 I dem Programmiermodell des 8051 Mikrocontrollers I dem Speichermodell und den unterschiedlichen Zugriffsarten Seite 27 Adressierung und Maschinenprogrammierung | Maschinenorientierte Programmierung | Sommersemester 2015 Hinweise zum Selbststudium Zur Vertiefung wird empfohlen... I MOP-Skript I Oberschelp, Vossen: Rechneraufbau und Rechnerstrukturen, Oldenbourg Verlag, ISBN 3486253409 I Jurgen Walter: Mikrocomputertechnik mit der 8051-Controller-Familie, ¨ Springer Verlag, ISBN 9783540667582 Seite 28 Adressierung und Maschinenprogrammierung | Maschinenorientierte Programmierung | Sommersemester 2015 Kritik Nun sind Sie dran: I Kritik: Was funktioniert gut / was schlecht? I Anregungen I Wunsche ¨ I ¨ Verbesserungsvorschlage in Bezug auf Inhalt und Organisation der Vorlesung
© Copyright 2025 ExpyDoc