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

   

Äî îïåðàöèè MOVB #10,(R2)

                                                            00000305  :  90  ÊÎÏ

                                                            00000306  :  8F  <——— ïðåäñòàâëåíèå '(R15)+'

                                                            00000307  :  10  <——— êîíñòàíòà

                                                            00000308  :  62  <——— ïðåäñòàâëåíèå '(R2)'

                         

                                                                        R2  = 00001000

                                                                      R15  = 00000305

                                                           (00001000) = FF                      (R2)

Ïîñëå...


                                                                        R2  = 00001000

                                                                      R15  = 00000309

                                                           (00001000) = 10                      (R2)


Ïðè êîìïèëÿöèè èíñòðóêöèÿ MOVB #10,(R2) áûëà çàìåíåíà íà MOVB (R15)+(R2), à êîíñòàíòà áûëà ïîìåùåíà â ïîòîê èíñòðóêöèé, è áûëà óñïåøíî àäðåñîâàíà è ñêîïèðîâàíà ïî àäðåñó (00001000).

            Åñëè èñïîëüçîâàòü êîñâåííûé ðåæèì ñ àâòîóâåëè÷åíèåì, òî ïî îïðåäåëåíèþ ðåæèìà ñîäåðæèìîå ñ÷åò÷èêà èíñòðóêöèé ÿâëÿåòñÿ íå àäðåñîì îïåðàíäà, à àäðåñîì àäðåñà îïåðàíäà, à ïîñëå âûïîëíåíèÿ èíñòðóêöèè çíà÷åíèå ñ÷åò÷èêà óâåëè÷èòñÿ íà 4, òàê êàê ìû ïåðåäàåì 32-ðàçðÿäíûå àäðåñà. Òàêèì îáðàçîì ìû èìååì âîçìîæíîñòü çàäàòü ïðÿìî â êîäå èíñòðóêöèè àáñîëþòíûé àäðåñ îïåðàíäà. Åñëè â ïðåäûäóùåì ïðèìåðå èñïîëüçîâàòü ýòîò ïðèìåð, òî ïî àäðåñó (00001000) áóäåò çàíåñåíî íå ÷èñëî 10, à çíà÷åíèå ÿ÷åéêè 10. Íà àññåìáëåðå òàêàÿ èíñòðóêöèÿ áóäåò èìåòü ìíåìîíèêó MOVB @#10,(R2):


Äî îïåðàöèè MOVB @#10,(R2)

                                                            00000305  :  90  ÊÎÏ

                                                            00000306  :  9F  <——— ïðåäñòàâëåíèå '@(R15)+'

                                                            00000307  :  10  

                                                            00000308  :  00  

                                                            00000309  :  00  

                                                            0000030A  :  00 

                                                            0000030B  :  62  <——— ïðåäñòàâëåíèå '(R2)'

                         

                                                                        R2  = 00001000

                                                                      R15  = 00000305

                                                           (00000010) = 00     

                                                           (00001000) = FF      (R2)

Ïîñëå...

                                                                        R2  = 00001000

                                                                      R15  = 00000309

                                                           (00000010) = 00

                                                           (00001000) = 00                      <——— 0

              

            Åñòü îïðåäåëåííûé êëàññ ïðîãðàìì, êîòîðûå íàçûâàþòñÿ ïîçèöèîííî-íåçàâèñèìûìè. Îíè ìîãóò áûòü çàãðóæåíû è çàïóùåíû â ëþáîé îáëàñòè ïàìÿòè áåç ïåðåòðàíñëÿöèè, ïåðåëèíêîâêè èëè ìîäèôèêàöèè àäðåñîâ îïåðàíäîâ. Ïðè ïåðåìåùåíèè â ïàìÿòè ïðîãðàììû, èñïîëüçóþùåé êîñâåííî-ðåãèñòðîâûé ðåæèì àäðåñàöèè àäðåñ àäðåñóåìîé ÿ÷åéêè íå èçìåíÿåòñÿ. Åñëè äàííûå â ïàìÿòè ïåðåìåùàþòñÿ âìåñòå ñ ïðîãðàììîé, êàê ýòî ÷àùå âñåãî áûâàåò, òî àäðåñîâàòüñÿ áóäóò ñîâñåì íå òå äàííûå, êîòîðûå äîëæíû áû. ×òî äåëàòü â òàêèõ ñëó÷àÿõ ? Ðàññìîòðèì êàê èñïîëüçîâàòü ñ÷åò÷èê èíñòðóêöèé â ðåæèìå ñî ñìåùåíèåì. Ñîäåðæèìîå ðåãèñòðà ñ÷åò÷èêà èíñòðóêöèé  ñêëàäûâàåòñÿ ñî ñìåùåíèåì, êîòîðîå ðàñïîëîæåíî íåïîñðåäñòâåííî â ïîòîêå èíñòðóêöèé. Ïîëó÷åííàÿ ñóììà ÿâëÿåòñÿ àäðåñîì îïåðàíäà. Î÷åâèäíî, ÷òî â ýòîì ñëó÷àå äàííûå áóäóò àäðåñîâàòüñÿ ïðàâèëüíî, òàê êàê åñëè ïîäîáðàòü ñìåùåíèå ðàâíîå ðàçíèöå ìåæäó àäðåñîì îïåðàíäà è àäðåñîì òåêóùåé êîìàíäû, òî ýòà ðàçíîñòü âñåãäà áóäåò ïîñòîÿííîé. Ýòîò ðåæèì àäðåñàöèè íàçûâàåòñÿ îòíîñèòåëüíûì è íà àññåìáëåðå çàïèñûâàåòñÿ ïðîñòî êàê Addr, ãäå Addr - àäðåñ îïåðàíäà. Ðàññìîòðèì âûïîëíåíèå èíñòðóêöèè MOVB 10,(R2)

Ñòðàíèöû: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20



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