Mikrocomputertechnik 2.Mikroprozessor

Ähnliche Dokumente
Mikrocomputertechnik. Adressierungsarten

Mikrocomputertechnik. Adressierungsarten. Ein Mikroprozessor bietet meist eine Reihe von. Möglichkeiten, die Operanden für eine Rechenoperation zu

9. Assembler: Der Prozessor Motorola 68000

Mikrocomputertechnik - Programmierung

Teil 1: Prozessorstrukturen

68000 Assembler J. Teepe

Teil 1: Prozessorstrukturen

Mikrocomputertechnik 2.Mikroprozessor

Assembler - Adressierungsarten

Befehlssatz der Mikrocontroller der 51er -Familie

MOP: Befehlsliste für den Mikrocontroller 8051

Teil 2: Rechnerorganisation

Befehlssatz der Mikrocontroller der 51er -Familie

Von-Neumann-Architektur

Kap.2 Befehlsschnittstelle. Prozessoren, externe Sicht

05. Assembler-Programmierung. Datenstrukturen des ATMega32. Literatur

Der Intel 8086 Reto Gurtner 2005

Kap.2 Befehlsschnittstelle. Prozessoren, externe Sicht

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

Kurzübersicht MC68000 Mikroprozessor Dokumentversion 1.0 Sebastian Steinhorst

F Ein einfacher Modellprozessor

Assembler-Programmierung

Technische Informatik 2 Adressierungsarten

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

Befehle zur Verarbeitung von Daten ( data processing ):

Daniel Betz Wintersemester 2011/12


Vorwort 8. Kap. 1: Grundlagen 10

Übungen für die Einführung in die Assemblerprogrammierung mit dem Prozessor c515c

HC680 PROGRAMMER'S REFERENCE MANUAL

Prozessor HC680 fiktiv

Wer in der Grundschule ein wenig aufgepasst hat, sollte in der Lage sein schriftlich eine Zahl durch eine zweite zu teilen.

10. Die Adressierungsarten des MSP 430

10. Der Befehlssatz des MSP 430

Geräteentwurf mit Mikroprozessoren 1

PC/XT/AT ASSEMBLER-BUCH

Einführung in die Informatik

Informatikgrundlagen I Grundlagen der Informatik I

Die Mikroprogrammebene eines Rechners

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

DATEN UND BEFEHLSFORMATE, ADDRESSIERUNGSARTEN UND MASCHINEN- PROGRAMMIERUNGSKONZEPTE

Prinzipieller Aufbau und Funktionsweise eines Prozessors

Mikrocomputertechnik

Praktikum Mikrorechner 4 (Bitmanipulation und Spezialregister)

Übungsblatt 10 (Block C 2) (16 Punkte)

Mikroprozessor als universeller digitaler Baustein

Praktikum Mikrorechner 1 (Einführung)

68000 Assembler. WAS ist ein Assembler? Ein System, das den Programmierer hilft, eine maschinennahe Programmierung zu realisieren.

Name: ES2 Klausur Thema: ARM Name: Punkte: Note:

Assembler Integer-Arithmetik

Zusammenfassung der Assemblerbefehle des 8051

x86-assemblerprogrammierung

Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen:

PIC16 Programmierung in HITECH-C

Aufbau eines Taschenrechners

Zusammenhang Interrupt, Befehlszyklus, indirekte Adressierung und Mikroprogramm [Stallings, Kap. 15, S ]

Teil 1: Prozessorstrukturen

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

Allgemeine Struktur eines Digitalrechners

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

Einführung in die Informatik

FAKULTÄT FÜR INFORMATIK

Name: ES2 Klausur Thema: ARM Name: Punkte: Note:

3. Grundlagen der Rechnerarchitektur

Teil III: Wat macht ene Mikrokontroller?

x86-assemblerprogrammierung

INFORMATIK Oberstufe. Funktionsweise eines Rechners

1. Übung - Einführung/Rechnerarchitektur

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

Inhalt. 4.5 Arbeit mit Zeigern (engl. Pointer)

16/32 bit- Mikroprozessor- Systeme

EDT-REFERAT Adressierungsarten

SMP Übung 9 - Lösungsvorschlag

B1 Stapelspeicher (stack)

Mikrocontroller-Programmierung

H Hypothetischer Prozessor

Mikrocomputertechnik. Einadressmaschine

Der Toy Rechner Ein einfacher Mikrorechner

MOTOROLA MC Befehlssatz

Aufbau des Speichers. Interrupt Vektoren. 0xFFE0-0xFFFF. 16 Adressen f. Unterprog. ca. 60 kbyte Flash-ROM für Firmware, Programme, Daten, Tabellen

6. Intel IA-32 Prozessoren Aufbau und Adressierungsarten

2. Programmierung in C

Zahlen im Computer (Klasse 7 Aufbaukurs Informatik)

Dr. Monika Meiler. Inhalt

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

[6-1] Engelmann, Lutz (Hrsg.): Abitur Informatik Basiswissen Schule. Duden-Verlag, 2003, S.43-53, , , S.

Zeiger (engl. Pointer)

Musterlösungen Technische Informatik 2 (T2) Prof. Dr.-Ing. D. P. F. Möller

Stephan Brumme, SST, 2.FS, Matrikelnr

1. Rechnersysteme (Einführung) VL1 2. Komponenten. 3. Daten und Informationen VL2 4. Von Neumann Maschine. 5. Computer und Software VL3

3 Rechnen und Schaltnetze

11. Die PC-Schnittstelle

Stichwortverzeichnis. Matthias Sturm. Mikrocontrollertechnik. Am Beispiel der MSP430-Familie. ISBN (Buch):

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

Betriebssysteme Teil 6: Hardware-Schicht II

Grundbegriffe der Informatik

Besprechung des 3. Übungsblattes MIMA-Interpreter MIMA-Aufgabe: Primzahltest Weitere MIMA-Aufgaben online

Datenpfad einer einfachen MIPS CPU

Name: Vorname: Matr.-Nr.: 4. a) RISC-Architekturen müssen zur Decodierung von Maschinenbefehlen stets ein mikroprogrammierbares Steuerwerk verwenden.

Transkript:

2.3 Programmiermodell des 68000 Aus Sicht des Programmierers besteht der Prozessor aus Registersatz Befehlssatz Adressierungsarten Registersatz des 68000 8 universelle Datenregister (32 Bit) D0 D7 8 Adress-Register (32 Bit) A0 A7 A7 ist der Stackpointer Statusregister (16 Bit), bestehend aus Controlregister und Condition Code Register ProgramCounter (32-Bit) PC Auf die Datenregister kann Byteweise (Bit 0- Bit7), Wortweise (Bit0 Bit 15) und als Langwort (Bit 0 Bit 31) zugegriffen werden. Auf Adress-Register wird wortweise oder Langwortweise zugegriffen. MCT 2-33

Folie Register MCT 2-34

Befehlsatz des 68000 1/2 Arithmetische Operationen mit ganzen Zahlen Logische Befehle Mnemonik Befehlsbedeutung Mnemonik Befehlsbedeutung ADD ADDA ADDI ADDQ ADDX CLR CMP CMPA CMPI CMPM DIVS DIVU EXT MULS MULU NEG NEGX SUB SUBA SUBI SUBA SUBX TST BCD-Befehle ABCD NBCD SBCD Binäre Addition Binäre Addition von Adressen Addition einer Konstanten Schnelle Addition einer Konstanten Addition mit Extendbit (Übertrag) Löschen eines Operanden Vergleichen zweier Operanden Vergleichen zweier Adressen Vergleichen mit einer Konstanten Vergleichen zweier operanden Division mit Vorzeichen Division ohne Vorzeichen Vorzeichenrichtige Erweiterung Multiplikation mit Vorzeichen Multiplikation ohne Vorzeichen Negation eines Operanden (2er Komplt) Negation eines Operanden mit Extendbit Binäre Subtraktion Binäre Subtraktion von Adressen Subtraktion einer Konstanten Schnelle Subtraktion einer Konstanten Subtraktion mit Extendbit (Borgen) Testen eines Operanden gegen Null Addition zweier BCD-Zahlen Negation einer BCD-Zahl Subtraktion zweier BCD-Zahlen AND Logisches UND ANDI Logisches UND mit einer Konstanten EOR Exklusiv-ODER EORI Exklusiv-ODER mit einer Konstanten NOT Einer-Komplement (Invertieren) OR Logisches ODER ORI Logisches ODER mit einer Konstanten TAS Prüfe und setze ein bestimmtes Bit Schiebe- und Rotiere-Befehle ASL Arithmetische Verschiebung links ASR Arithmetische Verschiebung rechts LSL Logische Verschiebung links LSR Logische Verschiebung rechts ROL Rotation nach links ROR Rotation nach rechts ROXL Rotation mit Extendbit nach links ROXR Rotation mit Extendbit nach rechts Bitmanipulationsbefehle BCHG Verändere ein bestimmtes Bit BCLR Lösche ein bestimmtes Bit BSET Setze ein bestimmtes Bit BTST Prüfe ein bestimmtes Bit MCT 2-35

Befehlsatz des 68000 2/2 Datenübertragungsbefehle Steuer- und Verzweigungsbefehle Mnemonik Befehlsbedeutung Mnemonik Befehlsbedeutung EXG Austauschen von Registerinhalten LEA Lade eine effektive Adresse LINK Baue Stackbereich auf MOVE Übertrage ein Datum MOVE fr SR Übertrage den Inhalt des Statusregisters MOVE to CCR Lade die Flags MOVE to SR Lade das Statusregister MOVE USP Lade den User Stack Pointer MOVEA Übertrage eine Adresse MOVEM Übertrage mehrere Register MOVEP Übertrage Daten von und zur Peripherie MOVEQ Übertrage schnell eine Konstante PEA Lege eine Adresse auf den Stack ab SWAP Vertausche zwei Registerhälften UNLK Baue Stackbereich ab Bcc Verzweige bedingt BRA Verzweige unbedingt BSR Verzweige in ein Unterprogramm (relativ) CHK Prüfe ein Datenregister gegen Grenzen DBcc Prüfe Bedingung. dekrementiere und verzweige JMP Springe an absolute Adresse JSR Springe an ein Unterprogramm NOP Keine Operation RESET Rücksetzen der Peripherie RTE Rückkehr von einer Exception RTR Rückkehr mit Laden der Flags RTS Rückkehr aus einem Unterprogramm Scc Setze ein Byte abhängig von einer Bedingung STOP Halte in der Verarbeitung an TRAP Gehe in eine Exception (Softwareinterrupt) TRAPV Prüfe, ob Flag gesetzt, evtl. Exception MCT 2-36

Adressierungsarten Die Art und Weise, wie auf die Operanden eines Befehls zugegriffen wird, bezeichnet man als Adressierungsarten. Die Kombinationsmöglichkeiten von Befehlen und Adressierungsarten bestimmt, wie einfach oder kompliziert ein Prozessor zu programmieren ist. Orthogonaler Befehlsatz Im Idealfall kann jede Adressierungsart für jeden Befehl angewendet werden. Eine solche Kombinationsmöglichkeit wird als orthogonaler Befehlsatz bezeichnet. MCT 2-37

Adressierungsarten des 68000 unmittelbare Adressierung (immediate) Bei dieser Adressierungsart ist der Operand eine Konstante, die direkt hinter dem OpCode im steht. MOVE.W #123,D1 Lade D1 mit 123 OpCode Operand Befehl Beispiel: MOVE #123, D1 Eine Konstante kann nur als Quelloperand auftreten, nie als Ergebnis einer Rechenoperation. Häufig wird diese Adressierung verwendet, um Register des Prozessors mit Startwerten oder Adressen vorzubelegen. In Assemblerschreibweise wird der Konstanten beim 68000 das Zeichen # vorangestellt. MCT 2-38

absolute Adressierung (direct, absolute) Die effektive Adresse des Operanden befindet sich als absolute Adresse direkt im Anschluß an den Opcode im. In der Assemblersyntax (68000) steht die Adresse ohne spezielle Kennzeichnung als Zahlenwert direkt hinter dem Opcode. OpCode $10000 Beispiel: MOVE $10000, D1 $10000 Operand MCT 2-39

Registeradressierung (register direct) Der Operand steht in einem der Prozessorregister. Die Adresse steht als kurze Registeradresse im OpCode. Als Register können universelle Register wie z.b. Datenregister oder Adreßregister, aber auch spezielle Register wie Stackpointer, Statusregister usw. angesprochen werden. Register OpCode D1 Beispiel: CLR D1 CLR D1 Lösche D1 MCT 2-40

Adressierungsarten, die auf Adressregister basieren: Registerindirekte Adressierung (register indirect) Die effektive Adresse steht in einem Register, üblicherweise in einem Adreßregister, der Operand steht im. Diese Adressierungsart hat gegenüber der absoluten Adressierung den Vorteil, daß beim Holen des Befehls die Operandenadresse nicht gelesen werden muß. Sie wird eingesetzt, wenn innerhalb eines Programmteils häufig auf dieselbe Operandenadresse zugegriffen wird. In Assemblersyntax wird der Name des zur Adressierung verwendeten Registers in Klammern geschrieben. MOVE D1,(A1) Lade die stelle, mit der Adresse in A1 mit D1. Register OpCode A1 Operand Beispiel: MOVE D1, (A1) MCT 2-41

Registerindirekte Adressierung mit Postinkrement Bei der Adressierung wird der Inhalt des verwendeten Adressregisters verändert. Beim Postinkrement wird nach der Verwendung der Adresse der Inhalt des Registers inkrementiert, wobei das Inkrement abhängig von der Datenbreite des adressierten Operanden die Werte 1, 2 oder 4 annehmen kann. Diese Anpassung der Schrittweite nennt man Skalierung, da das Inkrement mit dem skalaren Faktor 1,2 oder 4 multipliziert wird. Wird zum Beispiel mit dem Befehl MOVE.B D1, (A1)+ ein Byte vom Datenregister D1 in den kopiert, so wird A1 anschließend um den Wert 1 erhöht. Wird mit MOVE.L D1, (A1)+ ein Langwort, also 4 Byte kopiert, so wird A1 entsprechend um den Wert 4 inkrementiert. Nach der Befehlausführung zeigt daher das Adreßregister immer auf das nächste Datenwort im. Register Berechnung OpCode A1 + Skalierung 1, 2 oder 4 Operand Beispiel: MOVE D1, (A1)+ Diese Adressierungsart eignet sich für die Bearbeitung von Datenfeldern in einer Schleife, wie das folgende Beispiel zeigt. Soll das Feld nicht byteweise, sondern wortweise mit 1 belegt werden, so muß nur move.b durch move.w ersetzt werden, die Adreßberechnung passt sich automatisch an. MCT 2-42

Beispiel zur Verwendung der Adressierung mit Postinkrement Im folgenden Programmausschnitt werden die Elemente eines Feldes mit dem ; Wert 1 vorbelegt. FELDANF equ 10000 ; Startadresse des Feldes FELDEND equ FELDANF+100 ; Endadresse des Feldes move.l #FELDANF,A1 ; Startadresse ins Register A1 LOOP move.b #1, (A1)+ ; 1 in das akt. Feldelement cmp.l FELDEND, A1 ; Vergleich auf Feldende ble LOOP ; Verzweigung zu LOOP, falls ; Feldende noch nicht erreicht ist MCT 2-43

Registerindirekte Adressierung mit Prädekrement Das Gegenstück zum Postinkrement ist die Adressierung mit Prädekrement. Hierbei wird vor dem zugriff der Inhalt des Adressregisters dekrementiert. Diese Adressierungsart wird durch ein Minuszeichen vor dem Adreßregister symbolisiert. Wird als Adreßregister der Stackpointer verwendet, so ersetzen diese beiden Adressierungsarten die Befehle PUSH und POP zur Stackverwaltung Register Berechnung OpCode A1 - Skalierung 1, 2 oder 4 Operand Beispiel: MOVE D1, -(A1) MCT 2-44

Registerindirekte Adressierung mit Displacement Bei der Adressierung mit Displacement wird die effektive Adresse aus dem Inhalt eines Adreßregisters und einer konstanten Adreßdistanz (Displacement) berechnet. Das Displacement ist vorzeichenbehaftet (2er-Komplement) und erlaubt so eine positive und negative Adreßdistanz zur Basisadresse im Adreßregister. Diese Methode wird beim Zugriff auf Daten verwendet, die in einer festen Struktur im vorliegen. In der Assemblersyntax steht das Displacement als eine Zahl vor dem Adressregister. Register Berechnung OpCode Displacement A1 + Operand Beispiel: MOVE D1, $20(A1) MCT 2-45

Indizierte Adressierung mit Displacement Wird neben einer Konstanten noch eine variable Adreßdistanz benötigt, die erst zur Laufzeit eines Programms feststeht, so wird die indizierte Adressierung verwendet. Die effektive Adresse wird hier aus der Basisadresse in einem Adreßregister, einem konstanten und einem variablen Adreßversatz aus einem weiteren Register berechnet Register Berechnung OpCode Displacement A1 D0 + Operand + Beispiel: MOVE D1, $5(A1,D0) MCT 2-46

PC-relative Adressierung Eine interessante Variante ist die Verwendung des Befehlszählers (program counter) als Adreßregisters. Die effektive Adresse wird hier immer mit Bezug zum aktuellen Befehlszähler gebildet, d.h. alle Adressen werden nur mehr als relativer Adreßabstand zum Befehlszähler abgespeichert. Die befehlszählerrelative Adressierung ermöglicht es, ein übersetztes Programm mitsamt Daten und Konstanten im zu verschieben. Der Befehlszähler darf dabei natürlich nicht verändert werden, da sonst das Programm nicht mehr korrekt ablaufen würde. Von den bisher vorgestellten Methoden eignen sich daher nur die indizierte Adressierung oder die Adressierung mit Displacement zur PC-relativen Adressierung. Die Assemblersyntax verwendet die bereits besprochene Schreibweise, statt einem Adreßregister steht in Klammern das Symbol PC für ProgramCounter. (PC) disp Move $10(PC), D1 Beispiel: MOVE $10(PC), D1 Operand MCT 2-47

Mikrocomputertechnik 2.Mikroprozessor MCT 2-48