Смекни!
smekni.com

Системы адресации в Мини- и МикpоЭВМ (стр. 8 из 14)

3. ÑÈÑÒÅÌÛ ÀÄÐÅÑÀÖÈÈ ÈÑÏÎËÜÇÓÅÌÛÅ Â ÏÝÂÌ

Ñèñòåìû àäðåñàöèè èñïîëüçóåìûå â ïåðñîíàëüíûõ ÝÂÌ áóäóò ðàññìîòðåíû íà ïðèìåðå 32-ðàçðÿäíîãî ïðîöåññîðà 80386 ôèðìû Intel. Âñå ÷òî êàñàåòñÿ ýòîãî ïðîöåññîðà, ñèñòåìû åãî êîìàíä è ñïîñîáîâ àäðåñàöèè ìîæíî òàê æå îòíåñòè ê 386-ûì ïðîöåññîðàì ôèðì Cyrix è AMD (Advanced Micro Devices), êîòîðûå ïîëíîñòüþ ñîâìåñòèìû ñ I80386. ÌÏ 80386 ïðåäñòàâëÿåò ñîáîé âûñîêîïðîèçâîäèòåëüíûé 32-ðàçðÿäíûé ìèêðîïðîöåññîð, âûïîëíÿþùèé 3-4 ÌÎÏÑ (MIPS). Îí îòëè÷àåòñÿ ïîëíîé 32-ðàçðÿäíîé àðõèòåêòóðîé ñ ôèçè÷åñêèì àäðåñíûì îñòðàíñòâîì 4 Ãáàéò è âñòðîåííûìè ñðåäñòâàìè ñòðàíè÷íîé âèðòóàëüíîé ïàìÿòè, ÌÏ 80386 ìîæåò àäðåñîâàòü 64 Òáàéò âèðòóàëüíîé ïàìÿòè. Ñèñòåìà êîìàíä ÌÏ 80386 ñîäåðæèò 9 êàòåãîðèé êîìàíä: ïåðåñûëêè äàííûõ, àðèôìåòè÷åñêèõ, ñäâèãà, îáðàáîòêè ñòðîê, îáðàáîòêè áèòîâ, ïåðåäà÷è óïðàâëåíèÿ, ïîääåðæêè ÿçûêîâ âûñîêîãî óðîâíÿ, ïîääåðæêè îïåðàöèîííîé ñèñòåìû è óïðàâëåíèÿ ïðîöåññîðîì. Äëèíà êîìàíäû â ñðåäíåì ñîñòàâëÿåò 2-3 áàéòà. Îïåðàíäû ìîãóò èìåòü äëèíó 8,16 èëè 32 ðàçðÿäà.

ÌÏ 80386 ðåàëèçóåò ñåãìåíòíóþ îðãàíèçàöèþ ïàìÿòè, ïðè êîòîðîé ôèçè÷åñêèé àäðåñ ÿ÷åéêè âû÷èñëÿåòñÿ ïóòåì ñëîæåíèÿ áàçîâîãî àäðåñà ñåãìåíòà è îòíîñèòåëüíîãî àäðåñà ÿ÷åéêè âíóòðè ñåãìåíòà. Áàçîâûé àäðåñ îïðåäåëÿåòñÿ ñîäåðæèìûì 16-ðàçðÿäíîãî ñåãìåíòíîãî ðåãèñòðà è çàâèñèò îò ðåæèìà ðàáîòû ìèêðîïðîöåññîðà. Åñëè ìèêðîïðîöåññîð ðàáîòàåò â ðåæèìå îáðàáîòêè 16-ðàçðÿäíûõ äàííûõ ( ðåæèì ðåàëüíûõ àäðåñîâ èëè ðåæèì âèðòóàëüíîãî ïðîöåññîðà 8086), òî 20-ðàçðÿäíûé áàçîâûé àäðåñ ôîðìèðóåòñÿ ïóòåì ñäâèãà ñîäåðæèìîãî ñåãìåíòíîãî ðåãèñòðà íà ÷åòûðå ðàçðÿäà âëåâî. Ò.å. åñëè â ñåãìåíòíîì ðåãèñòðå ñîäåðæèòñÿ ÷èñëî 45F7, òî áàçîâûé àäðåñ áóäåò 45F70. Åñëè ìèêðîïðîöåññîð ðàáîòàåò â ðåæèìå îáðàáîòêè 32-ðàçðÿäíûõ äàííûõ ( çàùèùåííûé ðåæèì ), òî 32-ðàçðÿäíûé áàçîâûé àäðåñ ñîäåðæèòñÿ â äåñêðèïòîðå, âûáîð êîòîðîãî èç òàáëèöû äåñêðèïòîðîâ îñóùåñòâëÿåòñÿ ñ ïîìîùüþ ñåëåêòîðà - ñîäåðæèìîãî ñîîòâåòñòâóþùåãî ñåãìåíòíîãî ðåãèñòðà.  çàâèñèìîñòè îò òèïà îáðàùåíèÿ ê ïàìÿòè ïðîèçâîäèòñÿ âûáîð ñåãìåíòíîãî ðåãèñòðà è ñïîñîáà îïðåäåëåíèÿ îòíîñèòåëüíîãî àäðåñà. Äëÿ íåêîòîðûõ ñïîñîáîâ îáðàùåíèÿ ê ïàìÿòè âîçìîæíû âàðèàíòû âûáîðà ñåãìåíòíûõ ðåãèñòðîâ. Ýòè âàðèàíòû ìîãóò áûòü âûáðàíû ñ ïîìîùüþ ïðåôèêñà çàìåíû ñåãìåíòà SEG. Íà ìíåìîíèêå àññåìáëåðà ýòî âûãëÿäèò ïðîñòî êàê DS:[?], ES:[?], CS:[?], FS:[?] è ò.ä.  êà÷åñòâå îòíîñèòåëüíîãî àäðåñà èñïîëüçóåòñÿ ñîäåðæèìîå ðåãèñòðîâ EIP(IP), ESP(SP), ESI(SI), EDI(DI) èëè ýôôåêòèâíûé àäðåñ EA, êîòîðûé ôîðìèðóåòñÿ â ñîîòâåòñòâèè ñ çàäàííûì ñïîñîáîì àäðåñàöèè (êîñâåííûé, èíäåêñíûé è ò.ä.).

1. Âûáîðêà êîìàíä.

Ñåãìåíòíûé ðåãèñòð CS ( Code Segment )

Îòíîñèòåëüíûé àäðåñ EIP(IP) ( Instruction Pointer )

2. Îáðàùåíèå ê ñòåêó.

Ñåãìåíòíûé ðåãèñòð SS ( Stack Segment )

Îòíîñèòåëüíûé àäðåñ ESP(SP) ( Stack Pointer )

3. Àäðåñàöèÿ îïåðàíäà.

Ñåãìåíòíûé ðåãèñòð DS èëè (CS,SS,ES,FS,GS)

Îòíîñèòåëüíûé àäðåñ EA

4. Àäðåñàöèÿ ýëåìåíòà ñòðîêè-èñòî÷íèêà.

Ñåãìåíòíûé ðåãèñòð DS èëè (CS,SS,ES,FS,GS)