Maschinennahe Programmierung (Integrierter Assembler von Turbo Pascal)
|
|
|
- Rudolf Kraus
- vor 8 Jahren
- Abrufe
Transkript
1 Werner Rockenbach Herzog-Johann-Gymnasium Simmern/Hunsrück Maschinennahe Programmierung (Integrierter Assembler von Turbo Pascal) Der integrierte Assembler von Turbo Pascal erlaubt es, 8086-, Anweisungen direkt in den Pascal-Quelltext einzufügen. Die Syntax des integrierten Assemblers entspricht weitgehend der Syntax von Turbo Assembler bzw. Microsofts Macro-Assembler. Sein Befehlssatz umfaßt alle Befehle der und Prozessoren sowie die meisten Turbo- Assembler-Operatoren. Bei der maschinennahen Programmierung orientiert man sich direkt am jeweiligen Prozessor. Da die Intel-Prozessoren 8086, 8088, 80186, 80286, und alle den Befehlssatz des Prozessors 8086 verstehen, gelten alle Befehle für die 80x86- Prozessoren. 1. Modell Personalcomputer PC In der CPU (Central Processing Unit) werden Register als spezielle Bausteine bereitgestellt, um Daten und Befehle zu verarbeiten. Im RAM (Random Access Memory) werden Daten und Befehle abgelegt, auf die im Zuge der Verarbeitung wiederholt direkt zugegriffen werden muss. Als flüchtiger Speicher geht der Inhalt des RAM beim Abschalten des Computers verloren. Im Speicher ROM (Read Only Memory) wird die Information nur zum lesenden Zugriff bereitgestellt. Als Permanentspeicher bleibt die Speicherung dauernd erhalten. Die Peripherie umfaßt die Eingabegeräte (z.b. Tastatur, Maus, Lichtgriffel), Ausgabegeräte (z.b. Bildschirm, Drucker) und Externspeicher (z.b. Disketteneinheit, Festplatteneinheit). Über die entsprechenden Schnittstellen bzw. Gerätetreiber wird die Verbindung zwischen externen Einheiten (Peripherie) und internen Einheiten kontrolliert. Der Systembus umfaßt alle Leitungen zur Übertragung von Daten, Befehlen und Adressen. CPU Prozessor 8086 mit Registern Peripherie Speicher RAM Systembus Speicher ROM Eingabe-/ Ausgabe-Bausteine 1
2 2. Register des Prozessors 8086 Die Register sind zwei Byte (16 Bit, ein Wort) breit, auf dem Prozessorchip untergebracht und zum schnellen, spezialisierten Zugriff vorgesehen Allzweckregister AX, BX, CX, DX Akkumulator (AX), Basisregister (BX), Zählregister (CX) und Datenregister (DX) werden als Allzweckregister bezeichnet. Bei allen Registern des 8086-Prozessors handelt es sich um 16- Bit-Register. Die vier Allzweckregister lassen sich zusätzlich in zwei 8-Bit-Register unterteilen und ansprechen. AX (Accumulator) AL (Accumulator low) AH (Accumulator high) BX (Base-Register) BL (Base-Register low) BH (Base-Register high) CX (Count-Register) CL (Count-Register low) CH (Count-Register high) DX (Data-Register) DL (Data-Register low) DH (Data-Register high) AH AL AX Akkumulator (Addition, Subtraktion, Eingabe, Ausgabe) BH BL BX Basisregister (Zeiger auf Basis (Data-Segment)) CH CL CX Zählregister (Schleife, Shift, Rotation) DH DL DX als Erweiterung für die Daten von AX Der Akkumulator (AX-Register) wird hauptsächlich bei allen arithmetischen Operationen eingesetzt. Standardmäßig muss es bei der Multiplikation und Division eingesetzt werden. Das Register sollte aber auch bei der Addition, Subtraktion sowie bei logischen Vergleichen eingesetzt werden, da arithmetische Aufgaben mit diesem Register effizienter bearbeitet werden können. Das Basis-Register (BX-Register) erlaubt es, direkt auf den Arbeitsspeicher zuzugreifen. Es wird als Zeiger auf den Inhalt des Speichers verwendet, Das Count-Register (CX-Register) ist ein 16-Bit-Register zur Kontrolle von Programmschleifen. Schleifen können effizient mit dem LOOP-Befehl formuliert werden. Dieser Befehl verwendet standardmäßig das CX-Register und subtrahiert von dessen Inhalt den Wert eins. Nach dieser Operation wird das CX-Register mit Null verglichen. Ist CX ungleich Null, wird zu dem im LOOP-Befehl angegebenen Namen gesprungen. Ist das CX-Register gleich Null, geht es mit dem folgenden Befehl nach LOOP weiter. Das Daten-Register (DX-Register) wird hauptsächlich in Verbindung mit 32-Bit- Multiplikations- und Divisionsoperationen genutzt. Das Register wird dann zusammen mit dem AX-Register verwendet Adressregister SP, BP, SI, DI Der Stackpointer (SP) zeigt stets auf die aktuelle Position im Stacksegment. Die physikalische Adresse zum Zugriff auf das Stacksegment wird durch das Registerpaar SS:SP dargestellt. Wenn Unterprogramme aufgerufen werden, dann speichert das System den Inhalt des Befehlszeigers (IP) auf dem Stack ab, um nach der Abarbeitung des Unterprogramms wieder an der richtigen Speicherstelle im Programm weiterarbeiten zu können. Diese Speicherstelle ist der nächste Befehl nach dem Unterprogrammaufruf. 2
3 Der Stack oder Stapel ist ein Zwischenspeicher, mit dem der Prozessor und der Programmierer kurzzeitig Daten zwischenspeichern kann. Das Stacksegment kann nur wortweise (2 Byte) beschrieben (PUSH) oder gelesen (POP) werden. Der Stack arbeitet nach dem LIFO-Prinzip (last in - first out). Mit dem Befehl PUSH wird ein Registerinhalt auf den Stack gelegt. Dabei wird der Stackpointer um den Wert zwei verringert. Mit dem Befehl POP wird ein Wert vom Stack geholt. Dabei wird der Stackpointer um den Wert zwei erhöht. Der Stack wächst also von den hohen zu den niedrigen Adressen. Will man im Stacksegment auf zwischen gespeicherte Werte oder Parameter zugreifen, so wird der Base-Pointer (BP) benötigt. Wie die anderen Zeige- und Indexregister BX, SI und DI kann auch BP als Index verwendet werden. Die beiden Indexregister SI (Source-Index) und DI (Destination-Index) unterstützen als Offsetregister die Adressierung im Datensegment und Extrasegment. SP SP Register für Stapel-Zeiger (Stack-Pointer) BP BP Basisregister (Stacksegment, Base-Pointer) SI SI Indexregister (Quellzeiger, Source-Index) DI DI Indexregister (Zielzeiger, Destination-Index) 2.3. Befehlsregister (IP), Statusregister Der Befehlszeiger (IP), als Instruction-Pointer oder auch als Programm-Counter bezeichnet, adressiert in Verbindung mit dem Codesegment den nächsten auszuführenden Maschinenbefehl. Wird das Programm der Reihe nach Befehl für Befehl abgearbeitet, so enthält der Befehlszeiger den Offset der Speicheradresse, die den nächsten auszuführenden Maschinenbefehl beinhaltet. Mit dem Codesegment zusammen ergibt das Registerpaar CS:IP eine 32-Bit-Adresse, deren Inhalt beim nächsten HOLEN-Zyklus in das Befehlsregister geladen wird. Der Befehlszeiger zeigt damit immer wieder auf den nächsten im Codesegment befindlichen Maschinenbefehl. Bei einem Unterprogrammaufruf wird eine andere Speicheradresse in den Befehlszeiger geladen. Der Befehlszeiger kann im Gegensatz zu den anderen Registern nicht vom Programmierer angesprochen werden. Nur durch Sprungbefehle und Unterprogrammaufrufe kann der Befehlszeiger verändert werden. IP IP Befehlsregister (Programmzähler, Instruction- Pointer) Flags Statusregister mit 8 Flags (O, D, I, T, S, Z, A, P, C) Das Statusregister (Flagregister) zeigt Informationen über das Ergebnis eines Maschinenbefehls an. Das Statusregister ist ein 16-Bit-Register, von dem 9 Bits (Flags) benötigt werden. Steht ein Flag auf 1, so trifft der Zustand zu, den das Flag vertritt. Steht es auf 0, so trifft der Zustand nicht zu. Diese 9 Flags unterteilen sich in 6 Statusflags und 3 Kontrollflags. Die restlichen Flags werden von den Nachfolgeprozessoren des 8086 benutzt. 3
4 Statusflags: Kontrollflags: Carry-, Parity-, Auxiliary-, Zero-, Sign-, Overflowflag Trap-, Interrupt-, Directionflag O D I T S Z A P C Overflow-Flag Direction-Flag Interrupt-Flag Trap-Flag Sign-Flag Zero-Flag Auxiliary-Flag Parity-Flag Carry-Flag 2.4. Flags Carry-Flag (CF) CF = 1 Wertebereich überschritten Das Carry-Flag (BitNr. 0) wird gesetzt, wenn nach einer Addition oder Subtraktion der Wertebereich in einem Register überschritten wird. Dieses Flag zeigt somit den Übertrag aus dem höchstwertigen Bit an. Findet ein Übertrag statt, so steht das Carry-Flag auf 1. Der durch das Carry-Flag bedingte Sprung heißt jump on carry = jc (springe, wenn Carry-Flag gesetzt, d.h. CF = 1), bzw. jump not carry = jnc (springe, wenn Carry-Flag nicht gesetzt, d.h. CF = 0). Das Carry-Flag kann durch den Befehl CLC gelöscht (CF = 0) und durch STC gesetzt (CF = 1) werden Parity-Flag (PF) PF = 1 Ergebnis einer Operation enthält in den niederwertigen 8 Bits eine gerade Anzahl an gesetzten Bits Das Parity-Flag (BitNr. 2) dient zur Fehlerprüfung bei der Datenübertragung über die serielle Schnittstelle. Das Flag ist auf 1, wenn das Ergebnis einer Operation in den niederwertigen 8 Bits eine gerade Anzahl an gesetzten Bits enthält. Bei einer ungeraden Anzahl von gesetzten Bits wird das Parity-Flag auf 0 gesetzt. Der durch das Parity-Flag bedingte Sprung heißt jump on parity = jp (springe, wenn Parität gerade, d.h. PF = 1), bzw. jump not parity = jnp (springe, wenn Parität ungerade, d.h. PF = 0) Auxiliary-Flag (AF) AF = 1 Übertrag aus Bit 3 nach Bit 4 bei 8-Bit-Operationen Dieses Flag ist dem Carry-Flag ähnlich. Es wird mit dem Hilfsübertrag ein Übertrag von Bit 3 nach Bit 4 bei einer 8-Bit-Operation angezeigt. Bei einem Übertrag steht AF auf 1. Der Hilfsübertrag wird hauptsächlich in der BCD-Arithmetik verwendet Zero-Flag (ZF) ZF = 1 Ergebnis einer Operation ist null Das Zero-Flag zeigt nach einer Operation an, ob das Ergebnis null ist oder nicht. Beim Ergebnis 0 steht das Zero-Flag auf 1. 4
5 Das Flag wird mit dem Schleifenbefehl LOOP eingesetzt, bei Vergleichsbefehlen und allen arithmetischen Operationen. Bei einem Vergleich von Zahlen werden diese intern subtrahiert, ohne die jeweiligen Register zu verändern. Ist das Ergebnis der Subtraktion null, so sind beide Zahlen gleich groß, das Zero-Flag wird gesetzt Sign-Flag (SF) SF = 1 Ergebnis ist negativ SF = 0 Ergebnis ist null oder positiv Das höchstwertige Bit einer Zahl wird zur Darstellung des Vorzeichens verwendet. Nach einer arithmetischen oder logischen Operation befindet sich das höchstwertige Bit des Ergebnisses im Sign-Flag. Das Sign-Flag zeigt somit an, ob das Ergebnis positiv oder negativ ist. Ist das Ergebnis negativ, so wird das Sign-Flag auf 1 gesetzt. Ist das Ergebnis positiv oder null wird das Vorzeichenflag auf null gesetzt Overflow-Flag (OF) OF = 1 Vorzeichenbit zerstört Wenn bei einer arithmetischen Operation ein Übertrag auf das höchstwertige Bit erfolgt, wird das Overflow-Flag auf 1 gesetzt. Dies ist nur bei Werten mit Vorzeichen von Bedeutung. Das Overflow-Flag wird also gesetzt, wenn das Vorzeichenbit durch einen Übertrag verändert wird Trap-Flag (TF) TF = 1 Nach jedem Befehl rufe den Interrupt 1 auf, und verzweige in die dazugehörige Unterbrechungsroutine. Das Trap-Flag versetzt den Prozessor in den Einheitsschrittmodus. Durch das Trap-Flag wird der Prozessor angewiesen, nach jedem Befehl im Programm den Interrupt 1 aufzurufen Interrupt-Enable-Flag (IF) IF = 1 Alle Unterbrechungen zugelassen IF = 0 Keine maskierbaren Unterbrechungen zugelassen Der Prozessor kann durch äußere Einflüsse (Interrupts) bei der Abarbeitung eines Programms unterbrochen werden. Gesetzt wird das Interrupt-Enable-Flag mit STI, gelöscht wird es mit CLI Direction-Flag (DF) DF = 1 Stringverarbeitung nach aufsteigenden Adressen (SI und DI werden erhöht) DF = 0 Stringverarbeitung nach absteigenden Adressen (SI und DI werden verringert) 3. Speicheraufbau Ein Hauptspeicher bzw. RAM von 1 MB (Megabyte) hat Speicherplätze, die von bzw. 0h - FFFFFh durchnumeriert sind. Der RAM ist in 16 Speicherbereiche unterteilt, die jeweils 64 KB umfassen und als Segmente bezeichnet werden. Der Prozessor holt sich Daten und Anweisungen aus dem Arbeitsspeicher. Damit der Prozessor zwischen dem Anweisungsteil mit den Maschinenbefehlen und dem Datenteil mit den Variablen unterscheiden kann, werden die Daten in verschiedene Speicherbereiche getrennt. Diese Speicherbereiche werden als Segmente bezeichnet. Maschinenbefehle werden im Code-Segment, die Variablen und Konstanten im Daten-Segment gespeichert. Wenn der 5
6 Prozessor nun bestimmte Daten aus einem Segment lesen möchte, greift er dazu auf das dazugehörige Register zu. Jedem Segment wird standardmäßig ein Register zugeordnet. Die physikalische Adresse wird aus dem Segment und dem Offset gebildet. Das Segment gibt die Basis an und das Offset den Adressabstand von der Basis zur jeweiligen Speicherstelle. Offsetregister Arbeitsspeicher Segmentregister Ende Arbeitsspeicher IP SI / DI / BX SI / DI / BX SP / BP Befehle Daten zusätzlicher Datenspeicher zusätzlicher Programmspeicher Code-Segment CS Daten-Segment DS Extra-Segment ES Stack-Segment SS Anfang Arbeitsspeicher hexadezimal dezimal FFFFF FFFFE FFFFD FFFFC die restlichen 936 KB Speicher... (Segmente 1-15) FFFF FFFE FFFD der untere 64 KB-Bereich (Segment 0)
7 4. Beispiele 4.1. Wertzuweisung (Addition/Subtraktion) procedure wertzuweisung; procedure wertzuweisung; var a, b, c : word; var a, b, c : word; a := 20; b := 12; mov a, 20 { a! 20 } c := a + b; mov b, 12 { b! 12 } a := a - b; mov ax, a { ax! a } Ausgabe (a, b, c) add ax, b { ax! ax+b } mov c, ax {c! ax } mov ax, a { ax! a } sub ax, b {ax! ax-b } mov a, ax {a! ax } Ausgabe(a,b,c) Assembler-Blöcke werden durch eine -Anweisung eingeleitet und mit end abgeschlossen. Der Befehl mov a, 20 ist ein Befehl mit Direktwertadressierung (Schiebe den Wert 20 in den Speicherplatz mit der Bezeichnung a, a! 20). Der Befehl mov ax, a ist ein Befehl mit direkter Adressierung (Schiebe den Wert im Speicherplatz a in den Akkumulator ax, ax! a ). Der Befehl add ax, b addiert zum Akkumulator den Wert aus dem Speicherplatz b (ax! ax + b). Der Befehl sub ax, b subtrahiert vom Akkumulator den Wert aus dem Speicherplatz b (ax! ax - b). mov Ziel, Quelle add Ziel, Quelle sub Ziel, Quelle Der mov-befehl kopiert den Inhalt des Quellenoperanden in den Zieloperanden. Beide Operanden müssen vom gleichen Typ sein (byte/byte, word/word). Als Zieloperand kann jedes Register oder eine Speichervariable angegeben werden. Der Quelloperand kann auch aus einem Direktwert bestehen. Der add-befehl addiert die Inhalte des Ziel- und Quelloperanden und legt das Ergebnis im Zieloperanden ab. Der sub-befehl subtrahiert den Inhalt des Quelloperanden vom Inhalt des Zieloperanden und speichert das Ergebnis im Zieloperanden ab. 7
8 unit UZuweisung; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(tform) Panel1: TPanel; GroupBox1: TGroupBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; aedit: TEdit; bedit: TEdit; cedit: TEdit; GroupBox2: TGroupBox; StartButton: TButton; EndeButton: TButton; procedure StartButtonClick(Sender: TObject); procedure EndeButtonClick(Sender: TObject); var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.StartButtonClick(Sender: TObject); procedure Ausgabe(a,b,c:word); aedit.text:=inttostr(a); bedit.text:=inttostr(b); cedit.text:=inttostr(c); procedure Wertzuweisung; var a,b,c:word; mov a,20 (* Eingabe a = 20 *) mov b,12 (* Eingabe b = 12 *) mov ax,a (* Akkumulator ax = a *) add ax,b (* Addition ax = ax + b *) mov c,ax (* Speicherung c = ax = a + b *) mov ax,a (* Akkumulator ax = a *) sub ax,b (* Subtraktion ax = ax - b *) mov a,ax (* Speicherung c = ax = a - b *) Ausgabe(a,b,c); Wertzuweisung; procedure TForm1.EndeButtonClick(Sender: TObject); close 8
9 4.2. Wertzuweisung (8-Bit-Multiplikation) Der mul-befehl multipliziert den Wert im Quelloperanden mit dem Wert im Akkumulator. Der Quelloperand kann ein CPU-Register oder eine Variable sein. Die Byte-Multiplikation multipliziert zwei vorzeichenlose 8-Bit-Werte miteinander und legt das Ergebnis im AX-Register ab. Ein Operand muss sich dabei im AL-Register befinden. Der zweite Operand, der aus einem 8-Bit-Register oder einer Byte-Speicherstelle bestehen muss, wird beim mul-befehl mit angegeben. mul Quelle Der mul-befehl multipliziert den Quelloperanden mit dem AL-Register (Byte-Multiplikation) oder dem AX-Register bei einer Wort- Multiplikation Multiplikand * Multiplikand = Ergebnis AL (Byte) * Quelloperand (Byte) = AX (Wort) procedure wertzuweisung; procedure wertzuweisung; var a, b : byte; var a, b : byte; c : word; c : word; a := 20; b := 12; mov a, 20 { a! 20 } c := a * b; mov b, 12 { b! 12 } Ausgabe(a,b,c) mov al, a { al! a } mul b { ax! al*b } mov c, ax {c! ax } Ausgabe(a,b,c) 4.3. Wertzuweisung (8-Bit-Division) Die Byte-Division dividiert den Inhalt des AX-Registers durch einen 8-Bit-Wert. Das Ergebnis der Operation wird im AX-Register abgelegt. Das ganzzahlige Ergebnis der Division befindet sich im AL-Register, der Divisionsrest im AH-Register. Der Divisor, der aus einem 8-Bit-Register oder einer Byte-Speicherstelle besteht, muss beim Aufruf des div-befehls angegeben werden. div Quelle Der div-befehl dividiert das AX-Register durch den Quelloperanden (8-Bit-Divison) Dividend / Divisor = Quotient Rest AX (16-Bit) / Operand (8-Bit) = AL AH 9
10 procedure wertzuweisung; procedure wertzuweisung; var a : word; var a : word; b, c, d : byte b, c, d : byte; a := 2000; b := 120; mov a, 2000 { a! 2000 } c := a div b; mov b, 120 { b! 120 } d := a mod b; mov ax, a { ax! a } Ausgabe(a,b,c,d) div b { ax! ax / b } mov c, al { c! al } mov d, ah {c! ah } Ausgabe(a,b,c,d) 4.4. Einseitige Verzweigung procedure einseitige_verzweigung; var a, b, c : word; if a > b then c := b; b := a; a := c Ausgabe(a,b) procedure einseitige_verzweigung; var a, b, c : word; mov ax, a cmp ax, b mov ax, b mov c, ax mov ax, a mov b, ax mov ax, c mov a, Ausgabe(a,b) cmp Ziel, Quelle Der CMP-Befehl vergleicht zwei Operanden miteinander. Beide Operanden müssen gleich sein (Byte, Byte oder Word, Word). Das Ergebnis des Vergleichs wird im Statusregister angezeigt. Der Vergleich erfolgt durch eine interne Subtraktion, d.h. Ziel - Quelle. (CMP = CoMPare two operands) Der Bezeichner eines lokalen Labels besteht aus einem gefolgt von einem oder mehreren Buchstaben (A,.., Z, a,..,z), Ziffern (0,..,9), Unterstrichen (_) oder weiteren Klammeraffen(@). Bedingte Sprunganweisungen: Jede der Sprunganweisungen testet die Flags im Statusregister und führt einen Sprung nach Ziel aus, wenn die angegebene Bedingung erfüllt ist. 10
11 Zusammenstellung der wichtigsten Sprungbefehle jmp z unbedingter Sprung nach Speicherplatz z jg z Sprung, falls Ergebnis > 0 (Greater than zero) jng z Sprung, falls Ergebnis 0 (Not Greater than zero) je z Sprung, falls Ergebnis = 0 (Equal to zero) jne z Sprung, falls Ergebnis 0 (Not Equal to zero) jl z Sprung, falls Ergebnis < 0 (Less than zero) jnl z Sprung, falls Ergebnis 0 (Not Less than zero) Befehl: Sprung wenn... geprüfte Statusflags: JA / JNBE größer / nicht-kleiner-gleich CF = 0 und ZF = 0 above / not-below-equal JAE / JNB größer-gleich / nicht kleiner CF = 0 above-equal / not-above-equal JB / JNAE kleiner / nicht-größer-gleich CF = 1 below / not-above-equal JBE / JNA kleiner-gleich / nicht größer CF = 1 oder ZF = 1 below-equal / not above JE / JZ gleich / null ZF = 1 equal / zero JG / JNLE größer / nicht-kleiner-gleich ZF = 0 greater / not-less-equal JGE / JNL größer-gleich / nicht-kleiner SF gleich OF greater-equal / not-less JL / JNGE kleiner / nicht-größer-gleich SF ungleich OF less / not-greater-equal JLE / JNG kleiner-gleich / nicht größer ZF = 1 less-equal / not-greater JNE / JNZ nicht-gleich / nicht-null ZF = 0 not-equal / not-zero JC Carry Flag (CF) gesetzt CF = 1 Carry JNC Carry Flag (CF) nicht gesetzt CF = 0 not-carry JNP / JPO keine Parität / Parität ungerade PF = 0 not-parity / Parity-odd JNO kein Überlauf OF = 0 not-overflow JNS kein Vorzeichen (positiv) SF = 0 not-sign JO Überlauf OF = 1 Overflow JP / JPE Parität / Parität gerade Parity / Parity-even PF = 1 Die Vertauschung der Variablen a, b kann durch den XCHG-Befehl vereinfacht werden. xchg Quelle, Ziel XCHG vertauscht den Inhalt der Operanden. Beide Operanden müssen gleich groß sein, einer von ihnen muss ein Register sein. (exchange = Vertausche Inhalt der Operanden) 11
12 procedure einseitige_verzweigung; var a, b, c : word; mov ax, a cmp ax, b mov ax, b xchg ax, a mov b, Ausgabe(a,b) 4.4. Zweiseitige Verzweigung procedure zweiseitige_verzweigung; var a, b, c : word; if a > b then c := a else c := b; Ausgabe(c); procedure zweiseitige_verzweigung; var a, b, c : word; mov ax, a cmp ax, b mov ax, a mov c, mov ax, b mov c, Ausgabe(c); jmp Ziel Der JMP-Befehl bewirkt einen Sprung auf eine Adresse im Programm, die mit dem Zieloperanden angegeben ist. (JuMP = Unbedingter Sprung zur Zieladresse) 12
13 4.5. Gezählte Wiederholung (Summe der ersten n Zahlen) Eingabe n s! 0 für tue k! 1 bis n s! s + k Ausgabe s procedure gezaehlte_wiederholung; procedure gezaehlte_wiederholung; var k, n, s : word; var k, n, s : word; Eingabe(n); Eingabe(n); s := 0; for k := 1 to n do s := s + k; mov s, 0 Ausgabe(s) mov k, mov ax, n cmp ax, k inc k mov ax, s add ax, k mov s, Ausgabe(s) Die gezählte Wiederholung kann auch mit dem LOOP-Befehl formuliert werden. LOOP Adresse Der LOOP-Befehl subtrahiert vom CX-Register den Wert 1 und überprüft anschließend das CX-Register auf null. Ist das CX-Register nicht null, wird zu der angegebenen Adresse verzweigt. Ist der Wert null, wird mit dem nächsten Befehl nach LOOP fortgeführt. Das CX-Register wird mit dem Schleifenzähler geladen. (LOOP until count complete = Springe zur Adresse, solange das CX- Register nicht null) 13
14 procedure gezaehlte_wiederholung; var s, k, n : word; Eingabe(n); mov s, 0 mov cx, mov ax, s add ax, cx mov s, ax Ausgabe(s) 4.6. Abweisende Wiederholung (Ganzzahliger Rest r = a mod b) Eingabe a Eingabe b solange tue a b a! a - b r! a Ausgabe r procedure abweisende_wiederholung; procedure abweisende_wiederholung; var a, b, r : word; var a, b, r : word; while a >= b do a := a - b; r := mov ax, a Ausgabe(r) cmp ax, b mov ax, a sub ax, b mov a, mov ax, a mov r, ax Ausgabe(r) 14
15 4.7. Annehmende Wiederholung (Multiplikation p = a b mit Hilfe der Addition) Eingabe a Eingabe b p! 0 wiederhole p! p + a b! b - 1 bis b = 0 Ausgabe p procedure abweisende_wiederholung; procedure abweisende_wiederholung; var a, b, p : word; var a, b, p : word; p := 0; repeat p := p + a; mov p, 0 b := b - mov ax, p until b = 0; add ax, a Ausgabe(p) mov p, ax dec b mov ax, b cmp ax, 0 Ausgabe(p) 5. Unterprogramme a) Funktionen mit Werteparameter function summe(a, b : word) : word; summe := a + b function summe(a, b : word) : word; mov ax, a add ax, b ax end wird das Funktionsergebnis zurückgeliefert und auf den Stack gelegt. 15
16 b) Funktionen mit Variablenparameter function summe(var a, b : word) : word; summe := a + b function summe(var a, b : word) : word; les bx, a mov ax, ES : [BX] les bx, b add ax, ES : [BX] ax end Der integrierte Assembler behandelt var-parameter immer als 32-Bit-Zeiger mit einer Größe von vier Bytes. Möchte man auf den Inhalt eines var-paramters zugreifen, muss zunächst der 32-Bit-Zeiger geladen werden, dann muss auf die Speicherstelle zugegriffen werden, auf die der Zeiger verweist. LES Ziel, Quelle Der LES-Befehl überträgt die Segmentadresse des Quelloperanden in das Extrasegment ES und die Offsetadresse des Quelloperanden in den Zieloperanden. (LES = Load ES-register) 6. Aufgaben 6.1. Übersetze jeweils die gegebene FUNCTION in ein Assembler-Programm ganzzahlige Division function division(a, b : word) : word; var x, y, q : word; x := a; y := b; q := 0; repeat x := x - y; q := q + 1 until x < y; division := q Größter gemeinsamer Teiler ggt(a,b) function ggt(a, b : word) : word; var x, y : word; x := a; y := b; while x <> y do if x > y then x := x - y else y := y - x; ggt := x 16
17 Quadratzahlen function quadrat(n : word) : word; var s, k : word; s := 1; k := 1; while k <> n do s := s + 2*k + 1; k := k + 1 quadrat := s Summe der ersten Quadratzahlen s = n 2 function summe_quadratzahlen(n : word) : word; var summe : word; summe := 0; for k := 1 to n do summe := summe + sqr(k); summe_qudratzahlen := summe 7. Literatur (1) Baumann, Hermes, Reimer "Vom Programm zum Prozessor - Arbeitshefte Informatik" Stuttgart 1994 Klett-Verlag ISBN (2) Kaier "Maschinennahe Programmierung unter MS-DOS" Stuttgart 1991 Klett-Verlag ISBN (3) "Turbo Pascal für Windows" Programmierhandbuch Starnberg 1991 Borland 17
Assembler - Einführung 1. Teil. Vorstellung der wichtigsten Grundbegriffe und Grundkenntnisse sowie der wichtigsten Hardwarekomponenten
Assembler - Einführung 1 Teil Vorstellung der wichtigsten Grundbegriffe und Grundkenntnisse sowie der wichtigsten Hardwarekomponenten 1 Einleitung Wenn man durchs Internet surft kann man den Eindruck gewinnen,
Zusammenfassung der Assemblerbefehle des 8051
Zusammenfassung der Assemblerbefehle des 8051 Seite 1 von 5 Befehl Bezeichnung Syntax Wirkung / Beispiel Befehle zum Datentransfer MOV Move MOV [Ziel],[Quelle] MOV P1,P3 Kopiert den Inhalt von P3 nach
TECHNISCHE HOCHSCHULE NÜRNBERG GEORG SIMON OHM Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten, z.b. Befehl
Kap.2 Befehlsschnittstelle. Prozessoren, externe Sicht
Kap.2 Befehlsschnittstelle Prozessoren, externe Sicht 2 Befehlsschnittstelle 2.1 elementare Datentypen, Operationen 2.2 logische Speicherorganisation 2.3 Maschinenbefehlssatz 2.4 Klassifikation von Befehlssätzen
Bekannte Druckfehler im Buch Embedded Controller Eine Einführung in Hard- und Software
Bekannte Druckfehler im Buch Embedded Controller Eine Einführung in Hard- und Software Stand. September Seite 9 Bild. Am Ausgang des Multiplexers fehlt ein D, um ihn als Datenausgang zu kennzeichnen. Seite
Mikrocomputertechnik. Thema: Der Aufbau des XC888-Mikrocontrollers -Teil 1 -
Mikrocomputertechnik Thema: Der Aufbau des XC888-Mikrocontrollers -Teil 1 - Mikroprozessor-Achritekturen Folie 2 Mikroprozessor-Achritekturen Klassifizierung anhand Wortbreite CPU-Architektur und Busleitungen
TIn 1: Feedback Laboratories. Lecture 4 Data transfer. Question: What is the IP? Institut für Embedded Systems. Institut für Embedded Systems
Mitglied der Zürcher Fachhochschule TIn 1: Lecture 4 Data transfer Feedback Laboratories Question: What is the IP? Why do we NEED an IP? Lecture 3: Lernziele Moving data, the why s and wherefores Moving
MOP: Befehlsliste für den Mikrocontroller 8051
Beuth Hochschule Berlin FB VI, Labor für Digitaltechnik MOP: Befehlsliste für den Mikrocontroller 8051 Erläuterung der Operanden Operand A addr11 addr16 bit /bit C #data #data16 direct DPTR PC Ri Rn rel
9. Assembler: Der Prozessor Motorola 68000
9.1 Architektur des Prozessors M 68000 9.2 Adressierungsarten des M 68000 9-1 9.1 Beschreibung des Prozessors M 68000 Charakteristische Daten des 56 Maschinenbefehle 14 Adressierungsarten Zweiadressmaschine
x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013
x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013 1 / 53 Inhaltsverzeichnis 1 Einführung 2 Assembler Syntax, Register und Flags 3 Hauptspeicher 4 Stack 5 Assemblerbefehle
Die Mikroprogrammebene eines Rechners
Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten, z.b. Befehl holen Befehl dekodieren Operanden holen etc.
1.7 Assembler Programmierung
1.7 Assembler Programmierung Die nach außen sichtbare Programmierschnittstelle eines Prozessors ist der Befehlscode. Dies ist eine binäre Dateninformation, die vom Prozessor Byte für Byte abgearbeitet
Assembler Kontrollstrukturen
Assembler Kontrollstrukturen Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler Kontrollstrukturen 1/21 2008-04-03 Kontrollstrukturen
Der 8086/88 als Rechenkünstler
Der 8086/88 als Rechenkünstler In diesem Referat wird jene Gruppe von Befehlen besprochen, denen der Computer seinen Namen verdankt ("to compute" = engl. rechnen). Dies sind die Arithmetik- und Logikbefehle
Einführung in die Informatik
Einführung in die Informatik Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik [email protected] http://www.miwilhelm.de Raum 2.202 Tel. 03943 / 659 338 FB
Assembler DOS (Beta 1) Copyright 2000 Thomas Peschko. Assembler II - DOS. ASSEMBLER Arbeiten mit Dateien und Daten.
Assembler II - DOS ASSEMBLER Arbeiten mit Dateien und Daten [email protected] 1 Wer nun den Eindruck hat, dass unsere Programme hauptsächlich nur Unterprogramme vor ihren Karren spannen und sich darauf beschränken
Kap 4. 4 Die Mikroprogrammebene eines Rechners
4 Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten (Befehl holen, Befehl dekodieren, Operanden holen etc.).
Rechnerstrukturen 1: Der Sehr Einfache Computer
Inhaltsverzeichnis 1: Der Sehr Einfache Computer 1 Komponenten.................................... 1 Arbeitsweise..................................... 1 Instruktionen....................................
Von-Neumann-Architektur
Von-Neumann-Architektur Bisher wichtig: Konstruktionsprinzip des Rechenwerkes und Leitwerkes. Neu: Größerer Arbeitsspeicher Ein- und Ausgabewerk (Peripherie) Rechenwerk (ALU) Steuerwerk (CU) Speicher...ppppp...dddddd..
05. Assembler-Programmierung. Datenstrukturen des ATMega32. Literatur
0. Assembler-Programmierung Datenstrukturen des ATMega32 Literatur mikrocontroller.net avr-asm-tutorial.net asm Alles über AVR AVR-Assembler-Einführung Assembler AVR-Aufbau, Register, Befehle 2008: ouravr.com/attachment/microschematic/index.swf
1 Eigenes zu Interrupts und...
1 Eigenes zu Interrupts und... Abfragebetrieb = polling Unterbrechungsbetrieb 1. Interrupt = Unterbrechung 2. IRQ = Interrupt-Request = Interrupt-Anforderung = Unterbrechungsanforderung 3. ISR = Interrupt-Service-Routine
FUNDAMENTALS OF DIGITAL COMPUTERS. Programmiersprache Assembler. Eine strukturierte Einführung
FUNDAMENTALS OF DIGITAL COMPUTERS Kurs: Tim00agr/ BA Mannheim Dozent: Rachid Elyoussfi SS 02 Auszug von Kapitel 3 6 aus: Programmiersprache Assembler Eine strukturierte Einführung Reiner Backer, ISBN:
Rechnergrundlagen SS Vorlesung
Rechnergrundlagen SS 2007 3. Vorlesung Inhalt Zahlensysteme Binäre Darstellung von Integer-Zahlen Vorzeichen-Betrag Binary Offset 1er-Komplement 2er-Komplement Addition und Subtraktion binär dargestellter
Prinzipieller Aufbau und Funktionsweise eines Prozessors
Prinzipieller Aufbau und Funktionsweise eines Prozessors [Technische Informatik Eine Einführung] Univ.- Lehrstuhl für Technische Informatik Institut für Informatik Martin-Luther-Universität Halle-Wittenberg
Befehlssatz der Mikrocontroller der 51er -Familie
Befehlssatz der Mikrocontroller der 51er -Familie Abkürzungen: Mikrocontrollerfamilie 8051 Befehlssatz A : Akkumulator Rn : Register R0..R7 Ri : R0 oder R1 dadr : direkte Byte-Adresse im int. Speicher
8. Intel IA-32 Prozessoren: Befehlsübersicht
8. Intel IA-32 Prozessoren: Befehlsübersicht Ganzzahlarithmetik Kontrollstrukturen Bitmanipulation Schieben und Rotieren 20.10.2007 Meisel 1 8.1 Ganzzahl-Arithmetik 8.1.1 Übersicht add adc sub sbb imul
Assembler (NASM) Crashkurs von Sönke Schmidt
Sönke Schmidt (NASM) Crashkurs von Sönke Schmidt Berlin, 4.11.2015 Meine Webseite: http://www.soenke-berlin.de NASM Was ist das? nach Wikipedia: Ein ist ein Programmierwerkzeug, das ein in maschinennaher
Daniel Betz Wintersemester 2011/12
Daniel Betz Wintersemester 2011/12 Digitally signed by [email protected] Date: 2011.12.04 17:24:40 +01'00' Insgesamt 16 Register von je 16 Bit (=WORD) Breite Untere 8 Register auch als 2 Register
Vorlesung "Struktur von Mikrorechnern" (SMR)
2 16-Bit Bit-Prozessoren 2.4 Datentypen in PASCAL 2.5 PIN-Funktionen beim I 8086 2.5.1 Adressbus 2.5.2 Multiplexbus 2.5.3 Interruptlogik 2.5.4 Betriebsmodi 2.6 Mehrrechnerkonzept Inhaltsverzeichnis Kapitel
INFORMATIK Oberstufe. Funktionsweise eines Rechners
INFORMATIK Oberstufe Funktionsweise eines Rechners Lehrplan Inf 12.3 (ca. 17 Std.): Grundlegende Kenntnisse über den Aufbau eines Rechners und seiner prinzipiellen Funktionsweise helfen den Schülern, den
2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 14. Okt. 2015 Computeraufbau: nur ein Überblick Genauer: Modul Digitale Systeme (2. Semester) Jetzt: Grundverständnis
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
unit sudoku; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TCvD_Sudoku = class(tform) Panel1: TPanel; Bevel1: TBevel; Bevel2:
Befehlssatz der Mikrocontroller der 51er -Familie
Befehlssatz der Mikrocontroller der 51er -Familie Abkürzungen: Mikrocontrollerfamilie 8051 Befehlssatz A : Akkumulator Rn : Register R0..R7 Ri : R0 oder R1 dadr : direkte Byte-Adresse im int. Speicher
10. Die Adressierungsarten des MSP 430
10. Die Adressierungsarten 10.1 Übersicht über die Adressierungsarten 10.2 -Operanden 10.3 Indexregister mit Distanz 10.4 Symbolische (relativ zum ) 10.5 Absolute 10.6 Indirekte 10.7 Indirekte Adressierung
3.0 8051 Assembler und Hochsprachen
3.0 8051 Assembler und Hochsprachen Eine kurze Übersicht zum Ablauf einer Programmierung eines 8051 Mikrocontrollers. 3.1 Der 8051 Maschinencode Grundsätzlich akzeptiert ein 8051 Mikrocontroller als Befehle
Teil 1: Prozessorstrukturen
Teil 1: Prozessorstrukturen Inhalt: Mikroprogrammierung Assemblerprogrammierung Motorola 6809: ein einfacher 8-Bit Mikroprozessor Mikrocontroller Koprozessoren CISC- und RISC-Prozessoren Intel Pentium
U23 Assembler Workshop
Ike e.v. http://koeln.ccc.de 2016-11-05 Überblick 1 CPU, Assembler Überblick x86 x86 Assembler 2 RAM, Stack, Calling Conventions Stack Calling Conventions Stackframes 3 Branches Jumps 4 Speicher, C-Interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, mneueintrag, meintrag, morderedlist;
unit madressliste; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, mneueintrag, meintrag, morderedlist; type TMain = class(tform) Panel1: TPanel;
U23 Assembler Workshop
Ike e.v. http://koeln.ccc.de 2016-11-05 Überblick 1 CPU, Assembler Überblick x86 x86 Assembler 2 RAM, Stack, Calling Conventions Stack Calling Conventions Stackframes 3 Branches Jumps 4 Speicher, C-Interface
6. Intel IA-32 Prozessoren Aufbau und Adressierungsarten
6. Intel IA-32 Prozessoren Aufbau und Adressierungsarten 6.1 Gegenstand der Vorlesung Interne Organisation - Architektur - Register - Statusbits - Speicherstruktur Basis-Adressierungsarten - direct - absolute
Weitere Arithmetik. Grundlagen der Rechnerarchitektur Assembler 33
Weitere Arithmetik Grundlagen der Rechnerarchitektur Assembler 33 Die speziellen Register lo und hi Erinnerung: ganzzahliges Produkt von zwei n Bit Zahlen benötigt bis zu 2n Bits Eine MIPS Instruktion
Mikrocomputertechnik. Adressierungsarten
Adressierungsarten Ein Mikroprozessor bietet meist eine Reihe von Möglichkeiten, die Operanden für eine Rechenoperation zu bestimmen. Diese Möglichkeiten bezeichnet man als Adressierungsarten. unmittelbare
Technische Informatik 1
Technische Informatik 1 2 Instruktionssatz Lothar Thiele Computer Engineering and Networks Laboratory Instruktionsverarbeitung 2 2 Übersetzung Das Kapitel 2 der Vorlesung setzt sich mit der Maschinensprache
Rechnergrundlagen SS Vorlesung
Rechnergrundlagen SS 2007 8. Vorlesung Inhalt Gleitkomma-Darstellung Normalisierte Darstellung Denormalisierte Darstellung Rechnerarchitekturen Von Neumann-Architektur Harvard-Architektur Rechenwerk (ALU)
Mikrorechentechnik 1. Befehlssatzarchitektur. Professur für Prozessleittechnik Wintersemester 2011/2012
Fakultät Elektrotechnik und Informationstechnik, Professur für Prozessleittechnik Mikrorechentechnik 1 Befehlssatzarchitektur Professur für Prozessleittechnik Wintersemester 2011/2012 Qualifikationsziele
Rechnerarchitektur Zusammengetragen vom Marc Landolt
Rechnerarchitektur Zusammengetragen vom Marc Landolt http://ml.buzzernet.com 1/14 1 Die verschiedenen Betrachtungsebenen Rechnerebene Hauptblockebene Registertransferebene Schaltwerkebene Ebene elektrischer
Der MS-DOS Standardmonitor und Debugger DEBUG
Einfache Assemblerprogrammierung mit DOS-DEBUG 1/7 Auf Personalcomputern kann in der Regel leicht eine einfache Umgebung zur Software-Entwicklung für die Intel Rechnerfamilie 80x86 eingerichtet werden.
Übungen für die Einführung in die Assemblerprogrammierung mit dem Prozessor c515c
Übungen für die Einführung in die Assemblerprogrammierung mit dem Prozessor c515c 1 Transportbefehle 1.1 Verwendung nur Akku und Register (R0, R1,... R7) 1.1.1 Kopieren Sie den Wert aus Register1 nach
Neues vom STRIP Forth-Prozessor
Neues vom STRIP Forth-Prozessor Tagung der Forth-Gesellschaft März 2014 Bad Vöslau/Österreich Willi Stricker -Prozessor Inhalt 1. STRIP-Befehlssatz Bisher: minimaler Befehlssatz neu: erweiterter Befehlssatz
Welche Register werden zur Parameterübergabe verwendet? In welcher Reihenfolge werden die Parameter auf dem Stack bzw. in den Registern abgelegt?
6.5 MMIX Befehle 291 Aufrufkonventionen Eine Aufrufkonvention (engl. calling convention) legt fest, wie einer Funktion Parameter übergeben werden und wie der Rückgabewert zurückgegeben wird. Damit spezifiziert
Rechnergrundlagen SS Vorlesung
Rechnergrundlagen SS 27 4. Vorlesung Inhalt Binäre Darstellung von Integer-Zahlen Vorzeichen-Betrag 2er-Komplement BCD Addition und Subtraktion binär dargestellter Zahlen Carry und Overflow Little Endian
Beispiel: A[300] = h + A[300]
Beispiel: A[300] = h + A[300] $t1 sei Basisadresse von A und h in $s2 gespeichert. Assembler Code? Maschinen Code (der Einfachheit halber mit Dezimalzahlen)? op rs rt rd adr/shamt funct Instruktion Format
Lösungsvorschlag 9. Übung Technische Grundlagen der Informatik II Sommersemester 2009
Fachgebiet Rechnerarchitektur Fachbereich Informatik Lösungsvorschlag 9. Übung Technische Grundlagen der Informatik II Sommersemester 2009 Aufgabe 9.1: Dinatos-Algorithmus-Analyse Die folgenden Verilog-Zeilen
68000 Assembler. WAS ist ein Assembler? Ein System, das den Programmierer hilft, eine maschinennahe Programmierung zu realisieren.
WAS ist ein Assembler? Ein System, das den Programmierer hilft, eine maschinennahe Programmierung zu realisieren. Ein Programm liegt der CPU in binärer Form vor und wird durch den Assembler in einer primitiven
Der Assembler-Befehlssatz
Assembler-Befehlssatz 1 Der Assembler-Befehlssatz Anmerkung: Die kurzen Beispiele beziehen sich auf die Arbeit mit dem DEBUG-Assembler (links) sowie dem MASM, der symbolische Adressen verarbeiten kann
Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen:
1 ADRESSIERUNG IN MMIX Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen: no base address is close enough to the address A! relative address
Musterlösungen Technische Informatik 2 (T2) Prof. Dr.-Ing. D. P. F. Möller
SS 2004 VAK 18.004 Musterlösungen Technische Informatik 2 (T2) Prof. Dr.-Ing. D. P. F. Möller Aufgabenblatt 2.5 Lösung 2.5.1 Befehlszähler (Program Counter, PC) enthält Adresse des nächsten auszuführenden
Teil VIII Von Neumann Rechner 1
Teil VIII Von Neumann Rechner 1 Grundlegende Architektur Zentraleinheit: Central Processing Unit (CPU) Ausführen von Befehlen und Ablaufsteuerung Speicher: Memory Ablage von Daten und Programmen Read Only
Assembler-Programmierung
Assembler-Programmierung Dr.-Ing. Volkmar Sieh Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011 Assembler-Programmierung 1/48 2012-02-29 Assembler-Programmierung
Der Toy Rechner Ein einfacher Mikrorechner
Der Toy Rechner Ein einfacher Mikrorechner Dr. Gerald Heim Haid-und-Neu-Str. 10-14 76131 Karlsruhe 16. Mai 1995 Allgemeine Informationen 2 Quelle: Phil Kopmann, Microcoded versus Hard-Wired Logic, Byte
PC/XT/AT ASSEMBLER-BUCH
PC/XT/AT ASSEMBLER-BUCH Alle Befehle + Makro-Assembler KLAUS-DIETER THIES t
DATEN UND BEFEHLSFORMATE, ADDRESSIERUNGSARTEN UND MASCHINEN- PROGRAMMIERUNGSKONZEPTE
D - CA - IV - AA - 1 HUMBOLDT-UNIVERSITÄT ZU BERLIN INSTITUT FÜR INFORMATIK Vorlesung 4 DATEN UND BEFEHLSFORMATE, ADDRESSIERUNGSARTEN UND MASCHINEN- PROGRAMMIERUNGSKONZEPTE Sommersemester 2003 Leitung:
2
TINF Interrupts EDT-Referat Jürgen Schwarzbauer 2ANB 1995/96 Inhalt : Was ist ein Interrupt? Zweck von Interrupts Maskierbare und nicht maskierbare Interrupts Aufruf eines Interrupts Anwendung von Interrupts
Studienseminar Koblenz - Fachseminar Informatik Visualisierung von Sortieralgorithmen
Thema: Visualisieren von Sortieralgorithmen in Delphi (am Beispiel: Bubblesort und Quicksort) Ziel ist es, eine Animation des Bubblesort- und Quicksort-Algorithmus in Delphi für die Anwung im Unterricht
1. Inhaltsverzeichnis
Mikrocomputer Simulator Inhaltsverzeichnis _ 2 _ 1. Inhaltsverzeichnis 1. INHALTSVERZEICHNIS...2 2. AUFBAU UND BEDIENUNG...3 2.1. EINFÜHRUNG...3 2.1.1. TECHNISCHE DATEN... 3 2.1.2. VERWENDUNGSZWECK...
Einführung in AVR Assembler
Einführung in AVR Assembler Dennis Fassbender Institut für Technik Autonomer Systeme (LRT8) Universität der Bundeswehr München 09042014 Was ist Assembler? Low-level-Programmiersprache Erlaubt direkten
4 Assembler für die 8051-Controller-Familie
4 Assembler für die 8051-Controller-Familie Tabelle 4.1 Wichtige Schreibweisen und Bedeutungen für die Befehle Abkürzung #data data addr Rr @Rr code addr Bedeutung Daten sind in der Instruktion codiert
Aufbau des Speichers. Interrupt Vektoren. 0xFFE0-0xFFFF. 16 Adressen f. Unterprog. ca. 60 kbyte Flash-ROM für Firmware, Programme, Daten, Tabellen
16 Adressen f. Unterprog. Wird i.d.r. einmal vor Inbetriebnahme beschrieben, kann jedoch in 512 Byte Bänken während Betr. verändert werden. Zwei kl. Bänke f. Programm. via Scatt.Fl. Nur 2kB schnelles RAM
EDT-REFERAT Adressierungsarten
EDT-Referat BÜLBÜL Erkan 2ANB 95 /96 Seite 1 EDT-REFERAT Adressierungsarten INHALTSVERZEICHNIS 1.Theoretische Grundlagen 1.0 Einführung 1.1 Programm- & Datenspeicheradressierbereiche 2.Adressierungsarten
Systeme 1: Architektur
slide 1 Vorlesung Systeme 1: Architektur Prof. Dr. Ulrich Ultes-Nitsche Forschungsgruppe Departement für Informatik Universität Freiburg slide 2 Prüfung 18. Februar 2004 8h00-11h40 13h00-18h20 20 Minuten
Rechnerorganisation. IKS 2017 H.-D. Wuttke, K. Henke
Rechnerrganisatin Mathematische Grundlagen (1) Blesche Algebren: BMA, BAA (2,3) Kmbinatrische Schaltungen (4,5) Autmaten (6,7) Sequentielle Schaltungen (8) Prgrammierbare Strukturen (9) Rechneraufbau und
Geräteentwurf mit Mikroprozessoren 1
Geräteentwurf mit Mikroprozessoren 1 Vorlesung am Institut für Elektronik der TU Graz Dipl.-Ing. Dr. Gerhard Stöckler SS 2003 Vorausgesetzte Kenntnisse: Grundlagen der Digitaltechnik Binäre Informationsdarstellung
0 C (Carry) Überlauf des 8ten Bits. 1 DC (Digit Carry) Überlauf des 4ten Bits. Mnemonic Parameter Beschreibung Status-Flags.
3. Assembler-Programmierung Der PIC 16F84A Microcontroller kennt 35 verschiedene Befehle. Für eine ausführliche Beschreibung aller Befehle siehe PIC16F84A-Datenblatt Kapitel 7.1. 3.1 Wichtige Flaggen im
Vorwort 8. Kap. 1: Grundlagen 10
Inhaltsverzeichnis Vorwort 8 Kap. 1: Grundlagen 10 1.1 Analogie zwischen der Spieluhr und einem Prozessor 10 1.2 Unterschiede zwischen Mikroprozessor und Spieluhr 11 1.3 Die Programmierung eines Mikroprozessors
Rechnerarchitektur. Inhaltsverzeichnis. M. Jakob. 1. Februar Aufbau eines Computersystems Praktische Grundlagen Von-Neumann-Rechner
M. Jakob Gymnasium Pegnitz 1. Februar 2015 Inhaltsverzeichnis Aufbau eines Computersystems Praktische Grundlagen Von-Neumann-Rechner Darstellung und Speicherung von Zahlen Registermaschinen Die Zentraleinheit
Informatikgrundlagen I Grundlagen der Informatik I
Informatikgrundlagen I Grundlagen der Informatik I Dipl.-Inf. Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik [email protected] Raum 2.202 Tel. 03943 / 659 338 1 Inhalt 1. Einführung,
Klausur zur Mikroprozessortechnik
Prof. Dr. K. Wüst WS 2001 FH Gießen Friedberg, FB MNI Studiengang Informatik Klausur zur Mikroprozessortechnik Nachname: Vorname: Matrikelnummer: 7.3.2001 Punkteverteilung Aufgabe Punkte erreicht 1 3 2
L3. Datenmanipulation
L Datenmanipulation Aufbau eines Computers Prozessor, Arbeitsspeicher und system Maschinensprachen und Maschinenbefehle Beispiel einer vereinfachten Maschinensprache Ausführung des Programms und Befehlszyklus
Übersicht der wichtigsten Assemblerbefehle in ATT-Syntax. Operanden, Statusflags und Registersatz
Übersicht der wichtigsten Assemblerbefehle in ATT-Syntax Autoren: Wolfgang Heenes, Patrik Schmittat Version: 0.4 Datum: 26. März 2011 Operanden, Statusflags und Registersatz Die vier Operanden sind: Direkter
2.2 Rechnerorganisation: Aufbau und Funktionsweise
2.2 Rechnerorganisation: Aufbau und Funktionsweise é Hardware, Software und Firmware é grober Aufbau eines von-neumann-rechners é Arbeitsspeicher, Speicherzelle, Bit, Byte é Prozessor é grobe Arbeitsweise
Welches Register wird für was verwendet?
Welches Register wird für was verwendet? AX Register: Arithmetische Funktionen BX Register: Arbeitsspeicher adressieren (lea ; mov bx, offset), kann als Zeiger im Datensegment verwendet werden (siehe Direkter
HC680 PROGRAMMER'S REFERENCE MANUAL
HC680 PROGRAMMER'S REFERENCE MANUAL Programmieranleitung Mnemonic Assembler Maschinenbefehl Wirkung /Bedeutung Register (0 bis 3 allg. Reg.) Ope- Opcode/Binärcode - Adressierungsart - Nr Bez. xx Bin Art
MIX-Befehle - Aufbau
MIX-Befehle - Aufbau 0 1 2 3 4 5 +/- A A I F C +AA ist der Adressteil des Befehls. Diese Zahl oder Adresse nennen wir M. I ist die Indexspezifikation. I=0 bedeutet unveränderter Adressteil, sonst wird
MikroController der 8051-Familie
i Dipl.-Ing. Roland Dilsch MikroController der 8051-Familie Aufbau, Funktion, Einsatz Vogel Buchverlag Inhaltsverzeichnis Vorwort 5 1 Was ist ein MikrocontroUer? 13 1.1 Aufbau eines Computers 13 1.2 Entstehung
Assembler - Adressierungsarten
Assembler - Adressierungsarten Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler - Adressierungsarten 1/31 2008-04-01
Aufbau eines Taschenrechners
siehe Skizze Aufbau einer Waage siehe Skizze Speichermöglichkeit Aufbau eines Taschenrechners Speichermöglichkeit Adressbus 65536 (2 16 ) (2 wegen der Zustände =aus und 1=an) => 65536 Möglichkeiten =>
8. Beschreibung des Prozessors MSP 430
8. Beschreibung des Prozessors MSP 430 8.1 Die Eigenschaften des MSP 430 8.2 Die Register des MSP 430 8.3 Der Aufbau des Speichers 8.4 Interrupts 8.5 Der Watchdog Programmierkurs II Wolfgang Effelsberg
Teil 2: Rechnerorganisation
Teil 2: Rechnerorganisation Inhalt: Zahlendarstellungen Rechnerarithmetik schrittweiser Entwurf eines hypothetischen Prozessors mit Daten-, Adreß- und Kontrollpfad Speicherorganisation Mikroprogrammierung
Wer in der Grundschule ein wenig aufgepasst hat, sollte in der Lage sein schriftlich eine Zahl durch eine zweite zu teilen.
Teilen binär Teil 1 - Vorzeichenlose Ganzzahlen ============ Irgendwann steht jeder Programmieren vor diesem Problem. Wie teile ich eine Binärzahl durch eine zweite? Wer in der Grundschule ein wenig aufgepasst
Architektur der Intel 8051 Familie und Grundlegende Programmierung Reto Gurtner 2005
Architektur der Intel 8051 Familie und Grundlegende Programmierung Reto Gurtner 2005 1 1. DIE GESCHICHTE DER 8051-MIKROCONTROLLERFAMILE 4 2. GRUNDLEGENDE HARDWARESTRUKTUR UND FUNKTIONSMODELL 5 2.1 HARDWARESTRUKTUR
Technische Informatik 2 Adressierungsarten
Technische Informatik 2 Adressierungsarten Prof. Dr. Miroslaw Malek Sommersemester 2009 www.informatik.hu-berlin.de/rok/ca Thema heute X-Adressmaschine 0-Adressmaschine 1-Adressmaschine 2-Adressmaschine
3. Grundlagen der Rechnerarchitektur
3. Grundlagen der Rechnerarchitektur 3.1 Architektur des von-neumann-rechners 3.2 Maschinentypen: Einadressmaschine, Zweiadressmaschine 3.3 Befehlsformate und Adressierungstechniken 3.4 Beispiel: der Prozessor
Teil 1: Prozessorstrukturen
Teil 1: Prozessorstrukturen Inhalt: Mikroprogrammierung Assemblerprogrammierung Motorola 6809: ein einfacher 8-Bit Mikroprozessor Mikrocontroller Koprozessoren CISC- und RISC-Prozessoren Intel Pentium
