Ce valoare va returna funcția Min H4 H8. Valoare minimă, cu excepția zerourilor

¨ Ieșire text pe ecran prin programarea directă a clipului video.

¨ Dezvoltarea programelor de aplicații utilizând funcțiile de service BIOS pentru a lucra cu ecranul și tastatura.

¨ Încurajați întârzierea operațiunilor software.

În [2, au fost luate în considerare diverse funcții de sistem ale ieșirii DOS pe ecranul simbolic. Cu toate acestea, caracteristicile DOS sunt foarte limitate: nu are funcții pentru a schimba culoarea caracterelor afișate și poziționarea cursorului. În plus, nu există mijloace de formare a imaginilor grafice în DOS.

Toate caracteristicile sistemului video de calculator pot fi implementate utilizând Funks Video Interrupt Bios int 10h.. Întrerupe int 10h. Oferă: Modificarea modului video (text sau grafic); retragerea informațiilor simbolice și a textului; Shift Fonturi, setați paleta de culori, lucrați cu o imagine grafică. Programarea sistemului video utilizând instrumentele BIOS este mai greoaie, cu toate acestea, capabilitățile mari și rata ridicată a ieșirii determină utilizarea pe scară largă a acestei metode în programele de aplicații.

Această lucrare discută funcțiile BIOS pentru a menține sistemul video de calculator, precum și funcțiile pentru lucrul cu tastatura. Listăm funcțiile care fac obiectul unei revizuiri în lucrarea de laborator.

Int 10h:

funcție 00h - Instalarea modului video;

funcția 02h - Setarea poziției cursorului;

funcția 03H - Citiți poziția și dimensiunea cursorului;

funcția 05H - Instalarea arcului video;

fUNCȚIA 06H (07H) - Fereastra de inițializare sau derulare în sus (în jos);

funcția 08H - Citirea simbolului și a atributului în poziția cursorului;

funcția 09H - Înregistrarea unui simbol și atribuirea poziției cursorului;

funcția 0AH - Înregistrarea unui simbol în poziția cursorului cu atributul curent;

funcția 0EH - Înregistrarea unui simbol într-un mod de teletep cu atributul curent;

0fh funcția - obțineți modul de afișare;

funcție 1003H - Comutarea destinației byte-ului de atribut mai vechi: Flicker / Luminozitate,

funcția 13H este o înregistrare a unui șir cu un atribut specificat într-un mod de teletep.

INT 16H:

00h funcția 00h (10h) - citirea caracterului de pe tastatură cu așteptările;

fUNCȚIA 01H (11H) - Verificarea tamponului tastaturii pentru prezența unui simbol în el;

fUNCȚIA 02H (12H) - Tastatură de primire a steagurilor (extinsă).

Int 15h,funcția 86h - întârziere.

Int 1.AH, Funcția 00h - obținerea timpului de sistem.

8.2.2. Programarea directă a clipului video în modul text

Controlerele video moderne susțin o varietate de moduri de text și grafice. Modurile de text diferă în rezoluție (numărul simbolurilor afișate orizontal și vertical) și paleta de culori (modul monocrom sau 16 color). Pentru modurile grafice, caracteristica principală a clasificării este numărul de culori afișate simultan și, în consecință, numărul de biți ai memoriei video, alocat fiecărui punct (pixel) al imaginii. Următoarele tipuri de moduri grafice disting:

Monocrom (codare pe 1 biți);

16-Culoare EGA / VGA. (Codificare pe 4 biți);

256 de culori SVGA. (Codificare pe 8 biți);

- Hicolor. (Codare pe 16 biți);

- Culoare adevarata. (Codarea pe 24 biți / 32 de biți).

Modurile grafice VGA (SVGA) sunt puternic depășite, iar textele continuă să fie aplicate cu succes (vezi Tabelul 3.2 p. 8.2.3).

Tot ceea ce este afișat pe monitor - grafică, textul este prezent simultan în memorie încorporat în adaptorul video. Pentru ca imaginea să apară pe monitor, acesta trebuie înregistrat în memoria adaptorului video. În modul text, spațiul de adrese este alocat sistemelor compatibile VGA pentru memoria video (cu excepția celui de-al șaptelea mod video cu un adaptor monocrom), începând cu adresa logică B800h și terminând cu adresa BF00H: 0FFFF. Această zonă este împărțită în 8 sectoare în numărul de magazine video (4 KB la pagină). Astfel, diviziunea capitolului spațiului de adresă a memoriei video în modul text are următoarea formă:

B800H: 0000H - Pagina 0, Offset în intervalul 0000h - 0ffff

B900H: 0000H - Pagina 1, Offset în intervalul 0000H - 0FFFH

- ...........

BF00H: 0000H - Pagina 7, Offset în intervalul 0000H - 0FFFH

Driverul video corespunzător paginii active este afișat pe ecran. În modurile de text pentru imaginea fiecărui simbol, sunt date 2 octeți: octetul cu ASCII-cod simbol și octet cu atributul său. În același timp la adresa B800H: 0000h. Există un octet cu un cod de simbol (colțul din stânga sus al ecranului) și în B800H: 0001h. - atributul acestui simbol; B800H: 0002h. - codul celui de-al doilea simbol și în B800H: 0003H. - atributul celui de-al doilea simbol etc. În general, atunci când formați o imagine direct în driverul video, ocoliți programele DOS și BIOS, toate codurile de control ASCII. pierzând funcțiile de control și afișate sub formă de caractere corespunzătoare. Structura octetului atributului este prezentată în fig. 3.1.

Smochin. 3.1. Structura atributelor de byte

Din fig. 3.1 Rezultă că fiecare personaj poate lua oricare dintre cele 16 culori posibile determinate de combinația de 4 biți de juniori. BITS 4-6 BYTE Atribute Setați culoarea de fundal sub acest simbol. Ultimul bit 7, în funcție de modul adaptor video, determină fie luminozitatea fundalului sub acest simbol (apoi fundalul poate, de asemenea, să dureze 16 culori diferite) sau pâlpâirea simbolului ( instalatDos în mod implicit).

La încărcarea mașinii, este instalată o paletă standard, codurile de culori sunt afișate în tabel. 3.1. Luați în considerare câteva exemple. Deci, în modul Flicker, valoarea atributului semi-capcane senior 8h.indică faptul că nu este un fundal gri, ci negru, cu un simbol care strălucește, culoarea căreia este încă determinată de gestonul mai tânăr; Sensul cannisului superior 0ch.- fundal roșu cu un simbol plickering. Comutarea destinației bitului 7 se efectuează prin subfuncție 03h.funcții 10h. Întrerupe int 10h..

Tabelul 3.1.

Coduri de flori Paletă standard

Salată

Turcoaz

Ușor turcoaz

Violet

Lumina violet

Maro

Strălucitor

Codurile de caractere dual-octete sunt scrise în driverul video în ordinea în care acestea ar trebui să apară pe ecran: Primele 80 * 2 octeți corespund primei linii ale ecranului, al doilea 80 * 2 octeți - al doilea, etc. În acest caz, tranziția la următoarea linie a ecranului este determinată de codurile de necontrolare ale returnării transportului și transferul liniei, dar introducând codul în celălalt loc al videoclipului. Pentru a accesa accesul la unitatea video din program, trebuie să fiți administrat într-una din adresa segmentului registrelor de date a clipului video. După aceasta, prin stabilirea uneia sau a altor compensări, puteți înregistra în orice locuri (celule) ale videoclipului. Calculați deplasarea celulei în coordonatele "coloanei de șir" (rând,clm) Poti:

Videdd.r \u003d (rOW * 160) + (cLM * 2)

Cu o cantitate mare de date de ieșire, cadrul de informații este format în avans în tamponul de utilizator situat în segmentul de date al programului.

Listarea 3.1.Înregistrarea rândurilor într-un clipboard video 0- pagini .

; Curățarea ecranului

; Configurați înregistrarea segmentului ES la pagina clip video și DS la segmentul de date

; Comutat la clipul video al șirului de simbol prin configurarea corespunzătoare

; registre si, di si cx

cld; vizualizați înainte

rEP MOVSB;) *; trimiteți șirul de caractere cu atribute într-un clipboard video

; Opriți programul pentru a respecta rezultatul (altfel, după finalizarea programului

; Cererea DOS de a introduce comanda poate fi pierdută informațiile furnizate)

; Câmpurile de date din segmentul de date al programului. Simboluri și atribute: 0B0H - CVELL

; turcoaz pe negru, 0E4H-ARASNY pe galben

mSG DB '*', 0B0H, 'T', 0E4H, 'E', 0E4, 'S', 0E4, 'T', 0E4, '*', 0B0H

În acest fragment al programului, codurile simbolice ale mesajului afișat sunt intercalate cu atributele lor. Această metodă de generare a câmpurilor de date destinate înregistrării directe în memoria video devine voluminoasă, dar poate fi simplificată în mod semnificativ dacă caracterele de ieșire au aceleași atribute. Deci, dacă vrem să ieșim caractere text dintr-un segment de date cu un singur atribut 0e4h., atunci trebuie doar să înlocuim o linie de comandă marcată în simbolul fragmentului de mai sus "*)" , pe trei. În același timp, sarcina liniei de date va dobândi formularul familiar pentru noi.

mOV SI, MSG offset; Deplasarea sursei

mOV di, 160 * 12 + 36 * 2; recepția receptorului (36 coloană a liniei 13),

mOV CX, MSGLEN; Numărul de octeți expediați

cld; vizualizați înainte

mov ah, 0e4h; Atributul simbolurilor de ieșire 0E4H - roșu pe galben

sTOSW; descărcarea "simbol + atribut" de la Ah în driverul video (AX → ES: DI)

ciclu de buclă; repetați msglen ori

; Câmpurile de date din segmentul de date al programului.

msg db '* Test *'

Metoda de mai sus a textului de ieșire este formatată de o linie video fără a lua în considerare simbolurile de transfer sau de linii de la marginea din stânga. Introducerea regulilor elementare ale editorului de text în procedura de ieșire va complica foarte mult programul. În acest caz, este recomandabil să utilizați funcțiile BIOS pentru a afișa mesaje.

Dezvoltarea structurii programelor implicate în vizualizarea posturilor video arbitrare la care informațiile sunt pre-înregistrate prin metoda de programare directă a clipului video, produs convenabil utilizând funcția 05 h.int 10.h.BIOS (pag. 8.2.3.2).

8.2.3. Datele de referință privind funcțiile BIOS

8.2.3.1. Întrerupeți int 10h. Funcții video BIOS.

¨ Funcție 00h. Instalarea modului video (tabelul 3.2) din videoclipul curentului de curățare a ecranului video (Curățarea rapidă a ecranului este realizată de funcția 06h și 07.h).

Apel: AH \u003d 00h.,

Al. \u003d Modul video (codul modului este setat în biții mai tineri, instalând în 1 Bit Senior interzice curățarea ecranului).

Provocarea distruge registrele TOPOR,BP,Si, I.Di..

Tabelul 3.2.

Moduri video și pagini text în standard VGA.Sprijinit
Controlere video moderne

Mod.

Rezoluţie

Culoare

Dimensiunea semnului

Abordare

Pagini

haltone.

haltone.

3 (Mono. )

În mod implicit, DOS utilizează modul 3 (cu toate acestea, programul decorat corect ar trebui să verifice sau să instaleze modul text dorit cu restaurarea ulterioară a celei anterioare).

¨ Funcția 02h. Setarea poziției cursorului.

Specifică poziția cursorului pe ecran în coordonatele de text din care va fi afișat textul. Numărătoarea inversă a numărului și a numărului de coloane este condusă din colțul din stânga sus. Cursorul poate fi instalat atât în \u200b\u200btext, cât și în mod grafic, cu toate acestea, în modul grafic, cursorul nu este vizibil. BIOS acceptă până la opt cursoare independente - una pentru fiecare pagină (a se vedea tabelul 3.2) Indiferent de ce pagină este activă. Funcţie 02 h.

Apel: AH \u003d 02h.; Bh.\u003d numărul paginii (0,1, ... 7), de obicei 0;

Dh \u003d. linia; Dl.\u003d coloana.

Provocarea distruge registrele TOPOR,BP,SIși Di..

¨ Funcția 03h. Citiți poziția și dimensiunea cursorului.

Returnează coordonatele curente ale stării cursorului pe pagina selectată. Acest lucru face posibilă trecerea temporară la locul de muncă pe o altă locație ecran și apoi să reveniți la vechiul loc. Funcţie 03 h.BIOS poate fi utilizat în combinație cu funcțiile DOS pentru a organiza ieșirea pe ecran.

Apel: Ah \u003d 03h, bh \u003d Numărul paginii (0,1, ... 7), De obicei 0..

Întoarcere: Dh, dl \u003d Rând și coloană din poziția curentă a cursorului,

Ch, cl.\u003d Primele și ultimele șiruri de caractere ale cursorului.

Apelul distruge registrele Ax, BP, Si și Di.

¨ Funcția 05h. Instalarea unei arhitecturi video.

Setează un spațiu de stocare activă (atât text, cât și grafic).

Apel: Ah \u003d 05h, al \u003d Numărul paginii (0, ..., 7).

Provocarea distruge registrele TOPOR,BP,SIși Di..

Un program care stabilește o altă pagină decât cel curentă este necesar pentru a restabili lucrarea inițială la sfârșitul lucrării.

¨ FUNCȚIA 06H (07H). Inițializare sau fereastră de derulare în sus (în jos).

Inițializează o fereastră cu coordonate specificate, spații ASCII.cu un atribut dat (AL \u003d 0)sau derulează conținutul ferestrei UP (în jos) la numărul specificat de șiruri ( Al.\u003d numărul de rânduri). Când derulați, rândurile apar de jos (de sus) sunt umplute cu spații ASCII. Cu un atribut specificat. Caracteristica este convenabilă pentru a fi utilizată pentru a curăța rapid ecranul sau a unei ferestre dreptunghiulare.

Apel: AH \u003d 06H (07h);

Al \u003d 0 - Curățenie Al \u003d n (n\u003e 0) - Defilați N. rânduri;

Bh \u003d. Caractere de atribute în fereastră;

Ch, cl \u003d Coordonatele de rând și coloane (Y, X)coltul din stanga sus;

Dh, dl \u003d Coordonatele de rând și coloane (Y, X) Colțul din dreapta jos.

Provocarea distruge registrele TOPOR,BP,Siși Di.

¨ Funcția 08h. Citirea unui simbol și atribut în poziția curentă a cursorului de pe pagina selectată.

Apel: AH \u003d 08h., Bh \u003d. Numărul paginii (0, ..., 7), De obicei 0.

Întoarcere: Ah \u003d. Atribut de simbol, Al \u003d ASCIIcod simbol.

Provocarea distruge registrele BP,SI și Di.

¨ FUNCȚIA 09H.. Înregistrarea unui simbol cu \u200b\u200bun atribut specificat pe ecran în poziția cursorului. Acționează atât grafic cât și în moduri textuale. În modul grafic, caracterele nu trebuie să meargă la următoarea linie. Toate codurile din Al sunt tratate ca simbolice și nu gestionează poziția cursorului. După afișarea simbolului, cursorul se schimbă spre următoarea poziție a funcției 02h. Coeficientul de repetare vă permite să afișați șirurile de aceleași caractere. În modul text, simbolul este afișat cu specificat în Bl. Atribut. În grafic - conținut Bl. Aceasta afectează numai culoarea simbolului, dar nu pe fundalul sub ea. Imaginea grafică sub cunoaștere este frecată.

Apel: AH \u003d 09h., Al \u003d ASCII.- simbol,

Bl.\u003d atributul de simbol (modul text) sau numai simbolul de culoare (modul grafic),

Bh \u003d.numărul paginii (0,1, ... 7), Cx.\u003d Coeficientul de repetare.

Provocarea distruge registrele TOPOR,BP,SI și Di..

¨ Funcția 0h. Înregistrarea unui simbol cu \u200b\u200batributul curent la ecran în poziția cursorului. Funcția acționează în ambele moduri grafice și de text. Caracterul ia atributul instalat anterior pentru această poziție. Toate codurile ASCII din Al sunt tratate ca simbolice și nu controlează poziția cursorului (ca în funcția 09h). După afișarea simbolului, cursorul se schimbă spre următoarea pozițiefuncția 02h.

Apel: Ah \u003d 0ah., Al \u003d ASCII.- simbol,

Bh \u003d. Numărul paginii (0,1, ... 7), Cx \u003d. Coeficientul de repetare.

Provocarea distruge registrele TOPOR,BP,SI și Di..

¨ Funcția 0EH. Înregistrarea unui simbol cu \u200b\u200batributul curent în modul TELETEP.

Înregistrează simbolul ASCII. În poziția cursorului (funcția preinstală 02h.) Pe pagina activă și schimbă cursorul în poziția următoare. Coduri. ASCII.: 07h - Apel (Bel), 08h - Pasul înapoi (Bs), 0dh - Întoarcerea transportului (CR), 0AH - Traducere de linie (LF), considerate manageri Și acțiunile corespunzătoare sunt efectuate. Codurile de control rămase sunt considerate simboluri și sunt afișate. Există o tranziție automată a cursorului la următorul șir după finalizarea celei anterioare, precum și derulați ecranul până la 1 șir după umplerea fundului.

Apel: AH \u003d 0EH, Al \u003d ASCII.- simbol,

Bl.\u003d simbolul culorilor (numai pentru modul grafic),

Bh \u003d. Numărul paginii (0,1, ... 7), pagina activă implicită este validă.

¨ Funcția 0.Fh. Obțineți modul de afișare și numărul paginii curente .

Apel: Ah \u003d 0.Fh..

Întoarcere: Al. = modul de afișare AH.\u003d Lățimea ecranului în format text

Bh \u003d.numărul paginii active.

Provocarea distruge registrele BP,SI și Di.

Exemplu. Procedura de setare a poziției cursorului pe pagina curentă.

Intrare : dH. \u003d șir (0 - 25), dl.\u003d coloana (0 - 79)

.......... ; Restaurarea registrelor

¨ Funcția 10h. Podfunction 03h.. Bitul de comutare "Flicker / Luminozitate".

Specifică numirea bitului mai vechi 7 al atributului de caractere: un simbol care pâlpâie sau o luminozitate crescută a fundalului.

Apel: A.X.\u003d 1003h, Bl.\u003d Scopul celei de-a 7-a biți a atributului:

0 - luminozitate crescută, 1 - Flicker (Instalat în mod implicit).

Funcția afectează toate simbolurile ecranului care au bitul mai mare al atributului de fundal.

¨ Funcția 13h. Înregistrați șir de caractere cu atribute specificate.

Înregistrează un șir la pagina clip video curentă, pornind de la poziția specificată. Coduri. ASCII.: 07h.- Apel, 08h.- intoarce-te, 0ah - traducere linie,
0dh - Returnează căruțele sunt considerate manageri, restul - ca simbolic.

Apel: Ah \u003d 13h., Al \u003d. Modul de înregistrare:

0 - Atribut de simbol în Bl.Șirul conține numai coduri de caractere, după înregistrarea cursorului ia poziția inițială (adică ieșirea liniei următoare, dacă nu modificați poziția cursorului, începeți cu poziția inițial instalată);

1 - diferă de modul 0 în care după înregistrarea cursorului rămâne la sfârșitul liniei;

2 - Șirul conține caractere alternativ și coduri de atribute (adică fiecare caracter este descris de 2 octeți - ASCII.-code și atribut), după înregistrarea cursorului ia poziția inițială;

3 - Diferă de modul 2 în care la sfârșitul ieșirii, cursorul rămâne la capătul liniei.

Bh.\u003d numărul paginii (0,1, ... 7), Bl.\u003d Atribut pentru modurile 0 și 1,

Cx.\u003d lungimea șirului simbolic (în lungime numai codurile de caractere sunt incluse, dar nu octeți de atribute),

Dx \u003d dh.dl.\u003d Coordonatele cursorului (șir, coloană) la punctul de pornire al ieșirii liniei de pe ecran,

Es: bp.\u003d Adresa pentru a începe un rând în memorie.

Fiți atenți la caracteristica sarcinii de adresă !

1. Programe (ateliere de instruire) efectuate în mediul de operare DOS, utilizați modul de text implicit 3, pagina 0.

2. Programele de destinație larg trebuie să solicite modul video și pagina curentă (funcția 0fh, int 10h) Cu aplicațiile lor în funcțiile BIOS utilizate.

.......

MOV V_MODE, AL; Salvați modul

MOV Current_page, BH; Salvați șirul

3. Dacă programul afișează imaginea în diferite pagini, atunci secvența de acțiuni cu fiecare pagină poate fi următoarea (modul implicit al paginii "0"):

Instalarea unei funcții a paginii 05h.;

Setarea funcției poziției cursorului 02h.;

Clădirea textului textului BIOS sau DOS.

În viitor, vizionarea ciclică a conținutului paginilor prin comutarea funcției poate fi 05 h,int 10.h.. Când părăsiți programul, asigurați-vă că restaurați distribuitorul "0" dorit. Faceți-o, de exemplu, puteți.

..........

..........

; Analiza tamponului de tastatură prin funcția DOS 06H INT 21H pentru ao completa cu presare; taste arbitrare

mov ah, 06h; Funcția de intrare fără a aștepta

mov dl, 0ffh; intrare

out_program :; Restaurați funcția paginii 05H, INT 10H

..........

Clippers-urile video pot fi formatate în mod repetat și metoda de programare directă a memoriei. Selectarea paginilor se realizează prin inițializarea corespunzătoare a registrului segmentului. Es. (A se vedea punctul 8.2.2). Vizualizarea conținutului de conținut poate fi, de asemenea, completat de comutarea lor secvențială utilizând funcția. 05h, int 10h.

4. Structura programului demo care explorează funcția "Flicker - luminozitate a fundalului" (funcție 10h.Subfuncție 03h, int 10h).

; Curățarea ecranului

..........

; Inițializarea a 2 ferestre locale, fiecare cu atributul și textul acesteia. Când se specifică

; Atributele de culoare mai vechi (șobolanul 7) este selectat egal cu "1".

.........

continuați :; Porniți pâlpâirea

mOV BL, 1; Flicker

; Introduceți o întârziere timp de 3 secunde

.........

; Includeți creșterea luminozității

.........

; Introduceți o întârziere timp de 3 secunde

.........

; Analiza tamponului de tastatură DOS 06H INT 21H funcționează pentru ao completa cu presare

; Taste arbitrare

.........

jnz out_program; zf \u003d 0, există un simbol, pe ieșire

jMP continuă; ZF \u003d 1, fără simbol, va continua

out_program:; restabiliți pâlpâirea (implicit)

..........

ieșire: MOV AX, 4C00H; Apelați funcția de terminare a programului

.........

5. Dacă programul este organizat de un ciclu de ieșire a datelor infinite pe ecranul BIOS-ului (09 h, 0.Ah, 0.EH, 13.h)atunci nu poate fi de urgență pentru a întrerupe folosind intrările de taste Ctrl + C. (adică, pentru a ieși din program, așa cum se poate face atunci când se utilizează funcțiile DOS corespunzătoare). Astfel încât să puteți face acest lucru, activați funcția din corpul ciclului 0bh. Întrerupe Int 21h..

8.2.3.3. Întrerupeți int 16h.

¨ FUNCȚIA 00H (10H). Citirea simbolului tastaturii cu așteptările.

Citește un simbol și un cod de scanare din tamponul de apel. După citire, ele sunt scoase din tampon și au revenit la registru TOPOR.. Dacă tamponul este gol, așteptați la intrare.Fiecare tastă de pe tastatură corespunde codului așa-numit de scanare corespunzător numai acestei taste. Acest cod este trimis de tastatură de fiecare dată când apăsați și eliberați cheia și procesată în manipulatorul de întrerupere BIOS. Int 09.h.. Funcţie 00h. Oferă posibilitatea de a obține un cod de presă fără a intercepta acest manipulator. Dacă cheia este apăsată ASCII-simbol, apoi:

Al-ASCII.- simbol, Ah - Scanați codul cheie.

Dacă cheia apăsată tasta ASCII-cod, apoi:

Al-00h., Ah -avansat ASCII-codul.

Apel: AH \u003d 00.h. (83/84-cheie.).

Întoarcere: Al \u003d ASCII.-CODE Simbol descris pe cheie / 00h.,

AH.\u003d Codul de scanare / avansat ASCII.-Cheile de coduri.

Funcția 10.h (AH \u003d 10) - 00h pentru tastatura extinsă (101 / 102- cheie.
ASCII-coduri pentru taste F11.F12., precum și pentru o serie de alte combinații.
În calitatea semnului cheilor de control sau a combaterilor acestora, în plus față de valoarea 00 h., sunt utilizate 0ah, 0dh. și E0h..

¨ FUNCȚIA 01H (11H). Verificarea tamponului tastaturii pentru prezența unui simbol în el.

Determină dacă există caractere de așteptare în tamponul inelului; Returnează steagul așteptării și simbolul în sine când este prezentat. Cu toate acestea, simbolul și codul de scanare nu sunt îndepărtate din tampon și pot fi obținute din nou atunci când o funcție este repetată 00 h in 16.h.. Această funcție se referă la numărul de asincron: determinarea stării tamponului de intrare, returnează controlul
gram.

Apel: AH \u003d 01h. (83/84-cheie.), 11h.(101/102-Cheie.).

Întoarcere: Zf \u003d.1, dacă tamponul este gol și Zf.\u003d 0, dacă există un caracter de așteptare în tampon. În acest caz:

Al \u003d ASCII.- simbol / 00h., AH.\u003d Codul cheie de scanare / avansat ASCII-codul.

Funcția 11.h (AH \u003d 11.h) -funcție avansată Opțiune 01 h. Pentru tastatura extinsă (101/102 -Cheie.). Vă permite să vă extindeți ASCII.-Codes pentru chei. F11.F12., precum și pentru o serie de alte combinații. Ca semn de chei de control sau combinații lor, în plus față de valoarea 00 h., sunt utilizate 0ah, 0dh. și E0h..

¨ Funcția 02.h (12.h). Obținerea steagurilor tastaturii.

Returnează octeții steagului de tastatură care descriu starea tastelor de control înregistrate în zona de date BIOS la adresa 0000 h: 0417.h.

Apel: AH \u003d 02.h.

Întoarcere: Un L.\u003d 1 steaguri de tastatură a octeților.

Byte Bits au următoarele valori:

0: 1 - Dreapta. Schimb. Presat

1: 1 stânga Schimb. Presat

2: 1 - Ctrl. (orice) apăsat

3: 1 - Alt. (orice) apăsat

4: 1 - MODE. Defilați blocarea.

5: 1 - MODE. Blocarea numerelor

6: 1 - MODE. Majuscule.

7: 1 - MODE. Introduce. Activ

Funcția 12.h (AH \u003d 12.h) -funcție avansată Opțiune 02 h.pentru o tastatură extinsă (101 / 102- cheie.). Afișează aceeași valoare octetă ca și funcția 02 h., de către adresa 0000 h: 0417.h., și, în plus, a doua octet de stare a tastaturii (adresa 0000h: 0418h) cu următoarele valori:

0: 1 stânga Ctrl. Presat 4: 1 - presat Defilați blocarea.

1: 1 stânga Alt. Presat 5: 1 - presat Blocarea numerelor

2: 1 - Dreapta. Ctrl. Presat 6: 1 - presat Majuscule.

3: 1 - Dreapta. Alt. Presat 7: 1 - presat Sysreg.

8.2.3.4. Întârzierea software-ului

Întârzierile software sunt utilizate în cazurile în care, în orice moment al programului, trebuie să vă suspendeți execuția pentru o perioadă de timp. După tipul de execuție, întârzierile programului sunt împărțite în două tipuri: întârzieri implementate pe baza implementării programului "gol" și întârzieri implementate pe baza cronometrului sistemului computerului. Listarea 3.2 prezintă un exemplu de implementare a primei întârzieri de tip.

Listarea 3.2. Întârzierea software-ului bazat pe execuția ciclurilor imbricate cu echipa Buclă..

Proc întârzie; supprimă

MOV CX, N; N - Contor de ciclism extern

Exterior: împingeți CX; salvați conținutul contorului ciclului extern

MOV CX, 0; Asigurați-vă numărul maxim de repetiții (64k ori)

; ciclu intern

Inner: buclă interioară; ciclu intern

Pop cx; restaurarea conținutului contorului ciclului extern

Buclă exterioară; repetați ciclul agățat n ori

Afișarea parametrului 3.2 N. Efectuează rolul unui multiplicator de timp de întârziere la scară largă

t. fund \u003d.N *t. Execuțiile ciclului intern.

În acest caz, cea mai mică unitate de timp (adică "bifați") este momentul executării unui ciclu intern, la rândul său, din timpul execuției de 65535 de ori comenzii Buclă.. Parametru N.selectate experimental pentru a obține t. înapoi (în MSEK sau secunde), luând în considerare viteza unui anumit computer.

Din examinarea acestui exemplu, dezavantajele acestei abordări sunt evidente atunci când este necesar să se asigure o întârziere de timp în program, indiferent de tipul de calculator utilizat. Este rezonabil să se determine momentul întârzierii programului direct de cronometru. Semnalele de ieșire a temporizatorului cu o frecvență de 18,2 ori pe secundă nu depind de performanța calculatorului și de a juca rolul unui contor de timp zilnic. Implementarea acestei metode utilizează funcția 00 h. BIOS întrerupe Int 1.Ah.

Int 1a. h, funcția 00 h. Citirea Ciclurilor Timer Counter.

BIOS Interrupt Handler de la temporizatorul de sistem ( Int 8.) numără numărul de întreruperi (la fiecare 55 ms sau 18.2 ori pe secundă) într-un cuvânt dublu de memorie cu adresa 0040h: 006s.h.. Această funcție returnează valoarea acumulată (cod binar) și resetează-o în 0 . În registru Al. Se intoarce 0 Dacă conținutul contorului nu a depășit valoarea corespunzătoare 24 de ore (când se atinge această valoare, contorul este resetat), altfel se întoarce Al \u003d.1.

Apel: A \u003d 00.h..

Întoarcere: Cx: dx. - numărul de cicluri de timp de sistem de la miezul nopții,

Al. - Steagul de tranziție într-o zi.

Exemple de valori returnate în Cx: dx.:

1 secundă. h. sau 18.

1 minut 04 44 h. sau 1092,

1 oră 1 00 07 h. sau 65543,

24 de ore 18 00 B0 h. sau 1 573 040.

Pentru întârzieri de 14 secunde mai mici, puteți folosi doar revista Paye DX.

Listarea 3.3. B Acest exemplu stabilește o întârziere de 5 secunde, ceea ce corespunde unui cronometru de numărătoare de 91

..........

mov ah, 0; funcția "Citire" Cicluri cronometre

int 1ah; obțineți valoarea contorului ciclului în CX: DX

adăugați DX, 91; adăugați 5 secunde. La cuvântul mai tânăr în dx

mOV BX, DX; Îmi amintesc valoarea necesară în BX și de a efectua

; verificarea permanentă a valorilor contra-time

repetați: INT 1AH; din nou primim valoarea contorului

cmp dx, bx; comparați cu dorit

jne repetat; dacă nu doar, apoi repetați din nou,

; în caz contrar, întârzierea sa terminat

Dacă este necesară introducerea unei întârzieri de înaltă precizie, atunci este necesar să utilizați funcția 86h. BIOS întrerupe Int 15h. Vă permite să determinați timpul de întârziere în microsecunde. În timpul întârzierii, întreruperile sunt permise. Managementul programului este returnat după expirarea timpului specificat.

Int 15h, funcția 86h.

Apel: AH \u003d 86.h, S.X. : Dx \u003d. Întârzierea timpului în Mksek.

Întoarcere: Cf \u003d 0. - executarea normală, Cf \u003d 1. - Funcția nu este acceptată.

Exemplu: CX:Dx \u003d.0098h:9680h. \u003d 10 000 000 μSEK \u003d 10 secunde.

8.3. Opțiuni ale unei sarcini individuale

1. Inițializați un ecran cu un atribut specific. Pentru a impune o fereastră mai mică locală cu un alt atribut de culoare. În partea centrală a ferestrei, afișați textul (mai multe linii) din memorie cu derularea ciclică a ferestrei ferestrei în mai multe rânduri în sus și în jos. Schimbarea tipului de derulare este setată de întârzierea software-ului (2 ... 3 secunde). Oferiți ieșirea din program.

2. Inițializați două construcții video, fiecare cu atributul său și textul înregistrat (unele caractere text trebuie să aibă o culoare excelentă). Organizați o schimbare ciclică a magazinelor video cu o perioadă de 2 ... 3 secunde. Furnizați ieșirea din program cu restaurarea paginii curente.

3. Inițializați 2 ferestre locale pe ecran. Fiecare fereastră cu atributul și textul cu mai multe linii. Organizați atributele de comutare ciclică ale primei ferestre la al doilea și înapoi. Ciclul de comutare este setat la o întârziere de timp de 2 ... 3 secunde. Oferiți ieșirea din program.

4. Pe ecran inițializați 2 ferestre locale. Fiecare fereastră cu atributul și textul său în mai multe rânduri. Organizați comutarea textului ciclic de la o fereastră la alta cu o întârziere de timp de 2 ... 3 secunde. Oferiți ieșirea din program.

5. În ecranul inițializării ferestrei, cu atributul și textul în mai multe rânduri. După un timp de întârziere 2 ... 3 secunde impune parțial o fereastră_2 pe ea cu alt atribut și text. Procesul de procesare. Oferiți ieșirea din program.

6. Pe fereastra inițială de inițializare cu un atribut (și text), informați-l drift într-o direcție orizontală (verticală). Când marginea atinge ecranul, fereastra modifică driftul în direcția opusă. Etapa de mișcare a ferestrei locale din spațiul ecranului trebuie să fie de mai puțin decât dimensiunea ecranului în sine.

7. În ceea ce privește fereastra locală cu un ecran de atribut (și text). După apăsarea tastei de comandă, fereastra începe să-și schimbe dimensiunile (pulsate), creșterea și scăderea cu o anumită perioadă. O etapă temporară de redimensionare a unei ferestre trebuie să fie mult mai mică decât o perioadă.
Pulsarea.

8. Inițializați ecranul și fereastra locală în el cu atributele dvs. Organizați modul de ieșire text în fereastra de tastatură locală. Furnizați capacitatea de a edita text, precum și de a derula ferestrele atunci când îl umpleți.

9. Inițializați ecranul și două ferestre locale mici în ea. Utilizați cheia<Tab.\u003e Organizați cursorul de comutare de la o fereastră la alta. Tasta selectată.<Tab.\u003e Fereastra dobândește creșterea luminozității. Oferiți ieșirea din program.

10. Inițializați ecranul și două ferestre locale în el. În fereastra stângă, aduceți prima jumătate de masă la jumătatea de sus ASCII.și drept - a doua jumătate. Asigurați-vă pentru curățarea ferestrelor și a ieșirii din program.

11. Inițializați ecranul și două ferestre locale în el (fiecare cu atributul și textul său). Organizați bitul de comutare ciclică "Luminozitate / Flicker". Ieșiți din program ar trebui să restabiliți valoarea implicită de biți.

12. Inițializați ecranul și două ferestre locale în el. În fereastra stângă, retrageți a doua jumătate a mesei ASCII. C Simbolurile pseudografice. Folosind navigarea cursorului, utilizați tastele (¬, -, ®, ¯) pentru a organiza posibilitatea redării continue a liniilor directe în a doua fereastră.

13. Dezvoltați un program pentru ieșirea textului pe ecran prin programarea directă a unui clip video utilizând elemente de formatare (indentare din marginea din stânga, transferul de text la următorul șir după trecerea cuvântului frontalului drept).

Intrare: DS:SI - abordare ASCI-linii AH.- atribute;

Cx.- numărul de caractere de ieșire;

DH /Dl. - linia ( rând) / coloană ( clm.);

DelincareL,DelincareR. - Câmpurile de liniuță (în coloane) din stânga și la dreapta.

Este necesar să se optimizeze calculul tamponului video de adresă ES:Di.. Procedura trebuie să returneze valoarea inițială a registrului Es..

14. Utilizând programarea directă a memoriei video, completați mai multe pagini de clip video cu vizualizarea ulterioară (ieșire pe ecran) în modul ciclic. Când ieșiți din program pentru a restabili pagina curentă.

15. Dezvoltați un program de desenare dreptunghi utilizând caracterele grafice în codificarea ASCII. Coordonatele colțului din stânga sus (șir, coloană) și din dreapta jos trebuie introduse din tastatură după invitația corespunzătoare.

8.4. Controlați întrebările

1. Caracteristică scurtă a capacităților furnizate de programul de sisteme de bază I / O BIOS, comparativ cu funcțiile de service DOS.

2. Denumiți volumul memoriei video pentru imaginea unui caracter și, în consecință, un singur monitor video video în modul text.

3. Dați caracteristica caracteristică a simbolului în clipul video.

4. Dezvoltarea macrocomenzilor pentru:

¨ Curățarea ecranului cu o setare a cursorului în colțul din stânga sus al ecranului;

¨ Cursor poziționarea într-un punct arbitrar al ecranului cu memorarea coordonării sale în memorie utilizând variabilele rând și clm.;

¨ Mesaj de ieșire mES. lungime leng. și atributul de culoare attrib. din poziția definită de variabile rând și clm..

5. Care caracteristică BIOS furnizează utilizatorului informații complete despre cheia tastaturii.

Acest articol descrie sintaxa cu formula și utilizarea funcției Min. În Microsoft Excel.

Descriere

Returnează cea mai mică valoare din lista argumentelor.

Sintaxă

Min (numărul1; [numărul2]; ...)

Argumentele funcțiilor minelor sunt descrise mai jos.

    Numărul 1, numărul2, ... Argumentul "număr1" este obligatoriu, numerele ulterioare sunt opționale. De la 1 la 255 de numere, dintre care este necesar să găsească cea mai mică.

Remarcă

    Argumentele pot fi fie numere, fie numere care conțin nume, matrii sau referințe.

    Sunt luate în considerare valorile logice și reprezentările text ale numerelor care sunt introduse direct în lista argumentelor.

    Dacă argumentele nu conțin numere, funcția min returnează o valoare de 0.

    Argumentele care sunt valori ale erorilor sau textelor care nu sunt transformate în cifre conduc la erori.

Exemplu

Copiați datele eșantionului din tabelul următor și introduceți-le în celula A1 din noua foaie Excel. Pentru a afișa rezultatele formulei, selectați-le și apăsați tasta F2 și apoi tasta Enter. Dacă este necesar, schimbați lățimea coloanelor pentru a vedea toate datele.

Funcția min este utilizată pentru a găsi numărul minim din intervalul de studiu și returnează numărul corespunzător.

Funcția minei este concepută pentru a căuta valoarea minimă din gama de date studiată și returnează rezultatul corespunzător.

Exemple de utilizare a funcțiilor min și a mea în Excel

Tabelul Excel conține date privind data nașterii lucrătorilor de birou. Determină vârsta minimă a angajatului.

Tabel de date:

Pentru calcule, folosim formula de rezolvare (rezultatul corect numai când apăsați combinația Ctrl + Shift + Enter):


Singurul argument este anul de expresie (astăzi ()) - anul (B3: B10), care returnează o serie de valori numerice egale cu diferența dintre anul curent și anul nașterii fiecărui angajat. Ca urmare a calculelor, obținem:


Formula a calculat automat că cel mai tânăr angajat are 27 de ani.



Cum se calculează suma valorilor minime non-negative în Excel

Tabelul Excel conține mai multe coloane de date numerice. Găsiți valoarea totală a valorilor minime ne-negative conținute în aceste coloane. Suplimentar pentru a găsi cel mai mic număr din tabelul disponibil.

Tabelul sursă:


Pentru a determina numerele minime non-negative, utilizați formula matricei:

!}

Singurul argument este o funcție dacă efectuează o inspecție a matricei de date la apariția numerelor pozitive. Dacă se efectuează condiția, funcția min are o matrice ca argument care conține numai numere pozitive. În mod similar, găsim valori minime pentru coloanele rămase. Rezultatul obținut (Ctrl + Shift + ENTER):


Găsiți cel mai mic număr din tabel cu ajutorul formulei:

Argumentele funcției sunt valorile returnate de fiecare funcție min pentru vectorul de date specificat. Utilizați ca o formulă de matrice. Rezultat (Ctrl + Shift + ENTER):


Căutați mai multe valori mai mici în condiții în Excel

Unele companii au lucrat anterior cu un furnizor de produse. Cu toate acestea, a devenit cunoscut faptul că alți furnizori oferă prețuri mai acceptabile. Tabelul Excel conține produse și coduri de reducere oferite de alți furnizori. Dacă nu există reduceri, valoarea logică este afișată dacă numărul este pozitiv - mărfurile costă mai mult. Găsiți cea mai mare reducere pentru aceleași bunuri numai la prețuri diferite ale diferiților furnizori.

Tabelul sursă:

Formula pentru calcul (Formula Masiv):

\u003d 0; fără reduceri; minine (dacă (A3: A15 \u003d D1; B3: B15; ""))) "CLASS \u003d" Formula "/\u003e

Algoritmul de calcul:

  1. Funcția dacă verifică starea minieră (dacă (A3: A15 \u003d D1; B3: B15;
  2. Funcția minei ia în considerare valorile logice. Un caz este posibil atunci când nu există o reducere pentru niciun produs (toate valorile sunt false), iar rezultatul 0 (zero) va fi returnat. În acest caz, linia de text "fără reduceri" va fi returnată. Un eveniment similar va apărea dacă toate reducerile sunt doar numere pozitive.
  3. Dacă starea nu este executată, reducerea maximă va fi returnată (cea mai negativă valoare) pentru codul de produs specificat.

Calculăm cele mai mari reduceri pentru alte bunuri. Ca rezultat, obținem (Ctrl + Shift + ENTER):


Caracteristicile utilizării funcțiilor min și a mea în Excel

Funcția min are următoarea înregistrare de sintaxă:

Min (numărul1; [numărul2] ...)

Descrierea argumentelor:

  • numărul 1 este un argument obligatoriu care caracterizează primul număr din intervalul în care este necesar să se găsească valoarea minimă;
  • [Number2] ... - Al doilea și argumentele opționale ulterioare care caracterizează numerele secundare și ulterioare din gama de testare.

Funcția minei are următoarea înregistrare de sintaxă:

Mina (valoarea1; [valoarea2] ...)

Descrierea argumentelor:

  • valoarea 1 este un argument obligatoriu care caracterizează prima intrare în intervalul în care doriți să găsiți valoarea minimă;
  • [Valoarea2] ... - Al doilea și argumentele opționale ulterioare care caracterizează a doua intrare și introducere ulterioară a datelor studiate.

NOTE 1:

  1. Diferența în sintaxă accentuează diferența semantică dintre cele două funcții: min funcționează numai cu valori numerice, minele iau în considerare suplimentar tipul de date logic.
  2. Dacă numai șirurile de text sunt transmise ca argumente ale funcțiilor Mines și Mine, Numere non-textuale de numere, funcțiile vor fi returnate la 0.
  3. Funcția minelor care ia o legătură cu gama de date ca argument, ignoră nu numai adevărul logic și minciuni, precum și șirurile de text și celulele goale.
  4. Dacă argumentul minim este o formulă care returnează o eroare, rezultatul codului de eroare va fi, de asemenea, rezultatul executării acestor funcții. Se recomandă verificarea datelor utilizând funcția de eroare.
  5. Funcțiile minelor și minelor nu au funcții logice, așa cum este implementat, de exemplu, funcția contului (numărate), astfel încât verificarea datelor trebuie efectuată la efectuarea funcțiilor minic ca argument (dacă, inhiba și altele) .

NOTE 2:

  1. Funcția minei returnează o valoare de 0 (zero) dacă intervalul la care linkul a fost transmis ca argument este conținut sau reprezentări textuale ale numerelor.
  2. Ambele funcții sunt folosite pentru a găsi cantitățile minime în gama de valori transmise ca argument, dar există mai multe diferențe între ele:
  • Dacă unul dintre argumentele funcției este o valoare logică (adevărul sau falsul, care poate fi transformat în valori numerice 1 și, respectiv), această valoare va fi luată în considerare în calcule. De exemplu, o funcție \u003d min (100; adevăr; fals; 10) returnează valoarea de 0.
  • Dacă o referire la o gamă care conține date de date logice a fost transferată ca argument al funcției min a funcției min. De exemplu, o funcție \u003d min (A1: A4) va reveni la 10 dacă gama de celule A1: A4 conține următoarele date: 100, adevăr, minciuni și 10, respectiv.
  • Pentru a ține seama de datele de tip logic, trebuie să se utilizeze și funcția minei. De exemplu, înregistrarea \u003d a mea (A1: A4) va returna valoarea 0 (minciuni logice echivalente cu numeric 0), dacă celulele A1: A4 conțin date ca în paragraful anterior.

Vrei inscripția "Date sumare" din tabelul din stânga a fost în centrul zonei selectate, ca în tabelul drept. Ce buton ar trebui să apăsați?

Doriți inscripția "Date sumare" în tabelul drept situat ca în tabelul din stânga. Ce buton ar trebui să apăsați?

641. Ce valoare va apărea în celula selectată dacă funcția \u003d min (H4: H8) este introdusă acolo?

· 11479

Doriți ca numărul din celula dreaptă să fie afișat la fel ca numărul din stânga. Care este elementul de meniu pe care trebuie să-l alegeți?

Doriți în celula C19 evidențiată diferența dintre celulele A19 - B19. Cum trebuie să începeți formula de introducere?

· Anulare

· De la semnul "minus"

· De la semnul "egal"

· Pe numele celulei

644. Dacă întindeți zona selectată cu numerele 1, 2, 3 pe unghi inferior din dreapta, ținând butonul stâng al mouse-ului, rezultatul va fi ca un fragment:

Cu ajutorul ce instrumentul este obținut imaginea, ca în celulele A24: A28?

Ce filă ar trebui să meargă pentru a adăuga diapozitive la prezentare?

Pentru a schimba designul layout "titlu și obiect", trebuie să mergeți la marcajul?

Ce buton trebuie să faceți clic astfel încât textul selectat al fragmentului 1 este transformat într-o listă marcată, ca într-un fragment 2?

Ce buton trebuie să faceți clic astfel încât textul selectat al fragmentului 1 este convertit într-o astfel de aspect ca într-un fragment 2?

Ce buton trebuie să faceți clic astfel încât cuvântul "celulă" din tabelul de sus să păstrăm în partea de jos?

Cum să treceți la modul demonstrativ al diapozitivului?

Ce înseamnă pictograma specificată în apropierea numărului de diapozitive?

· Slide inclus într-un afișaj arbitrar

· Slide va fi omis atunci când se afișează o prezentare

· Efectele de animație sunt utilizate pe diapozitiv.

· Slide conține fișiere video

Care este elementul de meniu pentru a alege să obțineți rezultatul, ca în imaginea din dreapta?

Ce comandă rapidă trebuie să utilizați pentru a porni browserul pentru a vizualiza paginile web?

Trebuie să mergeți imediat la site-ul www.kremlin.ru. În ce câmp pentru a introduce adresa dorită?

În ce filă trebuie să mergeți la imprimarea textului de pe site?