< Maschinensprache i8086 < I

Theorie:  Einleitung Maschinensprache Assembler Zahlensysteme RAM-Adressen BWS Debug CPU-Register Einfache Befehle Stringbefehle Interrupts I/O-Ports
Versuch:  BWS1 BWS2 Hallo Welt Bootsektor MBR
Nützlich: Befehlsliste PAUSE Filter
Analyse:  Bootloader


Einführung

Für Ein- und Ausgabeoperationen (Input-, Output operations) existieren verschiedene Möglichkeiten die Hardware anzusprechen: speicherorientiere (memory-mapped-I/O) und speichergetrennte Verfahren. Intel-Prozessoren unterstützen beide.

Speicherorientierte Verfahren

Hier liegt der Ein- und Ausgabepuffer ungetrennt von restlichen Speicher im Arbeitsspeicher. Bei IBM-PCs ist die Grafikkarte ein gutes Beispiel.

Für die Bildschirmausgabe ist ein bestimmter Bereich im Arbeitsspeicher reserviert (Der Bildwiederholspeicher im Video-RAM). Dieser Speicher wird regelmäßig ausgelesen und auf dem Bildschirm ausgegeben.

Der Nachteil liegt darin, dass der Programmierer selber darauf achten muss, dass er den Ein- oder Ausgabebereich nicht überschreibt.

Speichergetrennte Verfahren

Sicherer ist es, wenn der Speicher außerhalb liegt und getrennt angesprochen wird. Die Daten werden in Hardwareregister gespeichert. Man kann sie mit bestimmten Assemblerbefehlen auslesen oder in sie schreiben. Diese Befehle lauten meist: IN und OUT.

Diese Ports haben eine (16-Bit-)Nummer mit der sie eindeutig angesprochen werden können.

Beispiel:

in 0x60, ax   ; liest ein Zeichen von der Tastatur

Andere Verfahren

Es gibt noch die Möglichkeit mit Interrupts zu arbeiten. Man lädt in bestimmte Register Daten und löst den Interrupt aus.

Beispiel: Die Funktion 14 des BIOS-Interrupts 10


mov ah, 0x0E       ; Funktion 14
mov al, byte 'A'
xor bx, bx
int 0x10           ; gibt das Zeichen 'A' auf dem Bildschirm aus
This article is issued from Wikibooks. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.