Teil 1: Prozessorstrukturen

Ähnliche Dokumente
Teil 1: Prozessorstrukturen

MOTOROLA MC Befehlssatz

Maschinenbefehlssätze. an Beispielen von: Motorola: MC 6809 ATMEL: AVR ATmega

TI2 Übung 2. Hauptspeicher, 6809-Prozessor. 23. November 2004 (WS 2004) Andreas I. Schmied Universität Ulm Fakultät für Informatik

Teil 2: Rechnerorganisation

Teil 1: Prozessorstrukturen

Inhaltsübersicht. 1. Aufbau eines Maschinenbefehls. 2. Adressierungsarten. 3. Indizierte Adressierung. 4. Befehlssatz

F Ein einfacher Modellprozessor

Teil 1: Prozessorstrukturen

Rechnersysteme. Speicherorganisation und Adressierungsarten. Otto-von-Guericke-Universität Magdeburg

Befehle zur Verarbeitung von Daten ( data processing ):

Technische Informatik-I. Speicherorganisation und Adressierungsarten. Otto-von-Guericke-Universität Magdeburg

Mikrocontroller-Programmierung

Mikrocomputertechnik 2.Mikroprozessor

Assembler Kontrollstrukturen

Teil 1: Prozessorstrukturen

9. Assembler: Der Prozessor Motorola 68000

DATEN UND BEFEHLSFORMATE, ADDRESSIERUNGSARTEN UND MASCHINEN- PROGRAMMIERUNGSKONZEPTE

H Hypothetischer Prozessor

Kap.2 Befehlsschnittstelle. Prozessoren, externe Sicht

Technische Informatik 2 Adressierungsarten


05. Assembler-Programmierung. Datenstrukturen des ATMega32. Literatur

10. Der Befehlssatz des MSP 430

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

Von-Neumann-Architektur

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

Teil III: Wat macht ene Mikrokontroller?

MOP: Befehlsliste für den Mikrocontroller 8051

Die Mikroprogrammebene eines Rechners

10. Die Adressierungsarten des MSP 430

Struktur der CPU (1) Die Adress- und Datenpfad der CPU: Befehl holen. Vorlesung Rechnerarchitektur und Rechnertechnik SS Memory Adress Register

Mikrocomputertechnik. Adressierungsarten

Befehlssatz der Mikrocontroller der 51er -Familie

Befehlssatz der Mikrocontroller der 51er -Familie

MOS Technologies 6502 MPU - Der revolutionäre Mikroprozessor. Fabian Wenzel IAV 1 Rudolf-Diesel-Fachschule Nürnberg

Daniel Betz Wintersemester 2011/12

Übungen zur Vorlesung Technische Informatik I, SS 2002 Hauck / Guenkova-Luy / Prager / Chen Übungsblatt 5 Rechenwerke / Scheduling

Zusammenfassung der Assemblerbefehle des 8051

Mikroprozessor als universeller digitaler Baustein

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

Assembler - Adressierungsarten

Organisatorisches. PDV und Robotik Fakultät 4 TUB 1 INFO4 Übung Assembler 1

Der Toy Rechner Ein einfacher Mikrorechner

Mikroprozessoren. Aufbau und Funktionsweise. Christian Richter. Ausgewählte Themen der Multimediakommunikation SS 2005

Grundlagen der Rechnerarchitektur. Binäre Logik und Arithmetik

Einführung in die Informatik

6. Intel IA-32 Prozessoren Aufbau und Adressierungsarten

Aufgabe I: Im einzelnen soll das Hauptprogramm:

INFORMATIK Oberstufe. Funktionsweise eines Rechners

Die ARM-Mikroarchitektur. Acorn RISC Machine ARM. Asm Prak SS03 p.1/13

Informatikgrundlagen I Grundlagen der Informatik I

Instruktionssatz-Architektur

Technische Informatik 1

ARM: Befehlssatz (Forts.)

Assembler Integer-Arithmetik

Rechnergrundlagen SS Vorlesung

4 Assembler für die 8051-Controller-Familie

Neues vom STRIP Forth-Prozessor

1. Übung - Einführung/Rechnerarchitektur

3. Grundlagen der Rechnerarchitektur

Motorola 680x0: function codes

Motorola 680x0: function codes

TI-Übung Assembler. Andreas I. Schmied AspectIX-Team Abteilung Verteilte Systeme Universität Ulm WS2005

PC/XT/AT ASSEMBLER-BUCH

x86-assemblerprogrammierung

Rechnergrundlagen SS Vorlesung

Kap 4. 4 Die Mikroprogrammebene eines Rechners

Prozessor HC680 fiktiv

Allgemeine Struktur eines Digitalrechners

Technische Informatik 2: Addressierung und Befehle

L3. Datenmanipulation

Steuerwerk einer CPU. Einführung in die Technische Informatik Falko Dressler, Stefan Podlipnig Universität Innsbruck

Der 8086/88 als Rechenkünstler

ALU ALU. ALU-Aufbau. Eine ALU (arithmetisch-logische Einheit) besteht in der Regel aus. Addierer. Logischer Einheit. Shifter

Heute nur MIPS-Praxis (4 Aufgaben)

Teil 1 Magic Disk 01/90

Rechnerstrukturen 1: Der Sehr Einfache Computer

HC680 PROGRAMMER'S REFERENCE MANUAL

RO-Tutorien 15 und 16

Multiplizierer. Beispiel komplexer arithmetischer Schaltung. Langsamer als Addition, braucht mehr Platz. Sequentielle Multiplikation

Geräteentwurf mit Mikroprozessoren 1

Beispiel: A[300] = h + A[300]

Klausur Technische Informatik 1 + E-Technik SS 2013 Prüfer: Sutter Hilfsmittel: keine

Architektur der Intel 8051 Familie und Grundlegende Programmierung Reto Gurtner 2005

Problem: Keine Integers in JavaCard. ToDo: Rechnen mit Bytes und Shorts

Einführung in AVR Assembler

8. Intel IA-32 Prozessoren: Befehlsübersicht

Vorwort 8. Kap. 1: Grundlagen 10

MIX-Befehle - Aufbau

Assembler-Programmierung

Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13

RISC-Prozessoren (1)

Zahlen im Computer (Klasse 7 Aufbaukurs Informatik)

Datenpfad einer einfachen MIPS CPU

Neues vom STRIP Forth-Prozessor

Transkript:

Teil 1: Prozessorstrukturen Inhalt: Mikroprogrammierung Assemblerprogrammierung Motorola 6809: ein einfacher 8-Bit Mikroprozessor Mikrocontroller Koprozessoren CISC- und RISC-Prozessoren Intel Pentium 1 Motivation Hypothetische CPU weist einige Nachteile auf, aufgrund derer sie für reale Anwendungen ungeeignet ist: kein Zugriff auf die i-te Komponente eines ab der Startadresse a im Speicher abgelgten Datenfeldes, wenn i erst zur Laufzeit bekannt ist kein Arbeiten mit Zeigern möglich kein Aufruf von Unterprogrammen möglich Adressen können nur im b-bit Adreßfeld einer Instruktion kodiert werden ( Beschränkung auf Adreßraum mit 2 b Adressen) Datenwortbreite n ist fest und muß der Summe aus Instruktionslänge (8 Bit) und der Länge b des Adreßfeldes entsprechen einzelnes Datenregister erfordert häufige Zwischenspeicherung von temporären Ergebnissen im Speicher Aufgrund fehlender Programmunterbrechungen ( Interrupts ) ist die Implementierung von Betriebssystemen und E/A-Gerätetreibern schwierig 2 1

Motorola 6809: Übersicht 8-Bit Mikroprozessor Nachfolger von 6502, 6800 und 6802 8-Bit Datenbus 16-Bit Adreßbus Adreßraum von 64 kbyte addressierbar zwei 8-Bit Datenregister A und B, zum 16-Bit Datenregister D koppelbar zwei 16-Bit Indexregister X und Y zwei 16-Bit Stackpointer S und U 59 Instruktionen, 10 (!) Adressierungsarten (mit 24 Unterarten 1464 unterschiedliche Operationen) weitgehend orthogonaler Befehlssatz erster Mikroprozessor mit 8 8 16 Bit Hardware-Multiplizierer Unterstützung von Interrupts 3 Aufbau des Motorola 6809 4 2

Befehlssatz des 6809 Befehlsklassen: ALU-Befehle, Transfer-Befehle, Sprungbefehle, Stack-Befehle, System- und Sonstige Befehle Die meisten ALU-Befehle können angewandt werden auf: 8-Bit Akkumulator A (Mnemonik xxxa) 8-Bit Akkumulator B (Mnemonik xxxb) 16-Bit Akkumulator D (Mnemonik xxxd) eine beliebige 8-Bit Speicherstelle a (Mnemonik xxx) Bei zweistelligen ALU-Operationen (z.b. Addition) wird stets ein Speicherwert mit dem Inhalt von A, B oder D verknüpft Alle wichtigen Befehle sind in einem Byte kodiert; bei den übrigen Befehlen befindet sich zusätzliche Information (z.b. über die Adressierungsart) in einem Postbyte hinter dem Befehlsbyte 5 ALU-Befehle des 6809 (Auswahl) ADDA, ADDB, ADDD ADCA, ADCB SUBA, SUBB, SUBD CMPA, CMPB, CMPD SEX MUL INC, INCA, INCB DEC, DECA, DECB CLR, CLRA, CLRB TST, TSTA, TSTB BITA, BITB NEG, NEGA, NEGB COM, COMA, COMB ANDA, ANDB ORA, ORB EORA, EORB Addiere Speicherwert zu A, B oder D Addiere (mit Carry) Speicherwert zu A oder B Subtrahiere Speicherwert von A, B oder D dito, aber ohne Speicherung des Ergebnisses Fülle A mit Vorzeichen aus B ( Sign Extension ) Vorzeichenlose Multiplikation A B D Inkrementiere Speicherwert, A oder B Dekrementiere Speicherwert, A oder B Lösche Speicherwert, A oder B Teste Speicherwert M, A oder B auf negativ und 0 Teste M AND A bzw. M AND B auf negativ und 0 Zweierkomplement von Speicherwert, A oder B Einerkomplement von Speicherwert, A oder B Bitweises UND von Speicherwert und A bzw. B Bitweises ODER von Speicherwert und A bzw. B Bitweises XOR von Speicherwert und A bzw. B 6 3

ALU-Befehle des 6809 (Auswahl, Forts.) ASL, ASLA, ASLB ASR, ASRA, ASRB LSL, LSLA, LSLB LSR, LSRA, LSRB ROL, ROLA, ROLB ROR, RORA, RORB Arithmetischer Linksshift von Speicherwert, A oder B Arithmetischer Rechtsshift von Speicherwert, A oder B Logischer Linksshift von Speicherwert, A oder B Logischer Rechtsshift von Speicherwert, A oder B Rotation nach links von Speicherwert, A oder B Rotation nach rechts Speicherwert, A oder B Arbeitsweise der Shift-Befehle: (unter Verwendung des C-Flags aus dem CC-Register) 7 Transfer-Befehle des 6809 LDA, LDB LDD LDX, LDY, LDS, LDU STA, STB STD STX, STY, STS, STU EXG R1,R2 TFR R1,R2 Lade 8-Bit Wert aus Speicher in A oder B Lade 16-Bit Wert aus Speicher in Akkumulator D Lade 16-Bit Adresse aus Speicher in X,Y,S oder U Speichere 8-Bit Wert aus Akkumulator A oder B Speichere 16-Bit Wert aus Akkumulator D Speichere 16-Bit Adresse aus X,Y,S oder U Vertausche Inhalt zweier Register R1 und R2 Kopiere Inhalt von R1 nach R2 Hinweis: Bei den Befehlen EXG R1,R2 und TFR R1,R2 müssen Register R1 und R2 entweder beide ein 8-Bit Register (d.h. A, B, CC, DP) oder beide ein 16-Bit Register (d.h. X, Y, S, U, PC) repräsentieren! 8 4

Sprungbefehle des 6809 Sprungbefehle arbeiten mit relativen Sprüngen, bei denen das Sprungziel als Distanz zum aktuellen Stand des Befehlzählers (in Zweierkomplement) kodiert wird bei 8-Bit Operand sind Distanzen im Bereich von 128 bis 127 möglich bei 16-Bit Operand ( Long Relativ Branch, Mnemnonik LBxx) können Distanzen im Bereich von 32768 bis 32767 kodiert werden Einfache Sprungbefehle (abhängig von einzelnen Statusbits): BEQ, LBEQ BNE, LBNE BMI, LBMI BPL, LBPL BCS, LBCS BCC, LBCC BVS, LBVS BVC, LBVC Branch if Equal Branch if Not Equal Branch if Minus Branch if Plus Branch if Carry Set Branch if Carry Clear Branch if Overflow Set Branch if Overflow Clear (Sprung bei Z=1) (Sprung bei Z=0) (Sprung bei N=1) (Sprung bei N=0) (Sprung bei C=1) (Sprung bei C=0) (Sprung bei V=1) (Sprung bei V=0) 9 Sprung-Befehle des 6809 (Forts.) Bedingte Sprungbefehle nach Vergleich von zwei vorzeichenbehafteten ( signed ) 8-Bit oder 16-Bit Zahlen: BGT, LBGT Branch if Greater Than (Sprung bei Z+(N V)=0) BGE, LBGE Branch if Greater or Equal (Sprung bei N V=0) BLE, LBLE Branch if Less Than or Equal (Sprung bei Z+(N V)=1) BLT, LBLT Branch if Less Than (Sprung bei N V=1) Bedingte Sprungbefehle nach Vergleich von zwei positiven ( unsigned ) 8-Bit oder 16-Bit Zahlen: BHI, LBHI Branch if Higher (Sprung bei C+Z=0) BHS, LBHS Branch if Higher or Same (Sprung bei C=0) BLS, LBLS Branch if Lower or Same (Sprung bei C+Z=1) BLO, LBLO Branch if Lower (Sprung bei C=1) Unbedingter Sprung: BRA, LBRA Branch Always 10 5

Statusregister des 6809 Bit 7 E F H I Bit 0 C Bedeutung der Flags im Statusregister CC: C (Bit 0) bei aufgetretenem Überlauf ( Carry Flag ) V (Bit 1) bei aufgetretenem arithmetischem Überlauf ( Overflow Flag ) Z (Bit 2) gesetzt, wenn Ergebnis der letzten Operation Null ( Zero ) war N (Bit 3) höchstwertiges Bit der letzten Operation ( Negative Flag ) I (Bit 4) Maskierungsbit für IRQ (Interrupt gesperrt bei I=1) H (Bit 5) [4-Bit-Überlauf bei BCD-Arithmetik ( Half Carry Flag )] F (Bit 6) Maskierungsbit für FIRQ (Interrupt gesperrt bei F=1) E (Bit 7) [Alle Register auf Stack gesichert ( Entire Flag )] Hinweise: Jede Instruktion setzt nur bestimmte Flags! Bei den Befehlen SUB und CMP wird C-Flag komplementiert! N Z V 11 Speichermodell des 6809 hypothetische CPU ist eine wortorientierte CPU: benötigt einen wortadressierbaren Speicher aus n-bit Worten je n-bit Speicherzeile ein 8-Bit Befehlswort mit a Bit Adreßteil für einen großen Adreßraum wird ein langes Adreßfeld und somit auch eine hohe Speicherwortbreite benötigt großer Teil des Speichers bleibt ungenutzt, da auch für 8-Bit Daten oder Befehle ohne Operand (z.b. ASL ) ein n-bit Wort benötigt wird Motorola 6809 ist eine byteorientierte CPU: benötigt einen byteadressierbaren Speicher Ein Befehl belegt je nach Adressierungsart 1, 2 3 oder 4 aufeinanderfolgende Byte im Speicher für Befehlscode und Operanden 8-Bit Daten belegen ein Speicherbyte, 16-Bit Daten belegen zwei aufeinanderfolgende Speicherbyte (höherwertiges Byte auf kleinerer Adresse) 12 6

Adressierungsarten des 6809 Implizite Adressierung ( implied addressing ): Die Angabe des Operanden ist implizit im Befehlscode enthalten Beispiele: CLRA, NEGA, ASRB, ROLB Direkte oder absolute Adressierung ( extended addressing ): Die 16-Bit Speicheradresse (EA = Effektive Adresse) des Operanden befindet sich hinter dem Befehlscode Beispiel: LDA $1234 Unmittelbare Adressierung ( immediate addressing ): Der Operand befindet sich unmittelbar als sog. Literal hinter dem Befehlscode, entweder als 8-Bit Wert oder als 16-Bit Wert (2 Byte) Beispiele: LDA #59, LDD #$FFAA 13 Adressierungsarten des 6809 (Forts.) Direkte seitenbasierte Adressierung ( direct page addressing ): Nur die niedrigwertigen 8 Bit der EA befinden sich hinter dem Befehlscode; die höherwertigen 8 Bit werden dem Register DP entnommen. Beispiel: LDA $34 Register-Adressierung ( register addressing ): Das dem Befehlscode folgende Byte enthält die in jeweils 4 Bit kodierten Quell- und Zielregister R S und R D Beispiele: EXG X,Y TFR B,DP 14 7

Adressierungsarten des 6809 (Forts.) Indizierte Adressierung ( indexed addressing ): 1) ohne Offset ( zero offset indexed ) Die Speicheradresse EA wird unverändert einem der 16-Bit Register X,Y,U oder S entnommen. Beispiele: LDA,X oder STB 0,Y 2) mit konstantem Offset ( constant offset indexed ) Zum Inhalt eines der Register X,Y,U oder S wird eine konstante Distanzadresse addiert, die in 5 Bit (im Postbyte), in 8 Bit (im Byte hinter Postbyte) oder in 16 Bit (in 2 Bytes hinter Postbyte) kodiert ist. Beispiele: LDA -5,X LDY $300,S 15 Adressierungsarten des 6809 (Forts.) Indizierte Adressierung (Forts.): 3) mit Offset im Akkumulator ( accumulator offset indexed ) Zum Register X,Y,U oder S wird zur Bildung der EA der Inhalt von A,B oder D addiert. Beispiel: LDA B,X 4) mit Autoinkrement ( auto increment indexed ) wie bei 1), jedoch wird der Inhalt eines der Basisregisters X,Y,U und S nach der Berechnung der EA um 1 oder 2 erhöht Beispiel: LDA,X+ STD,Y++ 5) mit Autodekrement ( auto decrement indexed ) wie bei 1), jedoch wird der Inhalt des Basisregisters vor Berechnung der EA um 1 oder 2 erniedrigt Beispiel: LDA,-Y STD,--X 16 8

Adressierungsarten des 6809 (Forts.) Indirekte indizierte Adressierung ( indexed indirect ): Die indizierten Adressierungsarten können auch indirekt eingesetzt werden,d.h. die EA ergibt sich aus dem Inhalt der 2 Speicherbytes, deren Startadresse durch Addition von Basisadresse und Offset errechnet wird. Beispiele: LDA [B,Y] LDB [-6,X] LDD [,X++] Indirekte absolute Adressierung ( extended indirect ): Auch bei absoluter Adressierung von a ist eine Indirektion möglich, d.h. die EA ergibt sich aus dem Inhalt der 2 Speicherbytes an Adressen a und a+1 Beispiel: LDA [$FFEE] 17 Adressierungsarten des 6809 (Forts.) Relative Adressierung ( relative addressing ): Die Zieladressen bei den Sprung-Befehlen des 6809 werden immer relativ zum PC angegeben, entweder in einem Byte ( short relative, schnell) oder in zwei Bytes ( long relative, langsam). Beispiele: BEQ $F0 LBGT $0200 Hinweis: Bei einer Addition im long relative Format wird ein Überlauf ignoriert, d.h. alle Speicheradressen können erreicht werden! PC-relative Adressierung ( program counter relative ): Auch der PC kann als Indexregister eingesetzt werden, jedoch nur mit konstantem Offset. Hierdurch können positionsunabhängige Maschinenprogramme auf einfachem Wege implementiert werden. Beispiel: LDX table,pcr... table rmb 100 18 9