Vorlesungsfolien Termin 3

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