# Crida interrupció BIOS

Les implementacions de la BIOS proporcionen interrupcions que poden ser invocades pels sistemes operatius i els programes d'aplicació per utilitzar les instal·lacions del microprogramari en ordinadors compatibles amb IBM PC. Tradicionalment, les crides de BIOS les fan servir principalment els programes DOS i algun altre programari, com ara els carregadors d'arrencada (incloent, sobretot històricament, programari d'aplicació relativament senzill que s'inicia directament i s'executa sense un sistema operatiu — especialment programari de jocs). La BIOS s'executa en el mode d'adreça real (mode real) de la CPU x86, de manera que els programes que criden a la BIOS també s'han d'executar en mode real o han de canviar del mode protegit al mode real abans de trucar a la BIOS i tornar-hi a tornar. Per aquest motiu, els sistemes operatius moderns que utilitzen la CPU en mode protegit o en mode llarg generalment no utilitzen les crides d'interrupció de la BIOS per suportar les funcions del sistema, tot i que utilitzen les crides d'interrupció de la BIOS per investigar i inicialitzar el maquinari durant l'arrencada. El mode real té la limitació de memòria d'1 MB, carregadors d'arrencada moderns (per exemple GRUB2, Windows Boot Manager) utilitza el mode irreal o el mode protegit (i executa les crides d'interrupció de la BIOS en el mode Virtual 8086, però només per a l'arrencada del sistema operatiu) per accedir a una memòria de fins a 4 GB.
En tots els ordinadors, les instruccions del programari controlen el maquinari físic (pantalla, disc, teclat, etc.) des del moment en què s'encén l'alimentació. En un ordinador, la BIOS, carregada prèviament a la ROM a la placa base, pren el control immediatament després que la CPU es restableixi, inclòs durant l'engegada, quan es prem un botó de restabliment de maquinari o quan es produeix una fallada crítica del programari (una falla triple). fa que els circuits de la placa base activen automàticament un restabliment de maquinari. La BIOS prova el maquinari i inicialitza el seu estat; cerca, carrega i executa el programa d'arrencada (normalment, un carregador d'arrencada del SO i la ROM BASIC històrica); i proporciona un control bàsic de maquinari al programari que s'executa a la màquina, que sol ser un sistema operatiu (amb programes d'aplicació), però pot ser una aplicació de programari única d'arrencada directa.
Per part d'IBM, van proporcionar tota la informació necessària per utilitzar la seva BIOS completament o per utilitzar directament el maquinari i evitar la BIOS completament, en programar els primers models de PC IBM (abans del PS/2). Des del principi, els programadors tenien l'opció d'utilitzar la BIOS o no, per perifèric de maquinari. IBM va animar fermament l'autoria de programes "de bon comportament" que accedien al maquinari només mitjançant crides INT de BIOS (i crides de servei DOS), per donar suport a la compatibilitat del programari amb models de PC actuals i futurs amb maquinari perifèric diferent, però IBM va entendre que per alguns desenvolupadors de programari i clients de maquinari, era un requisit que el programari d'usuari controlés directament el maquinari. En part, això va ser perquè un subconjunt important de totes les característiques i funcions del maquinari no va ser exposat pels serveis de la BIOS. Per a dos exemples (entre molts), els adaptadors MDA i CGA són capaços de desplaçar-se per maquinari i l'adaptador sèrie de PC és capaç de transferir dades impulsades per interrupcions, però la BIOS d'IBM no admet cap d'aquestes característiques tècniques útils.
Avui en dia, la BIOS d'un ordinador nou encara admet la majoria, si no totes, de les crides a la funció d'interrupció de la BIOS definides per IBM per a l'IBM AT (introduïda el 1984), juntament amb moltes més noves, a més d'extensions a algunes de les originals (p. ex. intervals de paràmetres ampliats) promulgats per diverses altres organitzacions i grups industrials col·laboratius. Això, combinat amb un grau similar de compatibilitat de maquinari, significa que la majoria dels programes escrits per a un IBM AT encara es poden executar correctament en un ordinador nou avui en dia, suposant que la velocitat d'execució més ràpida és acceptable (que normalment és per a tots excepte els jocs que utilitzen temporització basada en CPU). Malgrat les limitacions considerables dels serveis als quals s'accedeix a través de les interrupcions de la BIOS, han demostrat ser extremadament útils i duradors davant el canvi tecnològic.

## Propòsit de les crides de la BIOS

Les crides d'interrupció de la BIOS realitzen el control de maquinari o les funcions d'E/S sol·licitades per un programa, retornen la informació del sistema al programa o fan totes dues coses. Un element clau del propòsit de les crides de la BIOS és l'abstracció: les crides de la BIOS realitzen funcions generalment definides i els detalls específics de com s'executen aquestes funcions al maquinari particular del sistema s'encapsulen a la BIOS i s'amaguen al programa. Així, per exemple, un programa que vol llegir des d'un disc dur no necessita saber si el disc dur és una unitat ATA, SCSI o SATA (o abans, una unitat ESDI o una unitat MFM o RLL amb potser un controlador Seagate ST-506, potser un dels diversos tipus de controlador Western Digital, o amb un controlador propietari diferent d'una altra marca). El programa només necessita identificar el número definit per la BIOS de la unitat a la qual vol accedir i l'adreça del sector que necessita llegir o escriure, i la BIOS s'encarregarà de traduir aquesta sol·licitud general a la seqüència específica d'operacions elementals requerides. per completar la tasca mitjançant el maquinari del controlador de disc concret connectat a aquesta unitat. El programa s'allibera de la necessitat de saber controlar a un nivell baix tot tipus de disc dur (o adaptador de pantalla, o interfície de port, o perifèric de rellotge en temps real) als quals pugui necessitar accedir. Això alhora facilita la programació de sistemes operatius i aplicacions i fa que els programes siguin més petits, reduint la duplicació del codi del programa, ja que la funcionalitat que s'inclou a la BIOS no cal que s'inclogui en tots els programes que ho necessitin; En canvi, s'inclouen crides relativament curtes a la BIOS als programes. (En els sistemes operatius on no s'utilitza la BIOS, les crides de servei proporcionades pel propi sistema operatiu generalment compleixen la mateixa funció i finalitat).

## Taula d'interrupció

A continuació es pot trobar una llista de classes comunes d'interrupció de la BIOS. Tingueu en compte que algunes BIOS (especialment les antigues) no implementen totes aquestes classes d'interrupció.
La BIOS també utilitza algunes interrupcions per transmetre interrupcions d'esdeveniments de maquinari als programes que decideixen rebre-les o encaminar missatges per al seu propi ús. La taula següent inclou només aquelles interrupcions de la BIOS que estan pensades per ser cridades pels programes (utilitzant la instrucció d'interrupció de programari en llenguatge ensamblador "INT") per sol·licitar serveis o informació.
| Vector d'Interrupció | Descripció |
| 05h | S'executa quan es prem la pantalla Shift-Print, així com quan la instrucció BOUND detecta una fallada d'enllaç. |
| 08h | Aquesta és la interrupció del rellotge en temps real. Es dispara 18,2 vegades/segon. La BIOS augmenta el comptador de l'hora del dia durant aquesta interrupció. |
| 09h | Aquesta és la interrupció del teclat. Això s'activa generalment quan es prem una tecla d'un teclat. |
| 10h | Serveis de video |
| 11h | Llista d'equips de retorn |
| 12h | Retorna la mida de memòria convencional |
| 13h | Serveis de disc de baix nivell |
| 14h | Serveis de port sèrie |
| 15h | Serveis diversos del sistema |
| 16h | Serveis de teclat |
| 17h | Serveis d'impressora |
| 18h | Executar casset BASIC: a les màquines IBM fins a la primera línia PS/2, aquesta interrupció iniciaria el casset ROM BASIC. |
| 19h | Després de la POST, la BIOS utilitza aquesta interrupció per carregar el sistema operatiu. |
| 1Ah | Serveis de rellotge en temps real |
| 1Bh | Serveis PCI: implementats per BIOS compatibles amb PCI 2.0 o posterior |
| 1Ch | Controlador de tick del temporitzador: cridat per INT 08 |

### Invocant una interrupció

La invocació d'una interrupció es pot fer mitjançant la instrucció del llenguatge ensamblador INT x86. Per exemple, per imprimir un caràcter a la pantalla mitjançant la interrupció de la BIOS 0x10, es podrien executar les instruccions del llenguatge ensamblador x86 següents:

## Referències

* ↑ «Booting · Linux Inside» (en anglès). 0xax.gitbooks.io. [Consulta: 10 novembre 2020].
* ↑ «Grub2 Booting Process» (en anglès), 21-06-2016.
* ↑ «BIOS Interruptions, how to trace and how to manipulate it on Windows?» (en anglès). [Consulta: 10 setembre 2023].
* ↑ «What does "BIOS Interrupt call" mean» (en anglès). [Consulta: 10 setembre 2023].