BIOS znajduję się na płycie głównej komputera. Poza tym, niektóre urządzenia (np. karty sieciowe) posiadają swój BIOS. Można go łatwo odnaleźć na płycie, ponieważ jest oznaczony nazwą producenta (np. Award, AMI, Phoenix).
BIOS znajduje się w pamięci ROM, jest to zazwyczaj pamięć EEPROM (electrically-erasable read-only memory), która umożliwia ponowne nagrywanie zawartości BIOSu - na taki BIOS mówi się zazwyczaj "flash BIOS".
BIOS jest zwyklym programem dla procesora np. z linii x86. Różni sie od innych programow tym, że uruchamia się z pamięci ROM i nie potrzebuje do działania systemu operacyjnego - jest wręcz odwrotnie: system operacyjny jest ładowany przez BIOS, a potem z niego korzysta (chociaż ostatnio systemy operacyjne rzadko korzystają z jego funkcji).
Ustawienia BIOSu muszą być zapisywane w pamięci, która nie ulegnie wyczyszczeniu przy ponownym uruchomieniu komputera. Tę rolę odgrywa pamięć typu CMOS (Complementary Metal Oxide Semiconductor). Często na pamięc BIOSu mówi się "CMOS", ale trzeba pamiętać, że pamięc typu CMOS jest używana również w innych częściach komputera. Kiedyś jedynym miejscem, w którym występowała, był BIOS - stąd brak nazwy własnej jego pamięci.
W pamięci BIOSu zachowywane są informacje o dacie systemowej, konfiguracji dysków oraz wszystkich innych ustawieniach, do których mamy dostęp przez program konfiguracyjny BIOSu.
Pamięć ta jest podtrzymywana przez baterię, ale zużywa bardzo małą ilość pamięci - to jej podstawowe założenie konstrukcyjne. Ma ona zazwyczaj pojemność jedynie 64 bajtów.
Po włączeniu komputera, procesor wykonuje pierwszą instrukcję w BIOSie. Rejestry CS i IP świeżo uruchomionego procesora zawierają wartości F000 i FFF0. W komputerach osobistych ten adres wskazuje na obszar zarezerwowany dla BIOSu; również później wykonywany kod nie wychodzi poza ten obszar.
Procesor jako pierwszą wykonuje instrukcję spod adresu F000:FFF0, czyli szesnaście bajtów przed górnym krańcem pamięci w trybie rzeczywistym (jest to jeden megabajt). Należy przypomnieć, że aby zachować kompatybilność wstecz, wszystkie procesory Intela uruchamiają się w trybie 16-bitowym. BIOS (za wyjątkiem fazy POST, gdzie tryb ten może być testowany) nie przełącza procesora w tryb 32-bitowy. Przełączenie na stałe nie jest zresztą proste: należy zainicjować globalną i lokalne tablice deskryptorów, zaplanować segmentację (wiele systemów nie wykorzystuje jej całkowicie), włączyć stronicowanie itd., a tryb ten nie jest raczej do niczego BIOSowi potrzebny. Ponieważ można korzystać z mechanizmów ochrony pamięci udostępnionych przez procesor na wiele sposobów, BIOS zostawia to systemowi operacyjnemu, a ten dopiero decyduje o dalszym trybie pracy.
W oryginalnym IBM ROM BIOSie pod adresem F000:FFF0 znajduje się skok pod adres F000:E05B, ale nie można na tym polegać przy pisaniu przenośnych programów (o ile można w ogóle o czymś takim mówić w wypadku kodu w asemblerze). W każdym razie, w tym momencie rozpoczyna się tak zwany POST (Power-On-Self-Test).
Aby upewnić się, że komputer jest sprawny, BIOS przeprowadza test wszystkich podzespołów i w razie błędu daje o tym znać użytkownikowi. Potem BIOS wykonuje następujące testy:
Jeżeli komputer był po zwykłym restarcie bez odłączenia zasilania, pod adresem 0000:0472 znajduje się wartość 0x1234 i BIOS pomija niektóre testy. W innym przypadku przeprowadzane są wszystkie.
Ciekawe jest, że BIOS w trakcie testowania systemu zapisuje rezultaty do jednego z portów (zazwyczaj jest to port 0x80). Wysyłane są do niego kody diagnostyczne POST, a do ich odczytania może się przydać karta POST. W trakcie testu można przycisnąć pewien klawisz (np. Del), aby przejść do trybu konfiguracji BIOSu.
Jeżeli błąd przy testowaniu nastąpi po przygotowaniu do pracy karty graficznej, na ekranie wypisywany jest odpowiedni komunikat. Błędy ze wcześniejszej fazy są przedstawiane przy pomocy systemowego głośnika.
Karta POST służy do zbierania informacji o przebiegu testowania komputera przez BIOS. Informacje te są zapisywane do portu, na co reaguje odpowiednia karta podłączona do komputera. Takie karty przydają się przede wszystkim osobom zajmującym się sprzedażą i naprawą komputerów osobistych. Kartę taką można nawet skonstruować samemu, ale należy posiadać odpowiednie umiejętności z zakresu elektroniki.
Okazuje się, że karty POST bywają wykorzystywane przez programistów, którzy nie zajmują się bezpośrednio sprawami sprzętowymi. Jeżeli piszą oni programy systemowe działające w trybie pełnych uprawnień do procesora, wysyłają różne wartości do karty POST i na podstawie tych informacji odpluskwiają swoje programy.
Listę wartości zapisywanych przez BIOS i odczytywanych przez karty POST można znaleźć pod adresem: http://www.bioscentral.com
Po zakończeniu testowania, BIOS wywołuje przerwanie 0x19. Kod, do którego przekazywane jest sterowanie, próbuje załadować pierwszy sektor z zerowej ścieżki aktualnego urządzenia uruchamiającego (dyskietka, dysk twardy, CD-ROM) do pamięci. W razie powodzenia operacji, jest on zamieszczany pod adresem 0000:7C00. Następnie BIOS skacze pod ten adres. Dlatego pisanie swojego systemu operacyjnego można rozpocząć od umieszczenia skompilowanego kodu na pierwszym sektorze zerowej ścieżki i włożenia jej do stacji. To proste!
Jeżeli ładowanie systemu nie powiedzie się z powodu braku sektora startowego, wywoływane jest przerwanie 0x18. I tu ciekawostka: najstarsze komputery uruchamiały wtedy interpreter języka BASIC, od którego swoją przygodę z komputerami rozpoczęło wielu informatyków (w tym autor tych słów).
W dzisiejszych czasach, wyświetlany jest po prostu tekst: "NO BOOT DEVICE AVAILABLE" i nie można nic zrobić.