steaguri EFLAGS registru reflectă starea curentă a procesorului, mulți dintre biții săi sunt stabilite după executarea operațiunilor și indică tipul rezultatului. steaguri înregistrare în format este prezentat în Fig. 1.3.
Se efectuează o valoare de transfer remedieri pavilion (împrumute) apare în plus (scădere). Este folosit uneori, în alte situații.
Paritatea Flag detectează prezența unui număr par de cele în octetul inferior al rezultatul operației poate fi utilizată, de exemplu, pentru monitorizarea datelor în mod corect.
AF (bit flag auxiliare de transport 4)
carry auxiliar de transfer fixat pavilion (împrumut) de LSnibble, adică Bit 3 din MSnibble la plus (scădere). Numai folosi aritmetica BCD, care operează numai octetul scăzut.
Zero pavilion indicând primirea unui zero (ZF = 1) sau non-zero (ZF = 0) din rezultatul operației.
pavilion semn duplicate valoarea MSB rezultă că atunci când se utilizează codul suplimentar corespunde cu semnul numărului (0 - număr pozitiv, 1 - negativ).
Instalarea trassirovkiTF flag = 1, veniturile microprocesor într-un pas cu pas modul. utilizate pentru depanare programe care generează automat depanare situație specială (#DB) după fiecare comandă. începe de depanare de întrerupere generate în cazul în care programul de aplicație se va stabili un TF pavilion folosind comenzi POPF / POPFD sau IRET / IRETD.
IF (întrerup permite pavilion, bit 9)
Instalarea preryvaniyIF pavilion permisiune = 1, simțurile cu microprocesor (detectează) și, respectiv, care răspund la introducerea cererii de întrerupere de # INTR (Maskable întrerupere externă). Dacă IF = 0, întrerupere pentru această intrare este interzisă, iar microprocesorul ignoră cererile de întrerupere primite.
Modificarea acestui pavilion comenzi CLI. STI. POPF / POPFD și IRET / IRETD nu este întotdeauna posibilă și este determinată de curent:
Când întreruperea virtuală inițializat (CR4.PVI = 1 în modul protejat sau CR4.VME = 1 în modul V86) atunci când se efectuează aceleași condiții IOPL pavilion de preaplin indică pierderea de biți mai vechi ale rezultatului datorită grilei cifre preaplin atunci când se lucrează cu numere semnate. În plus, acest indicator este setat la 1 în cazul în care un transport are loc la MSB și nici un transfer de biți ridicată, sau există un transport de la bitul cel mai semnificativ, dar nu este transferat; În caz contrar, a pavilionului este setat la 0. Atunci când scăderea este setat la 1 atunci când există un împrumut de la MSB, dar MSB împrumut absentă sau are MSB de împrumut, dar nici un împrumut din acestea. IOPL (Nivel I / O privilegiu, biții 13 și 12: Intel286 ...) Secure modul de comandă POPF / POPFD este atât dependentă de nivelul și de intrare privilegii / vyvodaIOPL. și nivelul actual privilegiu (CPL), permițând să se schimbe câmpul IOPL numai atunci când la nivelul de privilegii zero (CPL = 0) și pavilion de întrerupere permite IF - numai dacă CPL ≤ IOPL. Cu toate acestea, în cazul în care această echipă nu se poate schimba câmpul sau pavilion specificat din cauza lipsei de privilegii curente. generând situația specială de protecție generală (#GP) nu are loc - executarea continuă a comenzilor ulterioare. Acest comportament schimbări în modul V86 - este o încercare de a POPF / POPFD echipe folosesc în IOPL <3 (кроме режима EV86 ) всегда вызывает генерацию особой ситуации общей защиты (#GP) . In procesoare, deoarece Pentium, EV86 are un mod special (activat prin setarea CR4.VME flag = 1 în modul V86), în care există o specificitate suplimentară pentru comenzile IOPL sensibile. În primul rând, comanda IRET în acest mod încetează să mai fie IOPL-sensibilă și nu generează protecția generală situație specială (#GP) la IOPL <3. Команды CLI. STI при IOPL <3, вместо генерации указанной особой ситуации. оказывают влияние на флаг виртуального прерывания VIF (также как и команда POPF ), а для команды INT n вообще возникает несколько режимов. которые зависят от текущего контекста конкретной задачи V86. И наконец, команда PUSHF (16-битная), выполняемая в режиме EV86 при IOPL <3, также не генериует особую ситуацию общей защиты (#GP). а записывает в стек образ регистра флаговFLAGS. у которого биты, соответствующие полю IOPL. устанавливаются равными 3, а бит IF записывается из текущего значения флага VIF . NT (imbricate sarcină Bit 14: Intel286 ...) Procesorul stabilește sarcina de pavilion și controalele imbricate pentru a monitoriza sarcina întreruptă (în cursul căreia a avut loc executarea de întrerupere) și apel proceduri. NT pavilion afectează acțiunile efectuate de echipa IRET / IRETD. Acest pavilion poate fi modificat comanda POPF / POPFD și IRET / IRETD. schimbarea incorectă a drapelului poate duce la o varietate de situații speciale în cadrul programelor de aplicație. RF (reluare biți flag 16: Intel386 ...) vozobnovleniyaRF pavilion dezactivează temporar prelucrarea unor situații speciale de depanare (DB #) la echipa care a cauzat o astfel de situație ar putea fi repornit și nu ar provoca o nouă situații speciale. Debugger stabilește IRETD echipa de pavilion atunci când revenirea la programul întrerupt. Echipa POPF. POPFD (în modul V86) și IRET acest flag nu este afectată. VM (mod virtual, 17 bit: Intel386 ...) AC (modul de control de aliniere, bit 18: Intel486 ...) Tabelul 3.5. nivelare condiții de control (Bit de întrerupere virtuală 19: Pentium ...) VIF preryvaniyaVIF pavilion virtual este utilizat împreună cu un VIP de pavilion și permite execuția normală a software-ului vechi, cu ajutorul comenzilor întrerupe Maskable externe (vectori 32 la 255), și în software-ul modern, multiprocesor Multitasking și mediul de hardware. În acest scop, procesoare de la Pentium, suporta avansate moduri speciale de manipulare de întrerupere: În aceste moduri, virtual Vif pavilion întrerupere reliefează pavilion similitudine virtuală IF. Cu condiția ca întreruperea virtuală inițializat (CR4.PVI = 1 în modul protejat. CR4.VME = 1 în modul V86), ITS și comenzi CLI afectează flag EFLAGS.VIF. DACĂ pavilion și, astfel, rămâne neschimbat. Când un procesor extern maskable întrerupere produce un tratament standard pentru handler modul de întrerupere protejat printr-un tabel descriptor de întrerupere (IDT). Astfel, atunci când se înregistrează valoarea în procesorul EFLAGS registru stiva câmp IOPL scrie la 3 și pavilion IF egal VIF. VIP (Virtual de întrerupere în așteptare bit 20: Pentium ...) Virtual preryvaniyaVIP pavilion de așteptare este utilizat în conjuncție cu steagul VIF și permite aplicațiilor să sprijine modul virtual de întrerupere a monitoriza întreruperi externe apeluri chiar și atunci când programul va masca executarea lor (afișare în curs de întrerupere virtuale). Pentru mai multe informații cu privire la utilizarea acestor steaguri, se referă la descrierea de întreruperi și excepții. ID-ul (pavilion de identificare, bit 21: Pentium ...) identifikatsiiID pavilion este proiectat pentru a testa - dacă este acceptată de comanda CPU CPUID. În cazul în care programul poate fi setat și resetat acest pavilion înseamnă comanda CPUID de procesorul acceptat.articole similare