Att åberopa en ROM BIOS -funktion involverar flera steg, och de exakta detaljerna beror på den specifika funktionen och processorarkitekturen (främst x86/x64 diskuteras här, eftersom det är där BIOS -samtal är vanligast). Generellt innebär processen:
1. Identifiera funktionen: Varje BIOS -funktion har ett unikt nummer (ett hexadecimalt värde). Du måste veta det här numret för att ringa rätt funktion. BIOS -avbrottsvektortabellen (vanligtvis på adress 0x400 i verkligt läge) innehåller adresser för olika BIOS -tjänster, men vanligtvis använder du direkt avbrottsnumret.
2. Förbereda parametrarna (argument): Många BIOS -funktioner kräver inmatningsparametrar. Dessa parametrar passeras genom register (som `AX ',` BX`, `cx`,` dx`, etc.) eller på minnesplatser. De exakta register och minnesplatser som används beror på den specifika funktionen. Du måste konsultera BIOS -specifikationen eller dokumentationen för att förstå vilka parametrar som krävs och hur du passerar dem.
3. Ställa in avbrottet: Den primära mekanismen för att åberopa BIOS -funktioner är genom programvaruavbrott (INT). Det specifika avbrottsnummer som används är vanligtvis `0x10 '(för videotjänster),` 0x13' (för disktjänster), `0x16 '(för serieporttjänster), etc. Varje avbrott pekar på en BIOS -avbrottshanterare. Funktionsnumret skickas vanligtvis i "Ah" -registret.
4. Utför avbrottsinstruktionen: Instruktionen `int ` används för att utlösa avbrottet. Detta får processorn att hoppa till BIOS -avbrottshanterarens kod.
5. Hantering av returvärden: Vid framgångsrik exekvering returnerar BIOS -funktionen vanligtvis resulterar i register eller minnesplatser som anges i dokumentationen. Du måste undersöka dessa platser för att få utgången från funktionen. Felvillkor indikeras ofta av specifika returkoder eller flaggor.
Exempel (x86 -montering - Ställa in videoläget):
Låt oss säga att vi vill ställa in videoläget till 80x25 textläge (läge 3). Detta är en vanlig video BIOS -funktion.
`` `
; Ställ in videoläge på 80x25 textläge (läge 3)
MOV AH, 0x00; Funktionsnummer för att ställa in videoläge
MOV AL, 0x03; Videoläge 3 (80x25 text)
int 0x10; Ring Bios Video -avbrottet
`` `
Viktiga överväganden:
* Real Mode vs. Protected Mode: Bios-samtal fungerar i allmänhet i verkligt läge (16-bitars adressering). I skyddat läge (som används av moderna operativsystem) görs vanligtvis åtkomst till BIOS genom ett skyddat läge-gränssnitt som tillhandahålls av operativsystemet eller via ett speciellt BIOS-samtalsgränssnitt. Direkt åtkomst från skyddat läge avskräcks ofta på grund av säkerhets- och stabilitetsproblem.
* Bios Variations: BIOS -implementeringar varierar något mellan olika tillverkare. Funktionsnummer och parameterpassningskonventioner kan ha mindre skillnader. Se alltid till ditt systems BIOS -dokumentation.
* Legacy Technology: Direkta BIOS -samtal blir allt sällsynta i modern programmering, eftersom operativsystem nu hanterar hårdvaruresurser mer effektivt. Att förstå hur BIOS kallar arbete kan dock fortfarande vara relevant för programmering på låg nivå, omvänd teknik eller arbeta med mycket gamla system.
Sammanfattningsvis kräver en ROM BIOS -funktion att känna till funktionsnumret, förbereda de nödvändiga parametrarna, utföra lämplig avbrottsinstruktion och korrekt tolka resultaten. Detaljerna är mycket specifika för funktionen i fråga. Att konsultera BIOS -specifikationen för ditt system är viktigt.