Ðåãèñòðû äî âûïîëíåíèÿ MOV [EAX+EDI*4],666h
EAX = 0100h
EDI = 0002h
DS:0100h = 000Ah (eax)
DS:0104h = 000Bh
DS:0108h = 000Ch (eax+edi*4)
Ïîñëå...
DS:0108h = 0666h <—— 666h
Ìàñøòàáèðîâàíèå ïîçâîëèëî àäðåñîâàòü èìåííî 2-å 32-ðàçðÿäíîå ñëîâî, à íå çàïèñàòü ÷èñëî 666h ïî àäðåñó EAX+2 ò.å. 102h, êîòîðûé ïîïàäàåò ïî ñåðåäèíå äâóõ ýëåìåíòîâ ìàññèâà.
3.11 ÁÀÇÎÂÎ-ÈÍÄÅÊÑÍÀß ÀÄÐÅÑÀÖÈß ÑÎ ÑÌÅÙÅÍÈÅÌ È ÌÀÑØÒÀÁÈÐÎÂÀÍÈÅÌ
Ýòîò ñïîñîá àäðåñàöèè ðàññìîòðåí â ïóíêòå 3.6 ïðè èñïîëüçîâàíèè 32-ðàçðÿäíîé àäðåñàöèè. Ïîýòîìó ïðèâåäåì ëèøü ïðèìåð èíñòðóêöèè è îïèøåì åå äåéñòâèÿ. Èíñòðóêöèÿ INC [EAX+EDI*4+12345678h] óâåëè÷èò íà åäèíèöó ÷èñëî, àäðåñ êîòîðîãî âû÷èñëÿåòñÿ, êàê áàçîâûé ïëþñ 32-ðàçðÿäíîå ñìåùåíèå 12345678h è ïëþñ ìàñøòàáèðîâàííûé ïî îñíîâàíèþ 4 èíäåêñ, ñîäåðæàùèéñÿ â ðåãèñòðå EDI.
3.12 ÎÒÍÎÑÈÒÅËÜÍÀß ÀÄÐÅÑÀÖÈß
Îòíîñèòåëüíàÿ àäðåñàöèÿ èñïîëüçóåòñÿ â ìèêðîïðîöåññîðå 80386 ïðè âûïîëíåíèè ðÿäà êîìàíä óïðàâëåíèÿ ( óñëîâíûå è áåçóñëîâíûå ïåðåõîäû, âûçîâû ïîäïðîãðàìì, óïðàâëåíèå öèêëàìè è ò.ä. ), ÷òîáû àäðåñîâàòü ÿ÷åéêó ïàìÿòè, ñîäåðæàùóþ ñëåäóþùóþ êîìàíäó. Ïðè ýòîì ñïîñîáå àäðåñ ôîðìèðóåòñÿ êàê ñóììà ñîäåðæèìîãî ðåãèñòðà EIP(IP) ( instruction pointer - óêàçàòåëü èíñòðóêöèè ), ñîîòâåòñòâóþùåãî òåêóùåé êîìàíäå, è 8-, 16- èëè 32-ðàçðÿäíîãî ñìåùåíèÿ, îïðåäåëÿþùåãî ïîëîæåíèå ñëåäóþùåé êîìàíäû, îòíîñèòåëüíî òåêóùåé. Íàïðèìåð ðàññìîòðèì îïåðàöèþ áåçóñëîâíîãî ïåðåõîäà â ïðèâåäåííîì ôðàãìåíòå:
.
mov ax,5
jmp @1
sub ax,ax
@1: mov bx,ax
Áåçóñëîâíûé ïåðåõîä áóäåò ïðåäñòàâëåí êàê JMP 02, ò.å. íà 2 áàéòà âïåðåä, ïîñëå èíñòðóêöèè. SUB AX,AX çàíèìàåò â ïàìÿòè ñëîâî, çíà÷èò ïåðåõîä áóäåò ïåðåäàí íà êîìàíäó MOV BX,AX ò.å. ïî àäðåñó CS:IP+2. (Ýòî íåìíîãî óïðîùåííûé ïðèìåð âíóòðèñåãìåíòíîãî ïåðåõîäà. Íà ñàìîì äåëå ïðè ïåðåõîäàõ ìåíåå ÷åì íà 128 áàéò èñïîëüçóåòñÿ êîðîòêèé ïåðåõîä EB??90, ãäå ?? - ýòî ðàçìåð êîäà êîòîðûé íàäî ïðîïóñòèòü + 1 áàéò. Äîïîëíèòåëüíûé áàéò ïðèáàâëÿåòñÿ çà ñ÷åò êîäà 90h ñëåäóþùåãî çà ñìåùåíèåì. Ýòîò êîä ïðåäñòàâëÿåò ñîáîé êîä èíñòðóêöèè NOP ( no operation ), ïðèñóòñòâèå åãî àáñîëþòíî áåñïîëåçíî, íî ñëîæèëîñü èñòîðè÷åñêè, è áîëüøå íå èñïðàâëÿëîñü. Áàéò ?? - ýòî áàéò ñî çíàêîì, òàê ÷òî ïåðåõîä âîçìîæåí êàê âïåðåä, òàê è íàçàä. À âîò ïðè ïåðåõîäàõ áîëåå ÷åì íà 127 áàéò èñïîëüçóåòñÿ êîìàíäà E9???? , îïèñàííàÿ âûøå ).
Ñòðàíèöû: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20