V prvej lekcii sme si slubili ze si ukazeme programatorsky model procesora Intel 86 [alebo iba '86']. Co to vlastne je programatorsky model procesora ? Programatorsky model je akasi informacna struktura hovoriaca o tom, ake prostiedky poskytuje procesor pre programatora a co vsetko s nim moze programator robit. Pod tento programatorsky model patri sustava registrov pristupnych pre programatora [t.j. ktore moze programator vyuzivat] a instrukcny subor procesora, ktorym moze programator tieto registre vyuzivat.
V dnesnej lekcii si ukazeme sustavu registrov procesora 86. Co su to vlastne registre ? Register je akasi bunka pamete, schopna si zapametat urcite male mnozstvo informacie. Konkretne v procesore 86 maju vsetky registre kapacitu 16 bitov. Kapacita registra sa tiez zvykne oznacovat aj pojmom "sirka registra". Sustava registrov procesora 86 vyzera takto:
|
| ||||||||
|
| ||||||||
|
Registre AX,BX,CX,DX su vseobecne pouzitelne registre, tiez niekedy nazyvane univerzalne. AX sa zvykne oznacovat ako akumulator. Tieto registre sa daju rozdelit na 8-bitove polovicky a operacie vykonavat potom s tymito polovickami. Pismeno H v nazve polovicky registra oznacuje jeho hornych 8 bitov, pismeno L oznacuje dolnych 8 bitov.
Registre SI,DI,BP,SP maju specialne pouzitie. SI a DI su indexove registre, pouzivane najcastejsie pri indexovani poli a pri retazcovych a blokovych operaciach. Register BP je urceny na adresovanie udajovych struktur ulozenych na zasobniku procesora a konecne register SP je Stack-Pointer, ukazovatel zasobnika, v ktorom sa ukladaju napr. navratove adresy z prodprogramov.
Registre CS,DS,ES,SS sa nazyvaju segmentove. Ich ulohou je adresovat segmenty v pameti. Co je to segment a aky vyznam ma jeho adresovanie, si vysvetlime neskor.
Register IP je programove pocitadlo. Ukazuje do pameti na prave sa vykonavajuci program.
V registri FLAGS sa uchovavaju jednotlive priznaky stavu procesora. Dolnych 8 bitov je zhodnych s priznakovym registrom procesora 8080. V hornych 8 bitoch je niekolko novych priznakov specifickych pre 86. Struktura priznakoveho registra FLAGS je takato:
|
|
Jednotlive priznaky znamenaju:
Overflow - signalizacia pretecenia pri matematickych operaciach. | |
Direction - urcenie smeru pohybu ukazovatelov po pameti pri blokovych operaciach [ci sa maju inkrementovat, alebo dekrementovat]. | |
Interrupt - priznak maskovatelneho prerusenia [ci je povolene]. | |
Trap - priznak krokovania programu [pri krokovani sa po vykonani kazdej instrukcie vnutorne automaticky generuje programove prerusenie]. | |
Sign - priznak znamienka vysledku. Signalizuje, ci vysledok matematickej operacie je kladny alebo zaporny. | |
Zero - priznak nuly alebo zhody. Signalizuje ci vysledok matematickej operacie je nulovy, alebo ci sa pri porovnavani zistila zhoda. | |
Auxiliary carry - pomocny priznak prenosu medzi 3. a 4. bitom. Vyuzivaju ho instrukcie desiatkovych korekcii. | |
Parity - signalizacia parneho poctu jednotiek vo vysledku operacie | |
Carry - prenos. Signalizacia pretecenia pri matematickych operaciach. |
Rozdiel medzi OF a CF je taky, ze pokym CF predpoklada vykonavanie matematickej operacie s cislami v priamom kode (0=0, 1=1, 255=255) tak naproti tomu OF signalizuje pretecenie pri matematickych operaciach s cislami v doplnkovom kode (0=0, 1=1, 255=-1). Navyse CF sa este pouziva ako pomocny bit pri bitovych operaciach posunu a pri bitovych rotaciach.
Pre nas budu najdolezitejsie priznaky OF,DF,SF,ZF,PF,CF. S ostatnymi sa budeme zaoberat len okrajovo, pretoze ich pouzitie v praxi je zriedkavejsie.