Kurs programowania w asemblerze


Pamięć CMOS

W komputerach klasy AT są zainstalowane baterie, które zasilają zegar czasu rzeczywistego oraz 64 bajty pamięci CMOS. W pamięci tej zapisana jest konfiguracja komputera, ustawienia BIOS'u, hasło, itp. Dzięki zasilaniu z baterii pamięć ta po odłączeniu zasilania nie zostaje skasowana. Kiedy natomiast do naszego komputera zostaje podłączone zasilanie, bateria automatycznie się ładuje. Programista do tej pamięci ma dostęp dzięki dwóm portom: 70H i 71H. Do portu 70H zapisujemy adres komórki pamięci, która nas interesuje, następnie możemy odczytać lub wpisać do tej komórki wartość przy pomocy portu 71H. Szczegółowe informacje na temat obsługi portów znajdziesz w rozdziale Porty.

W pamięci CMOS istnieją tzw. adresy chronione tzn., że w innych komórkach zapisana jest suma kontrolna wszystkich tych adresów. Zmiana komórki chronionej spowoduje niezgodność sumy kontrolnej z rzeczywistą sytuacją podczas startu systemu, co w rezultacie spowoduje reset BIOS'u. Kiedy chcemy więc zmienić wartość takiej komórki musimy policzyć na nowo sumę kontrolną i ją również zapisać.

RESET BIOSU jest czasem pożyteczny. W nowszych BIOS'ach, gdzie istnieje opcja auto konfiguracji, zostaną ustawione domyślne wartości wszystkich komórek. Jeśli więc mamy założone hasło na BIOS (NIE NA SYSTEM) i je zapomnimy, a nie znamy hasła serwisowego możemy po prostu zresetować BIOS, a przy okazji zdjąć z niego hasło.

Struktura pamięci CMOS

AdresOpis
0aktualna sekunda zegara czasu rzeczywistego w kodzie BCD
1sekunda ustawienia budzika w kodzie BCD
2aktualna minuta w kodzie BCD
3minuta ustawienia budzika w kodzie BCD
4aktualna godzina w kodzie BCD
5godzina ustawienia budzika w kodzie BCD
6dzień tygodnia (1-niedziela, 2-poniedzialek itd.)
7dzień miesiąca w kodzie BCD
8miesiąc w kodzie BCD
9rok w kodzie BCD (dwie ostatnie cyfry)
AHRTC rejestr stanu A
Bity 0,1,2,3 - wybór tępa (ustawione na 0110)
Bity 4,5,6 - 22 stanowy dzielnik częstotliwości (ustawiony na 010)
Bit 7 - trwa aktualizacja (UIP), 0 oznacza, że można czytać
BHRTC rejestr B
Bity 0 - 1=czas letni; 0-standardowy (ustawione na 0)
Bit 1 - 0=tryb 12 godzinny; 1-tryb 24-godzinny (ustawione na 1)
Bit 2 - 1=dane zapisywane dwójkowo, 0=BCD (ustawione na 0)
Bit 3 - 1=włącza fale proste (ustawione na 0)
Bit 4 - 1=umożliwia przerwanie po aktualizacji (ustawione na 0)
Bit 5 - 1=umożliwia przerwanie budzika (ustawione na 0)
Bit 6 - 1=umożliwia przerwanie co stały okres (ustawione na 0)
Bit 7 - 1=trwa aktualizacja (UIP),0=można czytać CMOS
CHRTC rejestr stanu C. Tylko do odczytu-bity stanu przerwań
DHRTC rejestr stanu D.
Bit 7 - 1=CMOS ma zasilanie,0=baterie są wyczerpane
EHBajt stanu ustawiony przez POST
Bity 0,1 - 0
Bit 2 - poprawność czasu (1=nie jest dzisiaj 30 lutego)
Bit 3 - 1=zły dysk twardy, nie można z niego wystartować systemu
Bit 4 - niewłaściwy rozmiar RAM. 1=POST znalazł inny rozmiar
Bit 5 - 1=nie zgadza się konfiguracja
Bit 6 - 1=nie zgadza się suma kontrolna CMOS'u
Bit 7 - 1=wysiadły baterie zegara
FHPowód wyłączenia
Bajt ten jest sprawdzany przed POST, aby określić sposób jak komputer był resetowany, i jak ma się odpalić
0 = Gorący restart (Alt+Ctrl+Del)
1 = Wyłączenie po określeniu wielkości pamięci
2 = Wyłączenie po wykonaniu testu pamięci
3 = Wyłączenie po błędzie parzystości pamięci
4 = Restart na żądanie BOOTtrap loadera
5 = Zimny restart programowy (wyzerowanie kontrolera przerwań i FAR JMP 0:[467H]
6,7,8 = Restart po teście pracy wirtualnej
9 = Restart po wykonaniu przesyłania w bloku wirtualnym
AH = Zimny restart programowy (FAR JMP 0:[467H]
10HTyp stacji dysków w systemie
Bity 0,1,2,3 - pierwszy napęd
Bity 4,5,6,7 - drugi napęd
0000 - nie zainstalowana, 0001 - 360KB, 0010 - 1.2M, 0011 - 1.44M
11HZarezerwowane
12HTyp dysku twardego (dla C: i D: jeśli ich typ mieści się w przedziale między 1 i 14, w przeciwnym wypadku patrz komórki 19H i 1AH
Bity 0,1,2,3 - Pierwszy dysk twardy C:
Bity 4,5,6,7 - Drugi dysk twardy D:
0000-brak, 1111-typ znajduje się w 19H/1AH, pozostałe=typ dysku
13HZarezerwowane
14HBajt wyposażenia komputera
Bit 0 - 1= Napęd(y) dyskietek zainstalowany
Bit 1 - 1=Koprocesor matematyczny 80287 zainstalowany
Bity 2,3 - 0
Bity 4,5 - pierwotny typ obrazu; 00 - żaden lub EGA,01-40 kolumnowy CGA, 10-80kolumnowy CGA,11-monochromatyczny
Bity 6,7 - Liczba stacji dysków w systemie (00-1, 01-2, 10-3, 11-4)
15HPamięć podstawowa RAM (dolny bajt) 0100H=256KB; 0200H=512KB
16HPamięć podstawowa RAM (górny bajt) 0280H=640KB
17HPamięć rozszerzona ponad 1MB (dolny bajt) (KB)
18HPamięć rozszerzona ponad 1MB (górny bajt)
19HTyp dysku twardego 0 (napęd C:)
1AHTyp dysku twardego 1 (napęd D:)
1BH-2DHZarezerwowane
2EHSuma kontrolna komórek 10H do 20H CMOS (górny bajt)
2FHSuma kontrolna komórek 10H do 20H CMOS (dolny bajt)
30HPamięć rozszerzona ponad 1MB (dolny bajt) (KB)
31HPamięć rozszerzona ponad 1MB (górny bajt) (KB)
32Hliczba 19 w kodzie BCD
33HRóżne informacje
Bit 7-IBM 128KB
Bit 6-używany przez SETUP
34H-37H 
38H-3FHHasło (na układach MC 146818)



  • CMOS - Opis pamięci CMOS 17.0KB
  • AMI - Opis biosu AMI 25.0KB

Autor: Karol Wierzchołowski, opracowano: 12.01.2002 r. Wszelkie prawa zastrzeżone.
Kontakt

Jeśli chcesz się z nami skontaktować napisz na adres: info(at)binboy.org lub odwiedź nasz profil na Facebooku!

O Nas

Serwis binboy.org to kopalnia wiedzy dla wszystkich z branży IT, w szczególności dla programistów i webmasterów. To duży zbiór kursów programowania, tutoriali, darmowych ebooków, setki kodów źródłowych itp.

Bądź w kontakcie

Panel użytkownika

Zaloguj się do panelu użytkownika.
Nie masz konta? Zarejestruj się!
Zapomniałeś hasła?