| Zeile 35: | Zeile 35: | ||
| colspan="4" style="background:lightgrey" align="center" | ? = A, B, C, D | | colspan="4" style="background:lightgrey" align="center" | ? = A, B, C, D | ||
|} | |} | ||
| + | |||
| + | Die Allzweckregister können, wie ihr Name schon andeutet eigentlich für fast jeden Zweck genutzt werden. Trotzdem gibt es einige gebräuchliche Nutzungen, zum Beispiel | ||
| + | * '''EAX''' : Für Rechenoperatioen, als Rückgabewert in [[C]] | ||
| + | * '''ECX''' : Als Zähler | ||
===Indexregister=== | ===Indexregister=== | ||
| Zeile 52: | Zeile 56: | ||
| colspan="4" style="background:lightgrey" align="center" | ? = D, S | | colspan="4" style="background:lightgrey" align="center" | ? = D, S | ||
|} | |} | ||
| + | |||
| + | Die Indexregister werden oft als Indexe in Datenbereichen verwendet. Dabei zeigt | ||
| + | * '''ESI''' : Auf den Quelloperanden | ||
| + | * '''EDI''' : Auf den Zieloperanden | ||
===Zeigerregister=== | ===Zeigerregister=== | ||
| Zeile 69: | Zeile 77: | ||
| colspan="4" style="background:lightgrey" align="center" | ? = B, S | | colspan="4" style="background:lightgrey" align="center" | ? = B, S | ||
|} | |} | ||
| + | |||
| + | Die Zeigerregister werden genutzt, um auf Stellen im Speicher zu zeigen. | ||
| + | * '''ESP''' : Zeigt ''immer'' auf den aktuellen Stack | ||
| + | * '''EBP''' : Wird meistens für Stackframes und lokale Variablen bei Funktionsaufrufen verwendet | ||
===Instruktionsregister=== | ===Instruktionsregister=== | ||
| Zeile 84: | Zeile 96: | ||
| colspan="2" align="center" | IP | | colspan="2" align="center" | IP | ||
|} | |} | ||
| + | |||
| + | Das Instruktionsregister '''EIP''' zeigt ''immer'' auf den nächsten auszuführenden Befehl. Es kann nicht direkt geändert werden, sondern nur über Funktion wie '''jmp''', '''call''' oder '''ret''' | ||
===Flagregister=== | ===Flagregister=== | ||
| Zeile 96: | Zeile 110: | ||
| colspan="4" align="center" | EFLAGS | | colspan="4" align="center" | EFLAGS | ||
|} | |} | ||
| + | |||
| + | Das Flagregister '''EFLAGS''' speichert einige Konfigurationsmöglichkeiten und Systemzuständen, beispielweise, ob Interrupts gerade erlaubt sind oder ob ein Übertrag bei einer Addition stattfand. | ||
===Segmentregister=== | ===Segmentregister=== | ||
| Zeile 108: | Zeile 124: | ||
| colspan="2" style="background:lightgrey" align="center" | ? = C, D, E, F, G, S | | colspan="2" style="background:lightgrey" align="center" | ? = C, D, E, F, G, S | ||
|} | |} | ||
| + | |||
| + | Die Segmentregister geben die Basisadresse des aktuellen Segments an. Dabei steht | ||
| + | * '''CS''' für das ''Code-Segment'' | ||
| + | * '''DS''' für das ''Data-Segment'' | ||
| + | * '''SS''' für das ''Stack-Segment'' | ||
| + | ''ES'', ''FS'' und ''GS'' sind zusätzliche Daten-Segmente. | ||
| + | |||
| + | Die Segmentregister sind im [[Protected Mode]] auch für die Segmentierung mit Hilfe der [[GDT]] verantwortlich. | ||