Das Aufrufen einer ROM -BIOS -Funktion umfasst mehrere Schritte, und die genauen Details hängen von der spezifischen Funktion und der Prozessorarchitektur ab (in erster Linie wird X86/x64 hier erörtert, da hier BIOS -Aufrufe am häufigsten sind). Im Allgemeinen beinhaltet der Prozess:
1. Identifizierung der Funktion: Jede BIOS -Funktion hat eine eindeutige Zahl (einen hexadezimalen Wert). Sie müssen diese Nummer kennen, um die richtige Funktion aufzurufen. Die BIOS -Interrupt -Vektortabelle (normalerweise bei der Adresse 0x400 im realen Modus) enthält Adressen für verschiedene BIOS -Dienste, aber normalerweise verwenden Sie die Interrupt -Nummer direkt.
2. Vorbereitung der Parameter (Argumente): Viele BIOS -Funktionen erfordern Eingabeparameter. Diese Parameter werden durch Register (wie "Ax", "Bx", "Cx", "Dx" usw.) oder an Speicherstellen geleitet. Die genauen Register und Speicherorte hängen von der spezifischen Funktion ab. Sie müssen die BIOS -Spezifikation oder Dokumentation konsultieren, um zu verstehen, welche Parameter erforderlich sind und wie sie übergeben werden.
3. Einrichten des Interrupts: Der Hauptmechanismus zum Aufrufen von BIOS -Funktionen ist die Software -Interrupts (INT). Die spezifische Interrupt -Nummer lautet typischerweise `0x10` (für Videodienste),` 0x13` (für Festplattendienste), `0x16` (für serielle Portdienste) usw. Jeder Interrupt zeigt auf einen BIOS -Interrupt -Handler. Die Funktionsnummer wird normalerweise im "Ah` -Register" übergeben.
4. Ausführen der Interrupt -Anweisung: Die Anweisung `int ` wird verwendet, um den Interrupt auszulösen. Dies führt dazu, dass der Prozessor zum Code des BIOS -Interrupt -Handlers springt.
5. Umgang mit den Rückgabewerten: Bei einer erfolgreichen Ausführung gibt die BIOS -Funktion typischerweise Ergebnisse in Register oder Speicherorte zurück, die in der Dokumentation angegeben sind. Sie müssen diese Standorte untersuchen, um die Ausgabe aus der Funktion zu erhalten. Fehlerbedingungen werden häufig durch spezifische Rückgaberückcodes oder -flags angezeigt.
Beispiel (X86 -Assemblierung - Einstellen des Videomodus):
Angenommen, wir möchten den Videododus auf den 80x25 Textmodus (Modus 3) festlegen. Dies ist eine gemeinsame Video -BIOS -Funktion.
`` `Assembly
; Setzen Sie den Videomodus auf 80x25 Textmodus (Modus 3)
Mov Ah, 0x00; Funktionsnummer zum Einstellen des Videomodus
mov al, 0x03; Videomodus 3 (80x25 Text)
int 0x10; Rufen Sie den BIOS -Video Interrupt an
`` `
Wichtige Überlegungen:
* realer Modus im Vergleich zum geschützten Modus: BIOS-Anrufe funktionieren im Allgemeinen im realen Modus (16-Bit-Adressierung). Im geschützten Modus (von modernen Betriebssystemen verwendet) wird der Zugriff auf BIOS direkt über eine von dem Betriebssystem oder über eine spezielle BIOS-Call-Schnittstelle bereitgestellte Schnittstelle zugänglich gemacht. Der direkte Zugriff aus dem geschützten Modus wird aufgrund von Sicherheits- und Stabilitätsproblemen häufig abgehalten.
* BIOS -Variationen: BIOS -Implementierungen variieren bei verschiedenen Herstellern geringfügig. Funktionsnummern und Parameterübergebenkonventionen können geringfügige Unterschiede aufweisen. Beziehen Sie sich immer auf die BIOS -Dokumentation Ihres Systems.
* Legacy -Technologie: Direkte BIOS -Anrufe werden in der modernen Programmierung immer seltener, da Betriebssysteme jetzt die Hardware -Ressourcen effektiver verwalten. Das Verständnis des Verständnisses, wie BIOS-Aufrufe arbeiten, kann jedoch für Programmierung auf niedrigem Niveau, Reverse Engineering oder Arbeiten mit sehr alten Systemen relevant sein.
Zusammenfassend erfordert das Aufrufen einer ROM -BIOS -Funktion die Funktionsnummer, die Vorbereitung der erforderlichen Parameter, die Ausführung der entsprechenden Interrupt -Anweisung und die korrekte Interpretation der Ergebnisse. Die Details sind sehr spezifisch für die fragliche Funktion. Die Beratung der BIOS -Spezifikation für Ihr System ist unerlässlich.