Un al doilea dezavantaj al funcțiilor ROM BIOS este că majoritatea lor non-reintrare. Asta este, până la finalizarea apelului funcției BIOS, nu puteți apela o altă funcție a BIOS-ului. Ca rezultat, nu poți, ca de obicei, de a utiliza funcțiile BIOS pentru programele rezidente.
În cele din urmă, ultimul dezavantaj al funcțiilor BIOS este că acestea sunt proiectate să funcționeze numai în modul real al procesorului. Când apelați funcțiile BIOS-ului din procesorul securizat de comutare modul procesor va fi în mod real.
Selectarea modului de funcționare - funcția 00h
cerere
operațiunile de program Delay
întârzieri de software sunt utilizate în acele cazuri în care, în orice punct al programului este necesar să suspende executarea ei pentru un timp. În funcție de tipul de întârzieri de execuție software sunt împărțite în două tipuri: întârziere, puse în aplicare pe baza programului de implementare a „goale“ Bucle imbricate, întârzieri și implementat pe baza timer-ul sistemului computerului. Listarea 1 prezintă un exemplu de realizare a întârzierii primului tip.
Listarea 1. Întârzierea program se bazează pe punerea în aplicare a bucle imbricate cu comandă în buclă.
întârziere proc; întârziere subrutină
mov cx, N; N - contor al buclei exterioare
mov cx, 0; Noi oferim numărul maxim de
; repetiții (64K ori) în buclă interioară
Bucla interioară; Bucla interioară
exterior bucla; N repeta vernal ori ciclu
Listarea 1, parametrul N servește ca un timp factor de scalare întârziere:
În acest caz, cea mai mică unitate de timp (de exemplu, „tic“) este executarea buclei interioare, care constă, la rândul său, a executării 65.535 ori timp de comandă în buclă. Parametrul N selectat experimental pentru tzaderzhki (în milisecunde sau secunde), ținând cont de performanța unui anumit calculator.
Dintr-o examinare a acestui exemplu al acestei abordări sunt dezavantaje evidente atunci când este necesar pentru a îndeplini o întârziere de timp în program, indiferent de tipul de calculator. Prin urmare, este rezonabil să se stabilească timpul de întârziere software-ul timer-ul imediat. Semnalele de ieșire ale timer-ul, cu o frecvență de 18,2 ori pe secundă nu depinde de performanțele computerului și să joace rolul de contorul de timp de zi cu zi. Punerea în aplicare a acestei metode utilizează o funcție de 00h întrerupere BIOS int 1Ah.
Întoarcere: CX: DX - numărul de ceas sistem de căpușe la miezul nopții,
AL - tranziție de pavilion pe parcursul zilei.
Exemple returnează valori în CX: DX:
12h 1 sec sau 18,
1 minute 04 44h sau 1092,
1 1 oră 00 sau 07h 65543,
24 ore 18 00 B0h sau 1,573,040.
Pentru întârzieri mai puțin de 14 secunde, puteți utiliza numai scăzut DX registru octet.
Listarea 2. B Acest exemplu este o întârziere de 5 secunde, ceea ce corespunde numărului de timer-ul 91
mov ah, 0; Prin „citirea“ de cicluri de ceas
int 1Ah; Se obține o valoare de ciclu contra cx: dx
adaugă dx, 91; Adăugați 5 secunde. cel mai tânăr în mod dx
mov bx, dx; Memoreaza BX valoarea necesară și
; Executam o verificare a valorilor constante
; timp de contor zile
int 1Ah; Din nou, obținem valoarea contorului
cmp dx, bx; Comparați cu necesară
repeta jne; În cazul în care nu este egal, atunci se repetă din nou,
; în caz contrar întârzierea este de peste
Dacă este necesar introducerea unei întârzieri cu mare precizie, este necesar să se utilizeze o funcție 86H întrerupe BIOS int 15h. Acesta vă permite să specificați timpul de întârziere în microsecunde. În timpul executării întârzierea întrerupere permisă. se întoarce de control program după un timp predeterminat.
Int 15h, functia 86h.
Apel: AH = 86h, CX: DX = timpul de întârziere în microsecunde.
Întoarcere: CF = 0 - executie normala, CF = 1 - funcția nu este acceptată.
Exemplu: CX: DX = 0098h: 9680h = 10000000 microsecunde = 10 secunde.
Luați în considerare doar un simplu grafic VGA și pe scară largă 320x200 modul cu 256 de culori. În ea, fiecare pixel este descris de un octet, valoare care determină culoarea pixelului.
Treceți la grafic 320x200 modul VGA, 256 de culori se realizează prin intermediul 00H funcțiile BIOS 13h 10h întrerupe modul de instalare.
putpix x macro, y, culoare; Pixel folosind BIOS
un mesaj este afișat «C000 ROM Eroare». În cazul în care BIOS-ul video nu este găsit, este utilizat. perfect se descurcă cu funcțiile sale set de drivere grafice. Luând în. o valoare de 0. Pentru a activa această valoare rezhimaispolzuyte 1 Setați deoparte.
bibliotecă. De exemplu, BIOS. și anume un program care. proceduri pentru a utiliza funcțiile de bază ale unui calculator personal. conținut ecran de imprimare graficheskomrezhime. HELP Oferă ajutor. procesează ps - o concluzie la ecranul listă.
și introduceți BIOS. În funcție de BIOS. acest obicei. utilizate pentru a configura graficheskogorezhima general) sau prin editarea directă. ieșire text al fontului specificat, și auto-atrage fonturi hieroglife necesare ispolzuyufunktsii.
nu este acceptat de BIOS. În acest caz, există. graficheskomrezhime. nnn argument specifică numărul de co-anual pagini, care ar trebui să fie utilizat pentru ieșire. ku (Asistent căutare) poate Indexarea Serviciul ispolzovatfunktsiyu, OAPC - guvernare.