00 ?????? <—— áàéò ñïåöèôèêàòîð îïåðàíäà
ëèòåðàë
Ñ ïîìîùüþ ëèòåðàëà â èíñòðóêöèè ìîãóò áûòü ïðåäñòàâëåíû öåëûå ÷èñëà â äèàïàçîíå îò 0 äî 63. Ìíåìîíèêà íà àññåìáëåðå S^#n, ãäå n - ëèòåðàë. Ðàññìîòðèì èíñòðóêöèþ MOVL S^#18,R3 êîòîðàÿ â ïàìÿòè áóäåò ïðåäñòàâëåíà â âèäå D0 18 53. Çäåñü D0 - êîä èíñòðóêöèè, 18 - ëèòåðàë, 53 - ðåãèñòð R3 ïðè ïðÿìîé àäðåñàöèè.
Äî îïåðàöèè MOVL S^#18,R3
R3 = 00001234
Ïîñëå...
R3 = 00000018
Èç ïðèìåðà âèäíî, ÷òî ëèòåðàë áûë çàíåñåí â ðåãèñòð R3
2.9 ÈÍÄÅÊÑÍÛÉ ÐÅÆÈÌ
Îäíèì èç íàèáîëåå ìîùíûõ ñðåäñòâ àäðåñàöèè â ÑÌ1700 ÿâëÿåòñÿ èñïîëüçîâàíèå ðåãèñòðîâ îáùåãî íàçíà÷åíèÿ äëÿ îïðåäåëåíèÿ èíäåêñà ýëåìåíòà â ìàññèâà äàííûõ. Âîò ôîðìàò ñïåöèôèêàòîðà êîìàíäû:
15 11 7 3 0
ÊÁÐÀ ÍÁÐ ÊÈÐ ÍÈÐ
ãäå ÊÁÐÀ - êîä áàçîâîãî ðåæèìà àäðåñàöèè,
ÍÁÐ - íîìåð áàçîâîãî ðåãèñòðà,
ÊÈÐ - êîä èíäåêñíîãî ðåæèìà (0100),
ÍÈÐ - íîìåð èíäåêñíîãî ðåãèñòðà.
Êàê âèäíî ðàçðÿäû 15 - 8 ñîäåðæàò âòîðîé ñïåöèôèêàòîð îïåðàíäà, êîòîðûé íàçûâàåòñÿ áàçîâûì. Îí ìîæåò îïðåäåëÿòü ëþáîé ðåæèì àäðåñàöèè, êðîìå ðåãèñòðîâîãî, êîðîòêîãî ëèòåðàëà è èíäåêñíîãî. Åñëè áàçîâûé ñïåöèôèêàòîð òðåáóåò ðàñøèðåíèÿ, òî ýòî ðàñøèðåíèå ñëåäóåò íåïîñðåäñòâåííî çà ñïåöèôèêàòîðîì. Ñïåöèôèêàòîð îáû÷íî îïðåäåëÿåò àäðåñ íà÷àëà ìàññèâà, à â èíäåêñíîì ðåãèñòðå Rx ñîäåðæèòñÿ íîìåð ýëåìåíòà ìàññèâà. Ïðè îïðåäåëåíèè ýôôåêòèâíîãî àäðåñà îïåðàíäà ñíà÷àëà âû÷èñëÿåòñÿ áàçîâûé àäðåñ ìàññèâà èëè òàáëèöû. Çàòåì ñîäåðæèìîå èíäåêñíîãî ðåãèñòðà óìíîæàåòñÿ íà 1, 2, 4 èëè 8, â çàâèñèìîñòè îò ðàçìåðà îïåðàíäà è ïðèáàâëÿåòñÿ ê áàçîâîìó àäðåñó. Èñïîëüçóÿ ýòîò ðåæèì àäðåñàöèè ñîâìåñòíî ñ óæå îïèñàííûìè ìîæíî ïîëó÷èòü ñëåäóþùèå ðåæèìû àäðåñàöèè :
1. Êîñâåííî-ðåãèñòðîâûé èíäåêñíûé, (Rn)[Rx].
2. Ñ àâòîóâåëè÷åíèåì èíäåêñíûé, (Rn)+[Rx].
3. Êîñâåííûé ñ àâòîóâåëè÷êíèåì èíäåêñíûé, @(Rn)+[Rx].
4. Ñ àâòîóìåíüøåíèåì èíäåêñíûé, -(Rn)[Rx].
5. Ñìåùåíèÿ èíäåêñíûé, N^X(Rn)[Rx], ãäå N ìîæåò ïðèíèìàòü çíà÷åíèÿ B, W, L.
6. Êîñâåííûé ñìåùåíèÿ èíäåêñíûé, @N^X(Rn)[Rx]
Ïðè ðàáîòå ñî ñòðóêòóðàìè äàííûõ èíäåêñíûé ðåæèì ãîðàçäî óäîáíåå, ÷åì ïðîñòî ðåæèì ñìåùåíèÿ. Âî-ïåðâûõ, çäåñü èìååòñÿ ìîùíûé ðåæèì çàäàíèÿ íà÷àëüíîãî àäðåñà ìàññèâà ñ ïîìîùüþ îäíîãî èç îñíîâíûõ ðåæèìîâ àäðåñàöèè, ÷òî ïîçâîëÿåò ëåãêî ìîäèôèöèðîâàòü ýòîò àäðåñ. Âî âòîðûõ, ïðîãðàììèñò â èíäåêñíîì ðåãèñòðå [Rx] óêàçûâàåò òîëüêî íîìåð ýëåìåíòà, à íåîáõîäèìîå ñìåùåíèå âû÷èñëÿåòñÿ àâòîìàòè÷åñêè èç êîíòåêñòà îïåðàíäà. Òàê, èíñòðóêöèÿ CLRB B^2(R4), ðåàëèçóþùàÿ ðåæèì ñìåùåíèÿ ( ïóíêò 2.6 ) ìîæåò âûãëÿäåòü êàê CLRB (R0)[R4] è åñëè â R0 íàõîäèòñÿ àäðåñ ìàññèâà, à â R4 ñìåùåíèå, òî îíà àíàëîãè÷íî ïåðâîé èíñòðóêöèè î÷èñòèò 3èé ýëåìåíò ìàññèâà.
Äî îïåðàöèè CLRB (R0)[R4]
R0 = 00001000
R4 = 00000002
(00001000) = 00 (R0)
(00001001) = 01
(00001002) = 02 (R0)+[R4]*1
Ïîñëå...
R0 = 00001000
R4 = 00000002
(00001000) = 00 (R0)
(00001001) = 01
(00001002) = 00 <—— 0
Ïðèìåð äîêàçûâàåò àáñîëþòíóþ èäåíòè÷íîñòü ýòèõ èíñòðóêöèé.
2.10 ÐÅÆÈÌÛ ÀÄÐÅÑÀÖÈÈ Ñ ÈÑÏÎËÜÇÎÂÀÍÈÅÌ Ñ×ÅÒ×ÈÊÀ ÈÍÑÒÐÓÊÖÈÉ.
Îäíèì èç íåóäîáñòâ îïèñàííûõ âûøå ñïîñîáîâ àäðåñàöèè ÿâëÿåòñÿ òî, ÷òî âî âñåõ íèõ òðåáóåòñÿ ïðåäâàðèòåëüíàÿ çàãðóçêà îäíîãî èç ðåãèñòðîâ îáùåãî íàçíà÷åíèÿ. Òîëüêî ïîñëå òîãî, êàê ðåãèñòð çàãðóæåí, ñîäåðæèìîå åãî ìîæåò áûòü èñïîëüçîâàíî â êà÷åñòâå óêàçàòåëÿ íà÷àëà ìàññèâà, àäðåñà ýëåìåíòà è ò.ä. Ïðè îäíîêðàòíîì îáðàùåíèè ê ïðîèçâîëüíîé ÿ÷åéêå òàêîé ñïîñîá ÿâëÿåòñÿ íåóäîáíûì è íåýôôåêòèâíûì, òàê êàê òðåáóåò ïî ñóòè âûïîëíåíèÿ äâóõ îïåðàöèé âìåñòî îäíîé - ïðåäâàðèòåëüíîé çàãðóçêè àäðåñà â ðåãèñòð è ñîáñòâåííî îáðàùåíèå ê ïàìÿòè ÷åðåç ýòîò ðåãèñòð ñ ïîìîùüþ îäíîãî èç ðåæèìîâ àäðåñàöèè. Îäíàêî ýòó îïåðàöèþ ìîæíî ðåàëèçîâàòü ãîðàçäî ïðîùå, åñëè èñïîëüçîâàòü ñ÷åò÷èê èíñòðóêöèé. Ðåãèñòð R15 ÿâëÿåòñÿ ñ÷åò÷èêîì èíñòðóêöèé, è îäíîâðåìåííî ðåãèñòðîì îáùåãî íàçíà÷åíèÿ, òî åñòü äîñòóïåí ïðîãðàììèñòó äëÿ èñïîëüçîâàíèÿ â êà÷åñòâå áàçîâîãî ðåãèñòðà è ò.ä. Ýòî î÷åíü óïðîùàåò æèçíü ïðîãðàììèñòó, îäíàêî òðåáóåò ïîâûøåííîé âíèìàòåëüíîñòè,òàê êàê èñïîëüçîâàíèå ýòîãî ðåãèñòðà íàïðèìåð ïðè àäðåñàöèè ñ àâòîóìåíüøåíèåì ïðèâåäåò ê íåïðåäñêàçóåìîìó ðåçóëüòàòó. Ôàêòè÷åñêè ñî ñ÷åò÷èêîì èíñòðóêöèé èñïîëüçóþòñÿ òîëüêî ÷åòûðå ðåæèìà àäðåñàöèè: ñ àâòîóâåëè÷åíèåì, êîñâåííûé ñ àâòîóâåëè÷åíèåì, ñìåùåíèÿ è êîñâåííûé ñìåùåíèÿ. Ýòî äàåò ñ òî÷êè çðåíèÿ ïðîãðàììèñòà ( íî íå àïïàðàòíî ) ÷åòûðå äîïîëíèòåëüíûõ ðåæèìà àäðåñàöèè: íåïîñðåäñòâåííûé, àáñîëþòíûé, îòíîñèòåëüíûé è êîñâåííî-îòíîñèòåëüíûé.