Смекни!
smekni.com

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

Îòíîñèòåëüíûé àäðåñ ESI(SI)

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

Ñåãìåíòíûé ðåãèñòð ES

Îòíîñèòåëüíûé àäðåñ EDI(DI)

6. Àäðåñàöèÿ îïåðàíäà ñ èñïîëüçîâàíèåì â êà÷åñòâå áàçîâîãî ðåãèñòðà EBP(BP) èëè ESP(SP).

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

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

Ýôôåêòèâíûé àäðåñ îïåðàíäà EA ÿâëÿåòñÿ 16- èëè 32-ðàçðÿäíûì è ôîðìèðóåòñÿ â çàâèñèìîñòè îò çíà÷åíèÿ îïðåäåëåííûõ ïîëåé â ïðåäñòàâëåíèè êîìàíäû.  îáùåì ñëó÷àå EA îáðàçóåòñÿ ïóòåì ñëîæåíèÿ òðåõ êîìïîíåíò:

  • ñîäåðæèìîãî áàçîâîãî ðåãèñòðà EBP(BP) èëè EBX(BX);
  • ñîäåðæèìîãî èíäåêñíîãî ðåãèñòðà ESI(SI) èëè EDI(DI);
  • 8-, 16- èëè 32-ðàçðÿäíîãî ñìåùåíèÿ, çàäàííîãî íåïîñðåäñòâåííî â êîìàíäå.

 ðàçíûõ ñëó÷àÿõ äëÿ ôîðìèðîâàíèÿ EA èñïîëüçóþòñÿ ëèáî âñå ëèáî ÷àñòü ýòèõ ñëàãàåìûõ. Òåïåðü ðàññìîòðèì êîíêðåòíûå ñïîñîáû àäðåñàöèè.

3.1 ÍÅÏÎÑÐÅÄÑÒÂÅÍÍÀß ÀÄÐÅÑÀÖÈß.

 êà÷åñòâå îïåðàíäà èñïîëüçóåòñÿ îäèí, äâà èëè ÷åòûðå ïîñëåäíèõ áàéòà êîìàíäû. Òàêîé ñïîñîá àäðåñàöèè ðåàëèçóåòñÿ ïðè âûïîëíåíèè ðÿäà êîìàíä ïåðåñûëêè (MOV, PUSH), àðèôìåòè÷åñêèõ îïåðàöèÿõ (ADD, ADC, SUB, SBB, CMP, IMUL), è ëîãè÷åñêèõ (AND, OR, XOR, TEST). Ðàññìîòðèì ïðîñòîé ïðèìåð - óìíîæåíèå ñîäåðæèìîãî ðåãèñòðà íà êîíñòàíòó:

Ðåãèñòðû äî âûïîëíåíèÿ IMUL AX,5

AX = 10

Ïîñëå...

AX = 50

3.2 ÐÅÃÈÑÒÐÎÂÀß ÀÄÐÅÑÀÖÈß.

Ïðè ýòîì ñïîñîáå àäðåñàöèè îïåðàíäîì áåðåòñÿ ñîäåðæèìîå ðåãèñòðà. Íàïðèìåð äëÿ îïåðàöèè çàíåñåíèÿ íà ñòåê ðåàëèçàöèÿ ðåãèñòðîâîãî ñïîñîáà àäðåñàöèè áóäåò âûãëÿäåòü êàê PUSH DS.

Ðåãèñòðû äî âûïîëíåíèÿ PUSH DS

DS = 5678h

SP = FFFEh

SS:FFFE = 0000h

Ïîñëå...

DS = 5678

SP = FFFDh

SS:FFFD = 5678

SS:FFFE = 0000

Êàê âèäíî èç ïðèìåðà çíà÷åíèå ðåãèñòðà DS áûëî çàíåñåíî íà ñòåê.

3.3 ÊÎÑÂÅÍÍÎ-ÐÅÃÈÑÒÐÎÂÀß ÀÄÐÅÑÀÖÈß.

Ïðè òàêîé àäðåñàöèè îòíîñèòåëüíûé àäðåñ ñîäåðæèòñÿ â èíäåêñíîì (SI, DI, ESI, EDI) èëè áàçîâîì ( BX, BP, EBX, EBP) ðåãèñòðàõ èëè â ðåãèñòðàõ îáùåãî íàçíà÷åíèÿ EAX, ECX, EDX. Àäðåñ îïåðàíäà âû÷èñëÿåòñÿ êàê ñåãìåíò:ñìåùåíèå. Ñìåùåíèå ïðåäñòàâëåíî ýôôåêòèâíûì àäðåñîì.

Äëÿ ïðèìåðà ðàññìîòðèì êîìàíäó MOV EBX,[EDI], êîòîðàÿ ïåðåñûëàåò ñîäåðæèìîå ÿ÷åéêè DS:[EDI] â ðåãèñòð EBX. (  êà÷åñòâå ðàçìåðà îïåðàíäà áåðåòñÿ äâîéíîå ñëîâî - 4 áàéòà.

Ðåãèñòðû äî âûïîëíåíèÿ MOV EBX,[EDI]

EBX = 5678h

EDI = 0100h

DS:0100h = 1221h (edi)

Ïîñëå...

EBX = 1221h <——— 1221h

EDI = 0100h

DS:0100h = 1221h

Ïðèìåð â êîììåíòàðèÿõ íå íóæäàåòñÿ. ×èñëî, àäðåñ êîòîðîãî DS:EDI áûëî óñïåøíî çàíåñåíî â ðåãèñòð EBX. Ðåãèñòð DS èñïîëüçîâàëñÿ ïî óìîë÷àíèþ.

3.4 ÏÐßÌÀß ÀÄÐÅÑÀÖÈß.

Ïðè ýòîì ñïîñîáå àäðåñàöèè ñìåùåíèå â ñåãìåíòå äî îïåðàíäà çàäàíî â âèäå ñëîâà èëè äâîéíîãî ñëîâà â êîäå êîìàíäû. Äëÿ ïðèìåðà âîçüìåì îïåðàöèþ MOV EAX,[1994h], ïåðåñûëàþùóþ äâîéíîå ñëîâî ïî àäðåñó DS:1994 â ðåãèñòð EAX.

Ðåãèñòðû äî âûïîëíåíèÿ MOV EAX,[1994h]

EAX = 0000h

DS:1994h = 5000h

Ïîñëå...

EAX = 5000h <—— 5000h

DS:1994h = 5000h

Èç ïðèìåðà âèäíî, ÷òî ÷èñëî, ïðÿìî àäðåñîâàííîå êàê ds:[1994h] áûëî ñêîïèðîâàíî â çàäàííûé ðåãèñòð.

3.5 ÁÀÇÎÂÀß ÀÄÐÅÑÀÖÈß.

Îòíîñèòåëüíûé àäðåñ îïåðàíäà ôîðìèðóåòñÿ ïðè ñëîæåíèè ñîäåðæèìîãî áàçîâîãî ðåãèñòðà ñ íåïîñðåäñòâåííûì ñìåùåíèåì. Ñìåùåíèå ìîæåò áûòü ïðåäñòàâëåíî ñëîâîì èëè äâîéíûì ñëîâîì. Ðàññìîòðèì èíñòðóêöèþ ADD AX,[BP+10h], êîòîðàÿ ê ñîäåðæèìîìó ðåãèñòðà AX ïðèáàâëÿåò ÷èñëî, àäðåñ êîòîðîãî DS:[BP+10h]...

Ðåãèñòðû äî âûïîëíåíèÿ ADD AX,[BP+10h]

AX = 0067h

BP = 0100h

DS:0100h = 0000h (bp)

DS:0101h = 0001h

· · · · · ·

DS:0109h = 0009h

DS:0110h = 0010h (bp+10h)

Ïîñëå...

AX = 0077h <—— (67h+10h = 77h)

BP = 0100h

DS:0100h = 0000h

DS:0101h = 0001h

· · · · · ·

DS:0109h = 0009h

DS:0110h = 0010h

Êàê âèäíî èç ïðèìåðà, ê ñîäåðæèìîìó BP áûëî äîáàâëåíî 10h è ïîëó÷èëîñü ñìåùåíèå 110h, ïî êîòîðîìó è áûëî âçÿòî ÷èñëî, ïðèáàâëåííîå ê AX.

3.6 ÈÍÄÅÊÑÍÀß ÀÄÐÅÑÀÖÈß.