Ðåôåðàòû. Ñèñòåìû àäðåñàöèè â Ìèíè- è ÌèêpîÝÂÌ

   

Ðåãèñòðû äî âûïîëíåíèÿ  MOV [EAX+EDI*4],666h


                                                            EAX  = 0100h

                                                            EDI  = 0002h

                                                   DS:0100h = 000Ah               (eax)  

                                                   DS:0104h = 000Bh  

                                                   DS:0108h = 000Ch               (eax+edi*4)

Ïîñëå...

                                                            EAX  = 0100h

                                                            EDI  = 0002h

                                                   DS:0100h = 000Ah               (eax)  

                                                   DS:0104h = 000Bh  

                                                   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



2012 © Âñå ïðàâà çàùèùåíû
Ïðè èñïîëüçîâàíèè ìàòåðèàëîâ àêòèâíàÿ ññûëêà íà èñòî÷íèê îáÿçàòåëüíà.