Äî îïåðàöèè MOVB #10,(R2)
00000305 : 90 ÊÎÏ
00000306 : 8F <——— ïðåäñòàâëåíèå '(R15)+'
00000307 : 10 <——— êîíñòàíòà
00000308 : 62 <——— ïðåäñòàâëåíèå '(R2)'
R2 = 00001000
R15 = 00000305
(00001000) = FF (R2)
Ïîñëå...
R15 = 00000309
(00001000) = 10 (R2)
Ïðè êîìïèëÿöèè èíñòðóêöèÿ MOVB #10,(R2) áûëà çàìåíåíà íà MOVB (R15)+(R2), à êîíñòàíòà áûëà ïîìåùåíà â ïîòîê èíñòðóêöèé, è áûëà óñïåøíî àäðåñîâàíà è ñêîïèðîâàíà ïî àäðåñó (00001000).
Åñëè èñïîëüçîâàòü êîñâåííûé ðåæèì ñ àâòîóâåëè÷åíèåì, òî ïî îïðåäåëåíèþ ðåæèìà ñîäåðæèìîå ñ÷åò÷èêà èíñòðóêöèé ÿâëÿåòñÿ íå àäðåñîì îïåðàíäà, à àäðåñîì àäðåñà îïåðàíäà, à ïîñëå âûïîëíåíèÿ èíñòðóêöèè çíà÷åíèå ñ÷åò÷èêà óâåëè÷èòñÿ íà 4, òàê êàê ìû ïåðåäàåì 32-ðàçðÿäíûå àäðåñà. Òàêèì îáðàçîì ìû èìååì âîçìîæíîñòü çàäàòü ïðÿìî â êîäå èíñòðóêöèè àáñîëþòíûé àäðåñ îïåðàíäà. Åñëè â ïðåäûäóùåì ïðèìåðå èñïîëüçîâàòü ýòîò ïðèìåð, òî ïî àäðåñó (00001000) áóäåò çàíåñåíî íå ÷èñëî 10, à çíà÷åíèå ÿ÷åéêè 10. Íà àññåìáëåðå òàêàÿ èíñòðóêöèÿ áóäåò èìåòü ìíåìîíèêó MOVB @#10,(R2):
Äî îïåðàöèè MOVB @#10,(R2)
00000306 : 9F <——— ïðåäñòàâëåíèå '@(R15)+'
00000307 : 10
00000308 : 00
00000309 : 00
0000030A : 00
0000030B : 62 <——— ïðåäñòàâëåíèå '(R2)'
(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