80386 ist Bestandteil der Typbezeichnung eines
Mikroprozessors der Firma
Intel. Dieser und dessen Nachfolger (
80486 und
Pentium I, II, III, IV) werden heute am häufigsten als
CPU in
PCs eingesetzt. 80386-Prozessoren wurden erstmals
1986 als Nachfolger des
80286er ausgeliefert.
Der 80386 kann direkt bis zu 4
GiB Hauptspeicher adressieren (386SX: 16 MiB). Er hat acht allgemeine 32-Bit-Register, die zum Rechnen und allgemeinen Datenaustausch verwendet werden:
Die "General Purpose"-Register des 80386
| Abk.
| Englischer Name
| Verwendung
|
| EAX
| Accumulator
| allgemein verwendbar, spezielle Bedeutung bei Arithmetikbefehlen
|
| EBX
| Base Register
| allgemein verwendbar
|
| ECX
| Count Register
| allgemein verwendbar, spezielle Bedeutung bei Schleifen
|
| EDX
| Data Register
| allgemein verwendbar, spezielle Bedeutung bei Multiplikation und Division
|
| EBP
| Base Pointer
| Zeiger auf temporäre Speicherstellen im Stack (z.B. Stackframe für lokale Variablen etc.)
|
| ESP
| Stack Pointer
| Zeiger auf die aktuelle Position im Stacksegment
|
| ESI
| Source Index
| Quelle für Stringoperationen
|
| EDI
| Destination Index
| Ziel für Stringoperationen
|
Die Spezialregister des 80386
| Abk.
| Englischer Name
| Verwendung
|
| EIP
| Instruction Pointer
| Zeigt auf den nächsten auszuführenden Befehl. Wird durch Sprunganweisungen verändert.
|
| EFLAGS
| Flag Register
| Die einzelnen Bits besitzen unterschiedliche Bedeutungen und zeigen z.B. Überläufe bei arithmetischen Operationen u.ä. an.
|
| CS
| Code Segment
| Gibt die Position des Codesegmentes (in dem der aktuell auszuführende Programmcode steht) an.
|
| DS
| Data Segment
| Gibt die Position des Datensegmentes (in dem die globalen Daten des Programms stehen) an.
|
| SS
| Stack Segment
| Gibt die Position des Stacksegmentes (in dem der Stack für die lokalen Daten und Rücksprungadressen stehen) an.
|
| ES
| Extra Segment
| Gibt die Position eines zusätzlichen Datensegmentes (wird z.B. für Stringkopierbefehle verwendet) an.
|
| FS und GS
| Extra Segment 2 und 3
| Gibt die Position zweier zusätzlicher Datensegmente an.
|
| GDTR
| Global Descriptor Table Register
| Gibt die Position der GDT an
|
| LDTR
| Local Descriptor Table Register
| Gibt die Position der LDT an
|
| IDTR
| Interrupt Descriptor Table Register
| Gibt die Position der IDT an
|
| CR0 - CR3
| Control Register 0 ... 3
| Steuern u.a. das Paging im Protected Mode
|
| TR6 - TR7
| Test Register 6 ... 7
| ..
|
| DR0 - DR7
| Debug Register 0 ... 7
| Dienen zum festlegen von Breakpoints auf Prozessorebene (DR0..DR3) u.a.
|
| TR
| Task Register
| Segmentselektor des Task Status Segments (TSS)
|