1 Systementwurf mit Mikroprozessoren WS 09/10 R. Hoffmann Lernziele Verstehen Lernen wie Mikroprozessoren und ihre Schnittstellen funktionieren. Lernen, wie man Systeme mit Mikroprozessoren entwirft. Warum Mikroprozessoren "Everywhere", (Embedded Systems, Ambient Computing) Informatiker sollten wissen, wie Mikroprozessorsysteme funktionieren Technische Informatiker müssen in der Lage sein, Systeme mit Mikroprozessoren zu entwerfen Literatur: Flik: Mikroprozessortechnik und Rechnerstrukturen, Springer 2005 R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Systementwurf mit Mikroprozessoren WS 2009/2010 Anwendungen von Mikroprozessoren SLR McLaren R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Systementwurf mit Mikroprozessoren WS 2009/2010 2 Systementwurf mit Mikroprozessoren SS 08 R. Hoffmann 1. 2. 5. 6. Einführung [1.] 7. 1.1. Informationsdarstellung Ein-/Ausgabeorganisation und Rechnerkommunikation [8.] 1.2. Rechnerstruktur (CISC) 7.1. Prozessorgesteuerte Ein-/Ausgabe 1.3. Assemblerprogrammierung (CISC) 7.2. Allgemeine Übertragungsmerkmale Der Mikroprozessor [3.] 7.3. Parallele Schnittstellen 2.1. CISC-Programmiermodell 7.6. Serielle Schnittstellen Busse und Systemstrukturen 7.5. Asynchron serielle Datenübertragung 5.1. Systemaufbau und Systemstrukturen [4.] 7.6. Synchron serielle Datenübertragung 5.2. Adressierung der Systemkomponenten [5.] 5.3. Datentransportsteuerung [6.] 5.4. Busarbitration [10.] 5.5. Interruptsystem und Systemsteuersignale [7.] 5.6. Der PCI-Local-Bus und PCI-X [10.] 8. Speicheraufbau und Speicherzugriff [2.] 6.2. Caches [12.] 8.1. DMA-Controller und Ein-/Ausgabecomputer [9.] 8.2. Periphere Punkt-zu-Punkt-Verbindungen und Peripheriebusse [11.] 8.3. Speicherorganisation 6.1. Ein-/Ausgabesteuereinheiten und Peripheriegeräte 9. Hintergrundspeicher Mikrocontroller [13.] Kapitelnummern, Inhalt und Bilder entnommen aus Flik: Mikroprozessortechnik, 6. und 7. Aufl. Springer R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Systementwurf mit Mikroprozessoren WS 2009/2010 3 Systementwurf mit Mikroprozessoren SS 08 Reihenfolge Teil 1 : Einführung 1.1. Informationsdarstellung 1.2. Rechnerstruktur (CISC) 1.3. Assemblerprogrammierung (CISC) Teil 2 : Speicher 6.1. Speicheraufbau und Speicherzugriff Teil 6 : Busse, Busarbitration 5.1. Systemaufbau und Systemstrukturen 5.4. Busarbitration Teil 7 : DMA, Floppy 8.1. 8.3. DMA-Controller Hintergrundspeicher Teil 3 : Prozessor 2.1. CISC-Programmiermodell Teil 4 : Buszyklen 5.2. Adressierung der Systemkomponenten 5.3. Datentransportsteuerung 5.5. Interruptsystem und Systemsteuersignale Teil 5 : Ein-/Ausgabe 7.1. 7.2. 7.3. 7.4. 7.5. 7.6. Prozessorgesteuerte Ein-/Ausgabe Allgemeine Übertragungsmerkmale Parallele Schnittstellen Serielle Schnittstellen Asynchron serielle Ein-/Ausgabe Synchron serielle Ein-/Ausgabe R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Teil 8 : PCI-Bus 5.6. Der PCI-Local-Bus Teil 9 : Peripheriebusse 8.2. Peripheriebusse Teil 10 : Caches 6.2. Caches Teil 11 : Microcontroller Microcontroller Systementwurf mit Mikroprozessoren WS 2009/2010 4 Inhalt Teil 1: Einführung Informationsdarstellung Komponenten Mikroprozessorsystem Bus Mikroprozessor Hauptspeicher EA-Einheiten Mikroprozessor Zeichen Ganze Zahlen (Signed, Unsigned) BCD, Gleitkommazahl 3/2/1-Adressbefehle Struktur eines 16-Bit-Mikroprozessors Befehlszyklus Ein-/Ausgabeeinheit Protokollwandlung Anpassung Geschwindigkeiten Zwischenspeicherung Assemblerprogrammierung symbolische Darstellung Maschinencode Assemblierung, Direktiven Programmlisting Texteingabe und –ausgabe Übertragung der darstellbaren Zeichen und der Steuercodes Speicher RAM, ROM, CAM R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Systementwurf mit Mikroprozessoren WS 2009/2010 5 1. Einführung 1.1 Informationsdarstellung Informationseinheiten Byte, Wort, Doppelwort, ... Zeichen (character) ASCII, EBCDIC, IBM-PC, 16-Bit-Unicode Hexadezimal- und Oktalcode 4-Bit-Dualzahl ==> Hexadezimalziffer (0..F) 3-Bit-Dualzahl ==> Oktalziffer (0..7) Ganze Zahlen Vorzeichenlose Dualzahlen (unsigned) = positive Dualzahl 0 .. (2n -1) 0 .. (2n -1) Vorzeichenbehaftet (signed) = Zweikomplementzahl -2n-1 .. (2n-1-1) 0 .. (2n -1) nicht symmetrisch zu 0, Fehlerquelle! R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Systementwurf mit Mikroprozessoren WS 2009/2010 6 ASCII-Code 7 0 1 2 3 4 5 6 7 0 NUL DLE SP 0 @ P ` p 1 SOH DC1 ! 1 A Q a q American Standard Code for Information Interchange, Standard No. X3.4-1968 of the American National Standards Institute. 2 STX DC2 “ 2 B R b r Leseweise: z. B. 39h =9 3 ETX DC3 # 3 C S c s 4 EOT DC4 $ 4 D T d t 5 ENQ NAK % 5 E U e u 6 ACK SYN & 6 F V f v 7 BEL ETB ‘ 7 G W g w 8 BS CAN ( 8 H X h x 9 HT EM ) 9 I Y i y A LF SUB * : J Z j z B VT ESC + ; K [ k { C FF FS , < L \ l | D CR GS – = M ] m } E SO RS . > N ^ n ~ F SI US / ? O _ o DEL R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Der bei Mikroprozessoren verbreitete Standard ist der ASCII-Code (American Standard Code for Information Interchange). Bei diesem Code wird jedes Zeichen durch eine Folge von 7 Bits festgelegt (dies erlaubt 128 verschiedene Zeichencodierungen). Zur Speicherung der Zeichen ist bei dieser 7-Bit-Darstellung sofort ersichtlich, dass man ein Zeichen in jeweils einem Byte ablegt. Allerdings ist die Frage, wie man das freie achte Bit verwendet. Das wird nicht durch die Codetabelle festgelegt, sondern durch die verwendeten Programme. Manchmal wird dieses Bit ganz einfach 0 gesetzt, manchmal wird es ignoriert und gelegentlich wird es auch dazu benutzt, weitere 128 Nicht-ASCII-Zeichen darzustellen, was allerdings herstellerabhängig ist. Systementwurf mit Mikroprozessoren WS 2009/2010 Zweikomplementzahlen Signed integer, vorzeichenbehaftete Dualzahl 0000 1111 0000 0010 15 0 Addition Subtraktion 1101 0011 13 0100 1100 6 10 1010 1001 0101 1000 +4 1011 -6 0110 0111 positiver Zahlen 0101 +6 -7 -8 1000 +7 0111 0110 positiver Zahlen Zweikomplementzahlen 2K Wert R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur 1010 1001 positive Dualzahlen 0100 +5 -5 7 0011 +3 -4 5 11 Addition +2 -3 4 12 1011 0 +1 1101 3 8 -1 -2 2 9 0010 1110 1 14 1100 0001 0001 1111 Subtraktion 1110 8 X= signed(x) = x + (x <0) 2n x = X – Xn-1 2n = X – Sign 2n Systementwurf mit Mikroprozessoren WS 2009/2010 Addition im Zweikomplement C a1) a2) b1) b2) c1) c2) +2 +2 +4 +7 +7 +14 -1 -1 -2 -8 -8 -16 +2 -1 +1 +1 -7 -6 0.0 0.0 0 0.1 0.1 0.1 0.1 1 1.1 1.1 1.1 1 1.0 1.0 1.0 0 0.0 1.1 1 0.0 0.0 1.0 0 1.0 1 1 0 1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0 0 1 1 1 1 0 OV 0 0 0 1 1 0 1 1 1 0 0 0 R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Overflow: Ergebnis nur richtig, wenn C als zusätzliche Stelle (Vorzeichenstelle) berücksichtigt wird! Carry-Out=C: In den Fällen b1 und c1 muss das entstehende Carry ignoriert werden Subtraktion: Zweiten Operanden bitweise negieren und das Carry-In auf 1 setzen. Systementwurf mit Mikroprozessoren WS 2009/2010 9 Addition im Zweikomplement Overflow 10 Berechnung des Overflow: 1. OV=CarryOut exor CarryBefore 2. siehe Bild und HDL-Algorithmus 3. die Zahlen werden um eine zusätzliche Vorzeichenstelle (Schutzstelle) erweitert. Vor der Addition hat jeder Operand zwei identische Vorzeichen. Falls die Summe zwei ungleiche Vorzeichen besitzt, ist ein Überlauf aufgetreten. Carry-In Carry-Out R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Systementwurf mit Mikroprozessoren WS 2009/2010 BCD-Zahl, Gleitkommazahl Binärcodierte Dezimalzahlen (BCD) 4-Bit-Dualzahl ==> Dezimalziffer (0..9), Pseudotetraden (=ungenutzte Zustände) Gleitkommazahl (floating point number) (Bild 1-3) R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Systementwurf mit Mikroprozessoren WS 2009/2010 11 Gleitkommazahl R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Systementwurf mit Mikroprozessoren WS 2009/2010 12 1.2 Rechnerstruktur (CISC), Einführung in die Hardwarestruktur Übersicht über die Hardwarekomponenten (Bild 1-5) R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Systementwurf mit Mikroprozessoren WS 2009/2010 13 Übersicht über die Hardwarekomponenten Bus Verbindungswege: Adressen, Daten, Steuersignale Mikroprozessor Interpretation der Maschinenbefehle: Holen, Decodieren, Ausführen Steuerung des Hauptspeichers und der EA-Einheiten Steuerwerk und Operationswerk (ALU, Register) Hauptspeicher Lineare Anordnung von Speicherzellen Zugriff über Adressen EA-Einheiten Schnittstellen-Anpassung: unterschiedliche Datenformate und Arbeitgeschwindigkeiten Zwischenspeicherung von Daten Slave oder Masterbetrieb (DMA, EA-Prozessor) R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Systementwurf mit Mikroprozessoren WS 2009/2010 14 Speichersymbolik 15 Bild 1.6 a) b) Register mit unidirektionalen Schreib-/Leseleitungen " bidirektionalen " c) Speicher mit wahlfreiem Zugriff (RAM) d) 2-Port RAM e) Festwertspeicher (ROM) f) Assoziativspeicher (CAM) D: Datenleitungen, A: Adressleitungen R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Systementwurf mit Mikroprozessoren WS 2009/2010 1.2.2 Busorientierte Systemstruktur Die Systemkomponenten (Mikroprozessor, Speicher, EA-Einheiten, ...) werden meist durch einen zentralen Systembus miteinander verbunden. Dadurch ist das System leicht erweiterbar, aber auch in der Übertragungsbandbreite begrenzt. Der Systembus besteht aus Datenbus, zum Transport der Daten (Befehle, Operanden), Adressbus, zur Anwahl der Speicherzellen, Register, Systemkomponenten, Steuerbus, zur Steuerung des Informationsaustausches, allgemein zur Kontrolle. R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Systementwurf mit Mikroprozessoren WS 2009/2010 16 1.2.3 Mikroprozessor Der Mikroprozessor holt die Maschinenbefehle aus dem Hauptspeicher (Programmund Datenspeicher eines Von-Neumann-Rechners) und interpretiert sie. Informationsanteile bei einer zweistelligen Operation (Bild 1-8): 1. 2. 3. 4. Operationscode Adresse des ersten Operanden Adresse des zweiten Operanden Adresse des Resultats R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Systementwurf mit Mikroprozessoren WS 2009/2010 17 Mikroprozessor Einsparung von Adressbits Verwendung von Registeradressen anstelle von Speicheradressen Reduzierung der Anzahl der Register Zieladresse = Quelladresse (überdeckte Adressierung) Implizit im Operationscode enthalten Speicheradressen stehen in Adressregistern (Register indirekt) Konzeptionell andere Arten: Stackmaschine oder Objektorientierte Maschine (Objektklasse, Objektnummer, Methodennummer) R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Systementwurf mit Mikroprozessoren WS 2009/2010 18 Mikroprozessor Einadressbefehle (Bild 1-9) Speicherzelle(s) Akkumulator Operator(Akkumulator [, Speicherzelle(s)]) Akkumulator Akkumulator Speicherzelle(d) (s = source, d = destination) R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Systementwurf mit Mikroprozessoren WS 2009/2010 19 Mikroprozessor 20 Zweiadressbefehle Prozessor besitzt internen Registersatz Benutzung der internen Registeradressen oder der externen Speicheradressen Quelle/Ziel kann Speicherzelle oder Register sein, Möglichkeiten Speicherzelle(s) Register(d) Register(s) Speicherzelle(d) Operator(Register(s) [, Register(sd)]) Register(sd) oder direkte Operationen auf Speicherzellen _ R/S =Register- oder Speicheroperand (wenn R/S1=0) (wenn R/S2=0) R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Systementwurf mit Mikroprozessoren WS 2009/2010 Struktur eines 16-Bit-Mikroprozessors SR = Statusregister CC = Condition Code DR = Datenregister DB = Datenbus AR = Adressregister Bild 1-11. Struktur eines 16-Bit-Mikroprozessors (die Ziffern beziehen sich auf nächste Folie). µPC Mikrobefehlszähler, µIR Mikrobefehlsregister, PC (Maschinen-)Befehlszähler, IR (Maschinen-) Befehlsregister R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Systementwurf mit Mikroprozessoren WS 2009/2010 21 Befehlszyklus 1. Holen des Befehls aus dem Hauptspeicher in das Befehlsregister 2. Decodieren 3. Holen des ersten Operanden aus dem Registerspeicher oder dem Hauptspeicher und Zwischenspeichern im Rechenwerk. Gegebenenfalls vorher Durchführung von Adressberechnungen. 4. Gegebenenfalls Holen des zweiten Operanden 5. Durchführung der Operation im Rechenwerk 6. Speichern des Ergebnisses im Registerspeicher oder im Hauptspeicher Parallel dazu Berechnung der nächsten Befehlsadresse, entweder Erhöhung des Befehlszählers um 1 (genauer um die Länge des Befehls), oder falls Sprungbefehl Berechnung der Sprungadresse und Laden in den Befehlszähler R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Systementwurf mit Mikroprozessoren WS 2009/2010 22 Befehlszyklus, Beispiel: ADD SPADR,R5 1. 2. 3. 4. 5. Hauptspeicher(PC) IR, PC+1 Decodierung Hauptspeicher(PC) AR, PC+1 Hauptspeicher(AR) DR2, Register(R5) DR2+DR1 Register(R5), Statusinformation R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur PC PC DR1 SR Systementwurf mit Mikroprozessoren WS 2009/2010 23 1.2.4 Speicher Zweck: Speicherung von Programmen, Variablen, Funktionen, Konstanten Schreib-/Lesespeicher (RAM: Random Access Memory) Lesezugriff 1. Bausteinanwahl, Lesesignal, Adresse anlegen 2. Nach der Lesezugriffszeit steht das Datum = Speicherzelle(Adresse) bereit Schreibzugriff 1. Bausteinanwahl, Adresse und Daten anlegen, Schreibsignal-Start 2. Nach der Schreibzugriffzeit erfolgt die Datenübernahme in den Speicher durch das Schreibsignal-Ende Zykluszeit: erforderliche Zeit zwischen 2 Zugriffen R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Systementwurf mit Mikroprozessoren WS 2009/2010 24 Festwertspeicher (ROM: Read Only Memory) Nur lesender Zugriff. Information bleibt beim Stromausfall erhalten. Maskenprogrammierte PROM erasable programmable EPROM electrically alterable EAROM electrically erasable EEPROM R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Systementwurf mit Mikroprozessoren WS 2009/2010 25 Speicherbausteine RAM, ROM RAM CS: Chip Select CE: Chip Enable (Aktivierung des Speicherbausteins) OE: Output Enable (hochohmig/durchgeschaltet) WE: Write Enable (Lesen/Schreiben) R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Systementwurf mit Mikroprozessoren WS 2009/2010 26 ROM Content Addressable Memory CAM (Name = CAM-Adresse) und Inhalt sind variabel. Variable = (Name, Inhalt) Außer der variablen CAM-Adresse kann eine Zelle auch eine normale, ortsfest zugeordnete Binäradresse besitzen. R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Systementwurf mit Mikroprozessoren WS 2009/2010 27 Content Addressable Memory (Assoziativspeicher) Merkmale Großer Namensraum: Der Namensraum ist normalerweise deutlich größer als der Binäradressraum (Anzahl der verfügbaren Speicherzellen), dadurch Einsparung von Hardware-Aufwand für Problemstellungen mit Namensraum >> Binäradressraum Assoziativer Vergleich: Alle eingespeicherten Namen werden parallel verglichen. 0, 1 oder mehr Treffer (hits) sind prinzipiell möglich. Cache: Bei eingeschränkten Assoziativspeichern (z.B. Cache) sind nur 0, 1 Treffer sinnvoll. R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Datenbewegungen können durch Änderung des Namens emuliert werden. Auslesen: Bei mehr als einem Treffer erfolgt entweder sequentielles Auslesen oder z. B. die Oder-Verknüpfung der Inhalte (vergl. PLA) Schreiben: Beim Speichern einer neuen Variablen muss gegebenenfalls eine vorhandene ''älteste'' Variable gelöscht werden. Systementwurf mit Mikroprozessoren WS 2009/2010 28 1.2.5 Ein-/Ausgabeeinheit Aufgaben Protokollwandlung zwischen der internen und der externen Schnittstelle Anpassung der verschiedenen Arbeitsgeschwindigkeiten Zwischenspeicherung und Konvertierung von Daten und Kontrollinformation Typische Bausteine zur Unterstützung der EA EA-Register Paralleler EA-Baustein, stellt eine 8- oder 16-Bit Schnittstelle für die Peripherie zur Verfügung Serieller EA-Baustein, stellt eine serielle 1-Bit Schnittstelle mit Serien/Parallelund Parallel/Serienwandlung zur Verfügung Beispiele: Floppydisk-Controller, HarddiskController, CD-ROM-Controller Direct Memory Access Controller (DMAC), kontrolliert den Blocktransfer von Daten zwischen Speicher und peripheren Einheiten, MasterSlavebetrieb möglich EA-Prozessor R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur 29 Systementwurf mit Mikroprozessoren WS 2009/2010 Ein-/Ausgabeeinheit Komponenten der Implementierung Datensignalleitungen Kontrollsignalleitungen, z. B. Handshake- und Interruptsignale Feste oder programmierbare Logik zur Interpretation der Kommandos Interne Register, Verarbeitungseinheiten sowie ggf. Daten- und Programmspeicher Kommandoregister, zur Einstellung einer bestimmten Betriebsart und zur Aufnahme des auszuführenden Kommandos Statusregister, liefert Information über den Kontroll/Datenzustand des Bausteins an den Prozessor zurück R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Systementwurf mit Mikroprozessoren WS 2009/2010 30 1.3 Einführung in die Assemblerprogrammierung Programmdarstellung Programmieraufgabe (Beispiel: Impulsgeber). An die Peripherie (EA-Register) soll in bestimmten Zeitabständen eine 1 (Impuls) ausgegeben werden. Die Periodendauer t (Zeitkonstante) steht am Anfang im EARegister. Das EAREG ist unter der Adresse 1000 0000 0000 0000 (8000 Hex) ansprechbar. input output output output R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Systementwurf mit Mikroprozessoren WS 2009/2010 31 Symbolische Programmdarstellung Befehle zur Lösung MOVE Q,Z Z := Q SUB Q,Z Z := Z - Q CMP A1,A2 CC := Vergleichsrelationen(A1, A2) BNE S if CCNotEqualBit = true then goto S JMP S goto S R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Systementwurf mit Mikroprozessoren WS 2009/2010 32 Impulsgeberprogramm in symbolischer Darstellung M1 M2 MOVE MOVE MOVE EAREG, ZEITK NULL, EAREG NULL, R0 Takte /Befehl 6 6 4 MOVE ZEITK, R2 4 SUB CMP BNE EINS, R2 R0, R2 M2 5 4 3 MOVE MOVE JMP EINS, EAREG NULL, EAREG M1 6 6 3 ZEITK NULL 0 EINS 1 R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur 33 Innere Schleife benötigt 12 Takte. Für einen kompletten Zyklus werden t=12 * ZEITK + 19 Taktzeiten benötigt. Für t=5 ms und Takt=25 MHz (Taktzeit=40 ns) muss die Zeitkonstante wie folgt eingestellt werden: ZEITK =10415 In der Praxis: Verwendung eines Timers, der periodisch einen Interrupt auslöst. Systementwurf mit Mikroprozessoren WS 2009/2010 Maschinencode-Darstellung (Binärcode, Objektcode) Assembler ordnet den Symbolen Adressen oder Werte zu R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Systementwurf mit Mikroprozessoren WS 2009/2010 34 MaschinencodeDarstellung. 35 Source-Code MOVE MOVE MOVE EAREG, ZEITK NULL, EAREG NULL, R0 M1 MOVE ZEITK, R2 M2 SUB CMP BNE EINS, R2 R0, R2 M2 MOVE MOVE JMP EINS, EAREG NULL, EAREG M1 ZEITK NULL 0 EINS 1 R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Systementwurf mit Mikroprozessoren WS 2009/2010 Programmübersetzung (Assemblierung) 36 Source Code: Assemblersprache, Format einer Programmzeile Name Adresse Label Operation EARG EQU 32768 ; Festlegung der EA-Adresse, symbolische Konstante MOVE EARG, ZEITK ; ZEITK:=EARG Zeitkonstante einlesen MOVE ZEITK, R2 ; Zeitschleife Initialisieren JMP M1 ZEITK DS 1 ; 1 Speicherplatz reservieren, nicht initialisieren EINS DC 1 ; 1 Speicherplatz res. und mit 1 init. ; Konstante M1: Name Adresse Konstante R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Kommentar Systementwurf mit Mikroprozessoren WS 2009/2010 Direktiven (Assembleranweisungen) 37 Hinzufügen weiterer Informationen zur Steuerung der Übersetzung, des Ladevorgangs und der Ausführung Festlegung von Segmentanfangsadressen, Reservierung von Speicherplatz für Variablen und Konstanten, Vorbelegung von Konstanten. Origin: Festlegung der Anfangsadresse des Programm- oder Datensegments [SymbolischeAdresse] ORG NumerischeAdresse Ende des zu assemblierenden Programms END Define Storage: Reservierung von Variablen/Speicherplatz [SymbolischeAdresse] DS AnzahlSpeicherzellen Define Constant: Reservierung und Vorbelegung einer Konstanten [SymbolischeAdresse] DC Wert Equate: Symbolische Definition (entspricht define in C) Name EQU Wert R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Systementwurf mit Mikroprozessoren WS 2009/2010 Assembler, Lader, Binder Assembler (Phase 1) Generierung einer Symboltabelle mit den numerischen Adressen und Konstanten. Durch ORG wird der Zuordnungszähler gesetzt. (Phase 2) Erzeugung des Maschinencodes mit Hilfe der Symboltabelle, Erzeugung eines Listings Cross-Assembler Übersetzer, der auf einer anderen Plattform als der Zielmaschine läuft. R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Lader Absolut-Lader lädt an die ORG-Adresse. Verschiebender Lader (relocating loader) verschiebt die durch den Assembler mittels ORG erzeugten Adressen um eine vorgebbare Ladedistanz. Durch EQU definierte absolute Adressen bleiben unverändert. Binder (linking loader) Löst die Querbezüge von getrennt übersetzten Modulen auf. Systementwurf mit Mikroprozessoren WS 2009/2010 38 Programmlisting des Impulsgeberprogramms 39 R0 R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Systementwurf mit Mikroprozessoren WS 2009/2010 1.3.3 Texteingabe und Textausgabe Von der Tastatur werden mit jedem Tastendruck bzw. Tastenkombination ein oder mehrere Codes erzeugt, die von einem Programm ausgewertet werden. Bei der Textausgabe an einen Drucker werden Steuerzeichen wie CR, LF, FF sowie die eigentlichen Zeichencodes übertragen. R. Hoffmann, TU Darmstadt, FG Rechnerarchitektur Systementwurf mit Mikroprozessoren WS 2009/2010 40