Системы адресации в Мини- и МикpоЭВМ

ÌÎÑÊÎÂÑÊÈÉ ÎÐÄÅÍÀ ÒÐÓÄÎÂÎÃÎ ÊÐÀÑÍÎÃÎ ÇÍÀÌÅÍÈ

ÝÊÎÍÎÌÈÊÎ-ÑÒÀÒÈÑÒÈ×ÅÑÊÈÉ ÈÍÑÒÈÒÓÒ









ÊÀÔÅÄÐÀ ÂÛ×ÈÑËÈÒÅËÜÍÛÕ ÌÀØÈÍ







ÊÓÐÑÎÂÀß ÐÀÁÎÒÀ



íà òåìó:



Ñðàâíèòåëüíûé àíàëèç ðàçëè÷íûõ ñèñòåì àäðåñàöèè, èñïîëüçóåìûõ â ìèíè è ìèêðîÝÂÌ.























	Äàòà ãîòîâíîñòè ðàáîòû:



	Ñòóäåíò:  Êîçëîâ À.Â.



	Ðóêîâîäèòåëü ðàáîòû:  ×åðíÿê Í.Ã.



	Çàùèùåíà  “____” “_________”  1994 ã.



























Ìîñêâà 1994 ã.









ÌÎÑÊÎÂÑÊÈÉ ÎÐÄÅÍÀ ÒÐÓÄÎÂÎÃÎ ÊÐÀÑÍÎÃÎ ÇÍÀÌÅÍÈ

ÝÊÎÍÎÌÈÊÎ-ÑÒÀÒÈÑÒÈ×ÅÑÊÈÉ ÈÍÑÒÈÒÓÒ







ÊÀÔÅÄÐÀ ÂÛ×ÈÑËÈÒÅËÜÍÛÕ ÌÀØÈÍ





ÇÀÄÀÍÈÅ ÍÀ ÊÓÐÑÎÂÓÞ ÐÀÁÎÒÓ

ãðóïïà  ÄÏ-101  êóðñ  1



Ñòóäåíò:	Êîçëîâ À.Â.

	

Òåìà:		Ñðàâíèòåëüíûé àíàëèç ðàçëè÷íûõ ñèñòåì àäðåñàöèè, èñïîëüçóåìûõ â 		ìèíè è ìèêðîÝÂÌ.

              



Îñíîâíûå ðàçäåëû êóðñîâîé ðàáîòû:



Ââåäåíèå. Îòëè÷èÿ ìèíè- è ìèêðîÝÂÌ.



Ñèñòåìû àäðåñàöèè, èñïîëüçóåìûå â ìèíè-ÝÂÌ.( Íà ïðèìåðå ÑÌ ÝÂÌ ).



Ñèñòåìû àäðåñàöèè, èñïîëüçóåìûå â ÏÝÂÌ.( Íà ïðèìåðå êîíêðåòíîé ÏÝÂÌ ).



Çàêëþ÷åíèå. Ñðàâíèòåëüíûé àíàëèç ñèñòåì àäðåñàöèè èñïîëüçóåìûõ â ìèíè- è  ïåðñîíàëüíûõ ÝÂÌ.





Ðåêîìåíäóåìàÿ ëèòåðàòóðà:

        

Ìàëûå ÝÂÌ âûñîêîé ïðîèçâîäèòåëüíîñòè. Àðõèòåêòóðà è ïðîãðàììèðîâàíèå.                     Ìîñêâà "Ðàäèî è ñâÿçü" 1990.



Ä.Áðàìì, Ï.Áðàìì. Ïðîöåññîð 80386 è åãî ïðîãðàììèðîâàíèå. "Ìèð" 1990.



Øàãóðèí, Â.Á. Áðîäèí, Ã.Ï. Ìîçãîâîé. Îïèñàíèå è ñèñòåìà êîìàíä. ÌÏ "Ìàëèï" 1992.





Äàòà âûäà÷è çàäàíèÿ “____” “_________” 1994 ã.



Ñðîê ïðåäñòàâëåíèÿ ðàáîòû íà êàôåäðó "  " "        " 1994 ã.





Ðóêîâîäèòåëü êóðñîâîé ðàáîòû :  ×åðíÿê Í.Ã.







1. ÎÒËÈ×Èß ÌÈÍÈ- È ÌÈÊÐÎÝÂÌ.

 

	Â êîíöå 60-õ ãîäîâ íà÷àëñÿ ñåðèéíûé âûïóñê ñðàâíèòåëüíî íåáîëüøèõ è äåøåâûõ ìèíè-ÝÂÌ. Èõ ïðåäíàçíà÷àëè äëÿ ïðåäïðèÿòèé è îðãàíèçàöèé, ãäå óñòàíîâêà âûñîêîïðîèçâîäèòåëüíûõ ÝÂÌ áûëà ýêîíîìè÷åñêè íåâûãîäíîé. Â èõ çàäà÷ó ïåðâîíà÷àëüíî âõîäèëà àâòîìàòèçàöèÿ ïðîôåññèîíàëüíîé ðàáîòû â ðàçëè÷íûõ îðãàíèçàöèÿõ, ðàáîòà íà ïðåäïðèÿòèÿõ â êà÷åñòâå ïðîáëåìíîîðèåíòèðîâàííûõ ÝÂÌ. Â 1977-78 ãîäó áûë íà÷àò âûïóñê ñåìåéñòâà ìàëûõ ÝÂÌ (ÑÌ ÝÂÌ). Èõ ÷àñòî íàçûâàëè óïðàâëÿþùèìè âû÷èñëèòåëüíûìè êîìïëåêñàìè, òàê êàê îíè ÷àùå âñåãî èñïîëüçîâàëèñü â ñèñòåìàõ óïðàâëåíèÿ ðàçëè÷íîãî ðîäà. Îäíàêî, ÑÌ 3-åé î÷åðåäè, ðàçðàáîòàííûå â ïîñëåäíèå ãîäû îòíîñÿòñÿ óæå ê ÝÂÌ ÷åòâåðòîãî ïîêîëåíèÿ è èìåþò áîëüøóþ ïðîèçâîäèòåëüíîñòü, ïîýòîìó êðóã èõ ïðèìåíåíèÿ ðåçêî ðàñøèðèëñÿ, è èõ àêòèâíî èñïîëüçóþò â êà÷åñòâå àâòîìàòèçèðîâàííûõ ðàáî÷èõ ìåñò, îáúåäèíÿþò â âû÷èñëèòåëüíûå ñèñòåìû, è ïîðó÷àþò èì ðàñ÷åò ýêîíîìè÷åñêèõ è ñòàòèñòè÷åñêèõ çàäà÷. Ñ ïîÿâëåíèåì áîëüøèõ èíòåãðàëüíûõ ñõåì ñâÿçàíî ðàçâèòèå äðóãîãî êëàññà ìàøèí - ìèêðîÝÂÌ, è, êàê äîñòèæåíèå ýòîãî íàïðàâëåíèÿ - ïîÿâëåíèå ìîùíûõ ïðîôåññèîíàëüíûõ ÏÝÂÌ, êîòîðûå èñïîëüçóþòñÿ íà ðàáî÷èõ ìåñòàõ äëÿ àâòîìàòèçàöèè òðóäà, íåñëîæíûõ ðàñ÷åòîâ è  ðàçëè÷íîãî ðîäà  ïðîåêòèðîâàíèÿ. Îñíîâíûì îòëè÷èåì ìèíè- îò ìèêðîÝÂÌ íåñîìíåííî ÿâëÿåòñÿ îðèåíòàöèÿ. Ìàøèíû ÑÌ ÝÂÌ âûïóñêàëèñü êàê ïðîáëåìíî îðèåíòèðîâàííûå ÝÂÌ è ïîääåðæèâàëèñü áîëüøèì êîëè÷åñòâîì ðàçëè÷íûõ ìîäóëåé îïðåäåëÿþùèõ èõ ñïåöèàëèçàöèþ, â òî âðåìÿ êàê ÏÝÂÌ - ýòî óíèâåðñàëüíûå ÝÂÌ, ðàññ÷èòàííûå ïîìèìî ïðèìåíåíèÿ â ïðîôåññèîíàëüíîé äåÿòåëüíîñòè åùå è íà ïðèìåíåíèå â êà÷åñòâå îáó÷àþùèõ è áûòîâûõ ÝÂÌ. Ïî ôóíêöèîíàëüíûì âîçìîæíîñòÿì ìèíè- è ìèêðîÝÂÌ èìåþùèå ïðèìåðíî îäèí è òîò æå óðîâåíü íå îòëè÷àþòñÿ äðóã îò äðóãà, êàê ýòî äîëæíî áûòü äëÿ ìàøèí ðàçíîãî êëàññà, ò.å. ó÷èòûâàÿ ÷òî ìèíè-ÝÂÌ ñ÷èòàåòñÿ áîëåå ìîùíîé ÷åì ìèêðîÝÂÌ, à â ÷àñòíîñòè ÏÝÂÌ. Äëÿ ñðàâíåíèÿ âîçüìåì ñóïåðìèíè-ÝÂÌ ÑÌ 1700 è ñîâðåìåííóþ ïåðñîíàëüíóþ ÝÂÌ íà áàçå 32-ðàçðÿäíîãî ïðîöåññîðà.





ÑÌ 1700		AMD 80386 DX 40Mhz



Ïðîèçâîäèòåëü-

íîñòü, ìëí.îï./ñ 		3				9.6



Ðàçðÿäíîñòü			32				32



Åìêîñòü ÎÇÓ

Ìáàéò		          5-15			         1-128 



Âñå äàííûå ïî ïðîöåññîðó AMD386 âçÿòû èç äîêóìåíòàöèè íà Ali 386 MINI ISA System Board. Êàê âèäíî ñ ðàçâèòèåì ýëåìåíòíîé áàçû ÏÝÂÌ, çàäóìàííûå êàê ìåíåå ìîùíûå, ÷åì ìèíè-ÝÂÌ ïåðñîíàëüíûå êîìïüþòåðû îáîãíàëè èõ ïî ïðîèçâîäèòåëüíîñòè.









2. ÑÈÑÒÅÌÛ ÀÄÐÅÑÀÖÈÈ ÈÑÏÎËÜÇÓÅÌÛÅ Â ÌÈÍÈ-ÝÂÌ



	Â ýòîé ãëàâå áóäóò ðàññìîòðåíû ñïîñîáû àäðåñàöèè äàííûõ, èñïîëüçóåìûå â ìèíè-ÝÂÌ íà ïðèìåðå ÑÌ1700. Ýòî ïåðâûé ïðåäñòàâèòåëü 32-ðàçðÿäíûõ ÝÂÌ ñåìåéñòâà ÑÌ. Âû÷èñëèòåëüíûé êîìïëåêñ ÑÌ1700 ïðåäñòàâëÿåò ñîáîé óíèâåðñàëüíóþ ÝÂÌ. Îäíà èç îñíîâíûõ öåëåé åãî ñîçäàíèÿ - ýòî ðàñøèðåíèå âèðòóàëüíîãî àäðåñíîãî ïðîñòðàíñòâà ïî ñðàâíåíèþ ñ 16-ðàçðÿäíîé ÑÌ4. Õîòÿ íåêîòîðûå èíñòðóêöèè âû÷èñëèòåëüíîãî êîìïëåêñà ÑÌ1700 èìåþò ñõîäñòâî ñ èíñòðóêöèÿìè ÑÌ4, ÑÌ1700 ïðåäñòàâëÿåò ñîáîé ïîëíîñòüþ íîâóþ àðõèòåêòóðó. Àïïàðàòíûå ñðåäñòâà ÑÌ1700 îðèåíòèðîâàíû íà ðåàëèçàöèþ ÿçûêîâ âûñîêîãî óðîâíÿ è ñèñòåìíûõ ïðîãðàìì, êîòîðûå èñïîëüçóþòñÿ îïåðàöèîííîé ñèñòåìîé è êîìïèëÿòîðîì. Ñèñòåìà êîìàíä ÑÌ1700 â íàñòîÿùåå âðåìÿ âêëþ÷àåò 304 èíñòðóêöèè è áîëåå 20 ðåæèìîâ àäðåñàöèè îïåðàíäîâ. Âñå ýòî äàåò âîçìîæíîñòü ïðîãðàììèñòó ñîñòàâëÿòü ýôôåêòèâíûå ïî îáúåìó è âðåìåíè âûïîëíåíèÿ ïðîãðàììû. Êàêèå æå ñïîñîáû àäðåñàöèè ïðåäóñìîòðåíû â ÑÌ1700? Ìû ðàññìîòðèì íåñêîëüêî ñïîñîáîâ àäðåñàöèè, êîòîðûå â îáùåì ìîæíî ïîäåëèòü íà ðåãèñòðîâûå, êîñâåííûå, èíäåêñíûå è ñïåöèàëüíûå.





2.1  ÐÅÃÈÑÒÐÎÂÛÉ ÐÅÆÈÌ ÀÄÐÅÑÀÖÈÈ



	Â ýòîì ðåæèìå îïåðàíäîì ÿâëÿåòñÿ ñîäåðæèìîå ðåãèñòðà.Ðàññìîòðèì èíñòðóêöèþ MOVL R2,R3. Äëÿ ÑÌ ÝÂÌ õàðàêòåðíî, ÷òî ïðèåìíèêîì âñåãäà ÿâëÿåòñÿ âòîðîé îïåðàíä äëÿ äâóõ- è òðåòèé äëÿ òðåõ-îïåðàíäíûõ èíñòðóêöèé. Ïîýòîìó èíñòðóêöèÿ MOVL R2,R3 ïåðåñûëàåò ñîäåðæèìîå ðåãèñòðà R2 â ðåãèñòð R3, à íå íàîáîðîò, êàê áûëî áû ñ àíàëîãè÷íîé èíñòðóêöèåé MOV AX,BX èç íàáîðà êîìàíä ïðîöåññîðîâ cåìåéñòâà 8086 ôèðìû Intel. Ïðèâåäåì ïðèìåð èñïîëüçîâàíèÿ ýòîãî ñïîñîáà àäðåñàöèè íà ïðèìåðå èíñòðóêöèè MOVL R2,R3. Åå ìàøèííàÿ çàïèñü áóäåò âûãëÿäåòü, êàê D0 52 53, ãäå D0 - êîä èíñòðóêöèè, à 52 è 53 - ïðÿìàÿ àäðåñàöèÿ, 2îé ðåãèñòð è ïðÿìàÿ àäðåñàöèÿ, 3èé ðåãèñòð ñîîòâåòñòâåííî.

    

Ïóñòü ñîäåðæèìîå ðåãèñòðîâ äî îïåðàöèè áûëî:

R2 = 00000010

R3 = 00001000

Òîãäà ïîñëå îíè áóäóò âûãëÿäåòü òàê:

R2 = 00000010

R3 = 00000010



Êàê âèäíî èç ïðèìåðà, ñîäåðæèìîå ðåãèñòðà R2 áûëî ñêîïèðîâàíî â R3.





2.2  ÊÎÑÂÅÍÍÎ-ÐÅÃÈÑÒÐÎÂÛÉ ÐÅÆÈÌ



	Â ýòîì ðåæèìå ñîäåðæèìîå ðåãèñòðà ÿâëÿåòñÿ àäðåñîì îïåðàíäà. Ìíåìîíèêà íà àññåìáëåðå (Rn), ãäå (Rn) ÿâëÿåòñÿ ðåãèñòðîì ñîäåðæàùèì ëèáî àäðåñ îïåðàíäà èñòî÷íèêà {MOVL (R2),R3} ëèáî àäðåñ îïåðàíäà ïðèåìíèêà {MOVL R2,(R3)}. Â êà÷åñòâå ïðèìåðà îïÿòü ïðèâåäåì èíñòðóêöèþ ïåðåñûëêè äâîéíîãî ñëîâà MOVL R2,(R3). Êîä îïåðàöèè îñòàíåòñÿ òîò æå, à îïåðàíäû áóäóò ïðåäñòàâëåíû êàê 52 63, ãäå 63 - ýòî óæå êîñâåííàÿ àäðåñàöèÿ ñ èñïîëüçîâàíèåì 3ãî ðåãèñòðà. Ïðè òîì æå ñîäåðæèìîì ðåãèñòðîâ, ÷òî è â ïðåäûäóùåì ïðèìåðå, áóäåì èìåòü:

    

Äî îïåðàöèè MOVL R2,(R3):

						R2 = 00000010

						R3 = 00001000

				          (00001000) = 00000200	 (R3)

Ïîñëå...

						R2 = 00000010

						R3 = 00001000

				          (00001000) = 00000010

    

Ïîñëå îïåðàöèè ïåðåñûëêè çíà÷åíèå ÿ÷åéêè ïàìÿòè, àäðåñ êîòîðîé ñîäåðæàëñÿ â R3 (00001000) èçìåíèëñÿ ñ 000000200 íà 00000010.





2.3  ÐÅÆÈÌ Ñ ÀÂÒÎÓÂÅËÈ×ÅÍÈÅÌ



	Ñïåöèàëüíî äëÿ îáðàáîòêè ìàññèâîâ äàííûõ â CM1700 ïðåäóñìîòðåíà àäðåñàöèÿ ñ àâòîóâóëè÷åíèåì. Â ýòîì ðåæèìå ñîäåðæèìîå âûáðàííîãî ðåãèñòðà ÿâëÿåòñÿ àäðåñîì îïåðàíäà, êàê è ïðè êîñâåííî-ðåãèñòðîâîé àäðåñàöèè, îäíàêî ïîñëå âûïîëíåíèÿ îïåðàöèè ñîäåðæèìîå ðåãèñòðà óâåëè÷èâàåòñÿ íà N, â çàâèñèìîñòè îò òèïà îïåðàíäà:



N = 1,  åñëè îïåðàíäîì ÿâëÿåòñÿ áàéò,

N = 2,  åñëè îïåðàíäîì ÿâëÿåòñÿ ñëîâî,

N = 4,  åñëè îïåðàíäîì ÿâëÿåòñÿ äâîéíîå ñëîâî,

N = 8,  åñëè îïåðàíäîì ÿâëÿåòñÿ ó÷åòâåðåííîå ñëîâî èëè ñëîâî ñ       	  	  ïëàâàþùåé çàïÿòîé,

N =16, åñëè îïåðàíäîì ÿâëÿåòñÿ öåëîå ñëîâî äëèíîé 128 ðàçðÿäîâ èëè 	 	  äâîéíîå ñëîâî ñ 	ïëàâàþùåé çàïÿòîé.

    

	Ðàññìîòðèì ýòîò ðåæèì àäðåñàöèè èñïîëüçóÿ êîìàíäó MOVL (R0),(R2)+. Â ïàìÿòè èíñòðóêöèÿ áóäåò ïðåäñòàâëåíà êàê D0 60 82, ãäå 60 - êàê óæå ãîâîðèëîñü êîñâåííàÿ àäðåñàöèÿ ñ ðåãèñòðîì R0, à 82 - êîñâåííàÿ àäðåñàöèÿ ñ èñïîëüçîâàíèåì ðåãèñòðà R2 è àâòîóâåëè÷åíèå. Âîñüìåðêà â ïîñëåäíåì ñëó÷àå êàê ðàç è îçíà÷àåò äàííûé ðåæèì àäðåñàöèè.



Äî îïåðàöèè MOVL (R0),(R2)+

						R0 = 00001000

						R2 = 00001050

				          (00001000) = 000000AC	 (R3) 

				          (00001050) = 00000000	 (R2)

Ïîñëå...

						R0 = 00001000

						R2 = 00001054  	<—— Óâåëè÷èëîñü íà 4

				          (00001000) = 000000AC

				          (00001050) = 000000AC

    

Êàê âèäíî ïðîèçîøëà ïåðåñûëêà ÷èñëà èç ÿ÷åéêè 00001000 â 00001050 è çíà÷åíèå ðåãèñòðà R2 óâåëè÷èëîñü íà 4. ( Èíñòðóêöèÿ MOVL ïåðåñûëàåò äâîéíûå ñëîâà. Îá ýòîì ãîâîðèò ñóôôèêñ 'L' - Long - äëèííîå èëè äâîéíîå ñëîâî. Ïîýòîìó R2 óâåëè÷èëñÿ íà 4. Âîîáùå ïðåäóñìîòðåíû îïåðàöèè ðàáîòàþùèå ñ áàéòàìè, ñëîâàìè, äâîéíûìè ñëîâàìè è èíîãäà ñ ó÷åòâåðåííûìè ñëîâàìè è èìåþùèå ñóôôèêñû B,W,L è Q ñîîòâåòñòâåííî.)





2.4  ÐÅÆÈÌ Ñ ÀÂÒÎÓÌÅÍÜØÅÍÈÅÌ



	Ýòîò ðåæèì èäåíòè÷åí ðåæèìó ñ àâòîóâåëè÷åíèåì, îäíàêî çäåñü ïîñëå âûïîëíåíèÿ îïåðàöèè ñëåäóåò íå óâåëè÷åíèå, à óìåíüøåíèå îïåðàíäà ïî òåì æå ïðàâèëàì. Äëÿ ïðèìåðà ðàññìîòðèì êîìàíäó CLRB -(R5), êîòîðàÿ â ïàìÿòè áóäåò âûãëÿäåòü êàê 94 75. Çäåñü 94 - êîä îïåðàöèè, à 75 - çíà÷èò: èñïîëüçîâàòü ðåãèñòð R5 ( ?5 ) è ïðîèçâåñòè óìåíüøåíèå ïîñëå èñïîëíåíèÿ ( 7? ).



Äî îïåðàöèè CLRB -(R5)

						R5 = 00001000

				        (00000FFF) = 0000001A

				        (000001000) = 0000001A	(R5)

Ïîñëå...

						R5 = 00000FFF 	<——  óìåíüøèëîñü íà 1

				         (00000FFF) = 0000001A	(R5)

				         (000001000) = 00000000       	<——  0

     

Èçìåíåíèÿ õîðîøî âèäíû. ß÷åéêà 00001000, íà êîòîðóþ ïåðâîíà÷àëüíî óêàçûâàë ðåãèñòð R5 î÷èñòèëàñü ( CLRB - CLeaR Byte - î÷èñòèòü áàéò ),çíà÷åíèå ðåãèñòðà R5 óìåíüøèëîñü íà 1 è òåïåðü óêàçûâàåò íà ÿ÷åéêó ïàìÿòè ðàñïîëîæåííóþ ïåðåä ÿ÷åéêîé 00001000, ò.å. 00000FFF.



2.5  ÊÎÑÂÅÍÍÛÉ ÐÅÆÈÌ Ñ ÀÂÒÎÓÂÅËÈ×ÅÍÈÅÌ



	Â ýòîì ðåæèìå ñîäåðæèìîå âûáðàííîãî ðåãèñòðà ÿâëÿåòñÿ àäðåñîì àäðåñà îïåðàíäà, à ïîñëå âûïîëíåíèÿ îïåðàöèè ïðîèçâîäèòñÿ óâåëè÷åíèå ñîäåðæèìîãî ýòîãî ðåãèñòðà íà 4, íåçàâèñèìî îò ðàçìåðà îïåðàíäà. Ýòî îïðåäåëÿåòñÿ òåì, ÷òî ðåãèñòð ñîäåðæèò àäðåñ àäðåñà ( ò.å. àäðåñ ÿ÷åéêè, ñîäåðæèìîå êîòîðîé â ñâîþ î÷åðåäü èñïîëüçóåòñÿ êàê àäðåñ äëÿ ïîëó÷åíèÿ äåéñòâèòåëüíîãî îïåðàíäà ), à àäðåñ âñåãäà ïðåäñòàâëÿåòñÿ êàê äâîéíîå ñëîâî.

	Äëÿ ïðèìåðà âîçüìåì îïåðàöèþ î÷èñòêè áàéòà, ìíåìîíèêà êîòîðîé íà àññåìáëåðå áóäåò âûãëÿäåòü êàê CLRB @(R5)+. Ñèìâîë '@' ( çþõà ) îçíà÷àåò èñïîëüçîâàíèå íå ïðîñòî ðåæèìà ñ àâòîóâåëè÷åíèåì, à èìåííî êîñâåííîãî. Ïðåäñòàâëåíèå ýòîé îïåðàöèè â ïàìÿòè áóäåò 94 95, ãäå 94 - êîä îïåðàöèè, 95 - îçíà÷àåò èñïîëüçîâàíèå ðåãèñòðà R5 è êîñâåííîé àäðåñàöèè ñ àâòîóâåëè÷åíèåì (öèôðà 9).



Äî îïåðàöèè CLRB @(R5)+

						R5 = 00001000  

				          (00001000) = 000000AC	(R5)

				         (000000AC) = 0A		(00001000)

Ïîñëå...

						R5 = 00001004 	<——  óâåëè÷èëîñü íà 4

				          (00001000) = 000000AC

				         (000000AC) = 00		<——  0

Â ðåçóëüòàòå âûïîëíåíèÿ ýòîé êîìàíäû ñîäåðæèìîå ÿ÷åéêè 000000AC, àäðåñ êîòîðîé cîäåðæàëñÿ â ÿ÷åéêå 00001000, íà êîòîðóþ óêàçûâàë ðåãèñòð R5 îáíóëèëîñü, à çíà÷åíèå ðåãèñòðà R5 óâåëè÷èëîñü íà 4.

    



2.6  ÐÅÆÈÌ ÑÌÅÙÅÍÈß



	Â ýòîì ðåæèìå ñîäåðæèìîå âûáðàííîãî ðåãèñòðà ñêëàäûâàåòñÿ ñ ñîäåðæèìûì áàéòà, ñëîâà èëè äâîéíîãî ñëîâà, ñëåäóþùåãî íåïîñðåäñòâåííî çà ñïåöèôèêàòîðîì îïåðàíäà. Ïîëó÷åííàÿ ñóììà ÿâëÿåòñÿ àäðåñîì îïåðàíäà. Ìíåìîíèêè íà àññåìáëåðå äëÿ 3åõ ñëó÷àåâ èìåþò âèä: B^X(Rn), W^X(Rn), L^X(Rn), ãäå X ñìåùåíèå, îòíîñèòåëüíî (Rn). Âîçìîæíîñòü çàäàâàòü ðàçìåðíîñòü ñìåùåíèÿ ïðåäóñìîòðåíà äëÿ ýêîíîìèè ïàìÿòè.

	Ðàññìîòðèì ýòîò ñïîñîá àäðåñàöèè íà ïðèìåðå êîìàíäû CLRB B^2(R4), êîòîðàÿ î÷èñòèò 3èé áàéò áàéòîâîãî ìàññèâà, àäðåñ êîòîðîãî ñîäåðæèòñÿ â ðåãèñòðå R5. Åå ìàøèííîå ïðåäñòàâëåíèå âûãëÿäèò êàê 94 A4 02, ãäå 94 - êîä îïåðàöèè, A4 - ðåãèñòð R4 è ñìåùåíèå ïðåäñòàâëåíî áàéòîì ( äëÿ ñëîâà è äâîéíîãî ñëîâà áûëî áû C4 è E4 ñîîòâåòñòâåííî, à òðåòüå ïîëå ïðåäñòàâëÿëî áû ñìåùåíèå êàê ñëîâî èëè äâîéíîå ñëîâî ),  à 02 ñîáñòâåííî ñìåùåíèå, ïðåäñòàâëåííîå â âèäå áàéòà.



Äî îïåðàöèè CLRB B^2(R4)

						R4 = 00001000

				          (00001000) = 00		(R4)

				          (00001001) = 01

				          (00001002) = 02		(R4)+2



Ïîñëå...

						R4 = 00001000

				          (00001000) = 00		(R4)

				          (00001001) = 01

				          (00001002) = 00		<—— 0



Â ðåçóëüòàòå âûïîëíåíèÿ êîìàíäû äåéñòâèòåëüíî ïðîèçîøëî î÷èùåíèå ÿ÷åéêè 00001002, çàäàííîé íà÷àëüíûì àäðåñîì 00001000 è ñìåùåíèåì 2. Ýòîò ðåæèì àäðåñàöèè ïîçâîëÿåò ëåãêî îáðàùàòüñÿ ê îòäåëüíûì ýëåìåíòàì ìàññèâîâ, ÷òî î÷åíü óäîáíî.





2.7  ÊÎÑÂÅÍÍÛÉ ÐÅÆÈÌ ÑÌÅÙÅÍÈß



	Â ýòîì ðåæèìå ñîäåðæèìîå âûáðàííîãî ðåãèñòðà ñêëàäûâàåòñÿ ñî ñìåùåíèåì ( áàéò, ñëîâî èëè äâîéíîå ñëîâî ñëåäóþùåå íåïîñðåäñòâåííî çà ñïåöèôèêàòîðîì  îïåðàíäà ) è ïîëó÷åííàÿ ñóììà ðàññìàòðèâàåòñÿ êàê àäðåñ äâîéíîãî ñëîâà, êîòîðîå ÿâëÿåòñÿ àäðåñîì îïåðàíäà. Ìíåìîíè÷åñêîå ïðåäñòàâëåíèå íà àññåìáëåðå @B^X(Rn), @W^X(Rn) è @L^X(Rn) äëÿ ñìåùåíèÿ X â áàéò, ñëîâî èëè äâîéíîå ñëîâî ñîîòâåòñòâåííî. Rn - ýòî ðåãèñòð,èñïîëüçóåìûé â äàííîì ñïîñîáå àäðåñàöèè.

	Â êà÷åñòâå ïðèìåðà âîçüìåì èíñòðóêöèþ MOVW @B^8(R5),(R2), êîòîðàÿ äîëæíà çàíåñòè â ïàìÿòü ïî àäðåñó (R2) ÷èñëî, íà êîòîðîå óêàçûâàåò äâîéíîå ñëîâî, ïî àäðåñó ïîëó÷àåìîìó ïðè ñëîæåíèè ñîäåðæèìîãî ðåãèñòðà R2 ñî ñìåùåíèåì 8. Íà ìàøèííîì ÿçûêå ýòà èíñòðóêöèÿ áóäåò èìåòü âèä B0 B5 08 62, ãäå Â0 - êîä èíñòðóêöèè, B5 - ðåãèñòð R5 è áàéòîâîå  ñìåùåíèå, 08 - ñìåùåíèå è 62 - êîñâåííàÿ àäðåñàöèÿ ñ èñïîëüçîâàíèåì ðåãèñòðà R2.



Äî îïåðàöèè MOVW @B^8(R5),(R2)

						R5 = 00001000

						R2 = 00000400

				          (00001000) = 00000100	(R5)

				          (00001004) = 00000200

				          (00001008) = 00000300	(R5)+8



				          (00000300) = AAAA     	@(R5)+8

				          (00000400) = 0000		(R2)

    Ïîñëå...

						R5 = 00001000

						R2 = 00000400

				          (00001000) = 00000100	(R5)

				          (00001004) = 00000200

				          (00001008) = 00000300	(R5)+8

				          (00000300) = AAAA 

				          (00000400) = AAAA



Êàê âèäíî èç ïðèìåðà â ÿ÷åéêó 00000400 áûëî çàíåñåíî ñîäåðæèìîå ÿ÷åéêè 00000300. Àäðåñ 0000300 áûë âû÷èñëåí êàê ñîäåðæèìîå R5 ( 00001000 ) ïëþñ 8 ò.å. 00001008. Ýòà ÿ÷åéêà, êàê âèäíî, äåéñòâèòåëüíî ñîäåðæèò àäðåñ 00000300.





2.8  ÐÅÆÈÌ ÊÎÐÎÒÊÎÃÎ ËÈÒÅÐÀËÀ



	Òàê êàê ìíîãèå ëèòåðàëû (÷èñëà), èñïîëüçóåìûå â ïðîãðàììàõ, èìåþò íåáîëüøîé ðàçìåð, òî â ÑÌ1700 ïðåäóñìîòðåí ñïåöèàëüíûé ðåæèì àäðåñàöèè, íàçûâàåìûé ðåæèìîì êîðîòêîãî ëèòåðàëà. Â ýòîì ðåæèìå êîíñòàíòà ñîäåðæèòñÿ íåïîñðåäñòâåííî â ñàìîì ñïåöèôèêàòîðå îïåðàíäà. Ëþáîé ñïåöèôèêàòîð îïåðàíäà, äâà ñòàðøèõ ðàçðÿäà êîòîðîãî ðàâíû íóëþ ñîäåðæèò ëèòåðàëüíóþ êîíñòàíòó â ìëàäøèõ øåñòè ðàçðÿäàõ.



                  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, â çàâèñèìîñòè îò ðàçìåðà îïåðàíäà è ïðèáàâëÿåòñÿ ê áàçîâîìó àäðåñó. Èñïîëüçóÿ ýòîò ðåæèì àäðåñàöèè ñîâìåñòíî ñ óæå îïèñàííûìè ìîæíî ïîëó÷èòü ñëåäóþùèå ðåæèìû àäðåñàöèè :

    

Êîñâåííî-ðåãèñòðîâûé èíäåêñíûé, (Rn)[Rx].

Ñ àâòîóâåëè÷åíèåì èíäåêñíûé, (Rn)+[Rx].

Êîñâåííûé ñ àâòîóâåëè÷êíèåì èíäåêñíûé, @(Rn)+[Rx].

Ñ àâòîóìåíüøåíèåì èíäåêñíûé, -(Rn)[Rx].

Ñìåùåíèÿ èíäåêñíûé, N^X(Rn)[Rx], ãäå N ìîæåò ïðèíèìàòü çíà÷åíèÿ B, W, L.

Êîñâåííûé ñìåùåíèÿ èíäåêñíûé, @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 ÿâëÿåòñÿ ñ÷åò÷èêîì èíñòðóêöèé, è îäíîâðåìåííî ðåãèñòðîì îáùåãî íàçíà÷åíèÿ, òî åñòü äîñòóïåí ïðîãðàììèñòó äëÿ èñïîëüçîâàíèÿ â êà÷åñòâå áàçîâîãî ðåãèñòðà è ò.ä. Ýòî î÷åíü óïðîùàåò æèçíü ïðîãðàììèñòó, îäíàêî òðåáóåò ïîâûøåííîé âíèìàòåëüíîñòè,òàê êàê èñïîëüçîâàíèå ýòîãî ðåãèñòðà íàïðèìåð ïðè àäðåñàöèè ñ àâòîóìåíüøåíèåì ïðèâåäåò ê íåïðåäñêàçóåìîìó ðåçóëüòàòó. Ôàêòè÷åñêè ñî ñ÷åò÷èêîì èíñòðóêöèé èñïîëüçóþòñÿ òîëüêî ÷åòûðå ðåæèìà àäðåñàöèè: ñ àâòîóâåëè÷åíèåì, êîñâåííûé ñ àâòîóâåëè÷åíèåì, ñìåùåíèÿ è êîñâåííûé ñìåùåíèÿ. Ýòî äàåò ñ òî÷êè çðåíèÿ ïðîãðàììèñòà ( íî íå àïïàðàòíî ) ÷åòûðå äîïîëíèòåëüíûõ ðåæèìà àäðåñàöèè: íåïîñðåäñòâåííûé, àáñîëþòíûé, îòíîñèòåëüíûé è êîñâåííî-îòíîñèòåëüíûé. 

	Ðàññìîòðèì àëãîðèòì âûïîëíåíèÿ ðåæèìà ñ àâòîóâåëè÷åíèåì ïðè èñïîëüçîâàíèè ñ÷åò÷èêà èíñòðóêöèé â êà÷åñòâå ðåãèñòðà îáùåãî íàçíà÷åíèÿ. Ïî îïðåäåëåíèþ ðåæèìà ñ àâòîóâåëè÷åíèåì îïåðàöèÿ ïðîèçâîäèòñÿ íàä îïåðàíäîì, íà êîòîðûé óêàçûâàåò âûáðàííûé ðåãèñòð. Åñëè ìû èñïîëüçóåì ñ÷åò÷èê èíñòðóêöèé, òî îí â ýòîò ìîìåíò áóäåò óêàçûâàòü íà ÿ÷åéêó íåïîñðåäñòâåííî ñëåäóþùóþ çà ñïåöèôèêàòîðîì îïåðàíäà. Òàêèì îáðàçîì îïåðàíä  îêàçûâàåòñÿ íåïîñðåäñòâåííî â ïîòîêå èíñòðóêöèé. Ïîñëå âûáîðêè îïåðàíäà ñîäåðæèìîå ñ÷åò÷èêà óâåëè÷èòñÿ íà ðàçìåð îïåðàíäà, îïðåäåëÿåìûé êîäîì îïåðàöèè. Äëèíà êîíñòàíòû äîëæíà ñîîòâåòñòâîâàòü òèïó èíñòðóêöèè, äàæå åñëè åå ôàêòè÷åñêèé ðàçìåð ìåíüøå, òîëüêî òîãäà ïîñëå àâòîóâåëè÷åíèÿ ñîäåðæèìîãî ñ÷åò÷èêà èíñòðóêöèé îí áóäåò ñîäåðæàòü ïðàâèëüíûé àäðåñ ñëåäóþùåé êîìàíäû. Äëÿ ïðèìåðà ðàññìîòðèì èíñòðóêöèþ MOVB #10,(R2)

    

Äî îïåðàöèè 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)



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

					00000305  :  90  ÊÎÏ

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

					00000307  :  07  îòðèöàòåëüíîå ñìåùåíèå (309-10),

					00000308  :  FD  ïðåäñòàâëåííîå â äîï. êîäå  

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

        		 

						R2  = 00001000 

					          R15  = 00000305

				           (00000010) = 00      

				           (00001000) = FF      (R2)

Ïîñëå...

						R2  = 00001000 

 					          R15  = 0000030A 	<——— + 5

				           (00000010) = 00

				           (00001000) = 00		<———     0

        	  

	Îòìåòèì, ÷òî ñìåùåíèå â äàííîì ïðèìåðå îòðèöàòåëüíîå è ïðåäñòàâëåíî â   äîïîëíèòåëüíîì êîäå. Äëèíà ñìåùåíèÿ è ñîîòâåòñòâóþùèé êîíêðåòíûé êîä ðåæèìà âû÷èñëÿåòñÿ àâòîìàòè÷åñêè íà ýòàïå êîìïèëèðîâàíèÿ. Åñëè èñïîëüçîâàòü ñ÷åò÷èê èíñòðóêöèé â êîñâåííîì ðåæèìå ñî ñìåùåíèåì, òî ïîëó÷èì åùå îäèí ñïîñîá àäðåñàöèè, êîòîðûé íàçûâàåòñÿ êîñâåííî-îòíîñèòåëüíûì. Çäåñü ñóììà ñîäåðæèìîãî ñ÷åò÷èêà èíñòðóêöèé ñêëàäûâàåòñÿ ñî ñìåùåíèåì è ðàññìàòðèâàåòñÿ êàê àäðåñ àäðåñà îïåðàíäà. Äëÿ ïðîãðàììèñòà ýòîò ðåæèì ÿâëÿåòñÿ ïðîñòî ðåæèìîì êîñâåííîé àäðåñàöèè ñ èñïîëüçîâàíèåì ïðîèçâîëüíîé ÿ÷åéêè äëÿ õðàíåíèÿ àäðåñà. Êàê è â ïðåäûäóùåì ïðèìåðå ñìåùåíèå äîëæíî áûòü ðàâíî ðàçíèöå ìåæäó àäðåñîì äàííîé ÿ÷åéêè è òåêóùèì ïîëîæåíèåì èíñòðóêöèè. Íà àññåìáëåðå ýòîò ðåæèì îáîçíà÷àåòñÿ @Addr, ãäå Addr - àäðåñ ÿ÷åéêè, â êîòîðîé íàõîäèòñÿ àäðåñ îïåðàíäà. Ðàññìîòðèì     èíñòðóêöèþ MOVB @10,(R2):



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



					00000305  :  90  ÊÎÏ

					00000306  :  CC  <——— ïðåäñòàâëåíèå '@W^FD7(R15)'

					00000307  :  07  îòðèöàòåëüíîå ñìåùåíèå (309-10),  

					00000308  :  FD  ïðåäñòàâëåííîå â äîï. êîäå  

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



						R2  = 00001000 

					          R15  = 00000305

				           (00000000) = EE      		(00000010)

				           (00000010) = 00      

				           (00001000) = FF      		(R2)

Ïîñëå...

						R2  = 00001000 

					          R15  = 0000030A 	<——	+ 5

				          (00000000) = EE

				          (00000010) = 00

				          (00001000) = EE		<——  EE





2.11  ÀÄÐÅÑÀÖÈß ÏÅÐÅÕÎÄÎÂ.

 	

Ïîñëåäíèé ñïîñîá àäðåñàöèè, êîòîðûé áóäåò ðàññìîòðåí - ýòî àäðåñàöèÿ  ïåðåõîäîâ. Âîò ôîðìàò èíñòðóêöèè óñëîâíîãî ïåðåõîäà:



7    													  0

ÊÎÄ ÎÏÅÐÀÖÈÈ

ÑÌÅÙÅÍÈÅ



Àäðåñàöèÿ â ýòèõ èíñòðóêöèÿõ îòëè÷àåòñÿ îò âñåõ ðàññìàòðèâàåìûõ òåì, ÷òî çäåñü íåò ñïåöèôèêàòîðà îïåðàíäà. Êàæäàÿ èíñòðóêöèÿ óñëîâíîãî ïåðåõîäà ñîñòîèò èç êîäà îïåðàöèè è ñëåäóþùåãî çà íèì áàéòíîãî ñìåùåíèÿ ñî çíàêîì. Ïðè ôîðìèðîâàíèè àäðåñà ïåðåõîäà ñìåùåíèå ñêëàäûâàåòñÿ ñ ñîäåðæèìûì ñ÷åò÷èêà èíñòðóêöèé ïîäîáíî òîìó, êàê ýòî äåëàëîñü ïðè îòíîñèòåëüíîé àäðåñàöèè. Ïî÷åìó âñåãî 128 áàéò ? Ýòî îáóñëîâëåíî òåì, ÷òî áîëüøèíñòâî ïåðåõîäîâ àäðåñîâàíû ê ÿ÷åéêàì, íàõîäÿùèìñÿ íà íåáîëüøîì ðàññòîÿíèè îò ñàìîé èíñòðóêöèè ïåðåõîäà. Ëèøü â íåêîòîðûõ ñëó÷àÿõ òðåáóåòñÿ èñïîëüçîâàíèå áîëåå ýôôåêòèâíûõ ðåæèìîâ àäðåñàöèè.





3.   ÑÈÑÒÅÌÛ ÀÄÐÅÑÀÖÈÈ ÈÑÏÎËÜÇÓÅÌÛÅ Â ÏÝÂÌ



	Ñèñòåìû àäðåñàöèè èñïîëüçóåìûå â ïåðñîíàëüíûõ ÝÂÌ áóäóò ðàññìîòðåíû íà ïðèìåðå 32-ðàçðÿäíîãî ïðîöåññîðà 80386 ôèðìû Intel. Âñå ÷òî êàñàåòñÿ ýòîãî ïðîöåññîðà, ñèñòåìû åãî êîìàíä è ñïîñîáîâ àäðåñàöèè ìîæíî òàê æå îòíåñòè ê 386-ûì ïðîöåññîðàì ôèðì Cyrix è AMD (Advanced Micro Devices), êîòîðûå ïîëíîñòüþ ñîâìåñòèìû ñ I80386. ÌÏ 80386 ïðåäñòàâëÿåò ñîáîé âûñîêîïðîèçâîäèòåëüíûé 32-ðàçðÿäíûé ìèêðîïðîöåññîð, âûïîëíÿþùèé 3-4 ÌÎÏÑ (MIPS). Îí îòëè÷àåòñÿ ïîëíîé 32-ðàçðÿäíîé àðõèòåêòóðîé ñ ôèçè÷åñêèì àäðåñíûì îñòðàíñòâîì 4 Ãáàéò è âñòðîåííûìè ñðåäñòâàìè ñòðàíè÷íîé âèðòóàëüíîé ïàìÿòè, ÌÏ 80386 ìîæåò àäðåñîâàòü 64 Òáàéò âèðòóàëüíîé ïàìÿòè. Ñèñòåìà êîìàíä ÌÏ 80386 ñîäåðæèò 9 êàòåãîðèé êîìàíä: ïåðåñûëêè äàííûõ, àðèôìåòè÷åñêèõ, ñäâèãà, îáðàáîòêè ñòðîê, îáðàáîòêè áèòîâ, ïåðåäà÷è óïðàâëåíèÿ, ïîääåðæêè ÿçûêîâ âûñîêîãî óðîâíÿ, ïîääåðæêè îïåðàöèîííîé ñèñòåìû è óïðàâëåíèÿ ïðîöåññîðîì. Äëèíà êîìàíäû â ñðåäíåì ñîñòàâëÿåò 2-3 áàéòà. Îïåðàíäû ìîãóò èìåòü äëèíó 8,16 èëè 32 ðàçðÿäà.

	ÌÏ 80386 ðåàëèçóåò ñåãìåíòíóþ îðãàíèçàöèþ ïàìÿòè, ïðè êîòîðîé ôèçè÷åñêèé àäðåñ ÿ÷åéêè âû÷èñëÿåòñÿ ïóòåì ñëîæåíèÿ áàçîâîãî àäðåñà ñåãìåíòà è îòíîñèòåëüíîãî àäðåñà ÿ÷åéêè âíóòðè ñåãìåíòà. Áàçîâûé àäðåñ îïðåäåëÿåòñÿ ñîäåðæèìûì 16-ðàçðÿäíîãî ñåãìåíòíîãî  ðåãèñòðà è çàâèñèò îò ðåæèìà ðàáîòû ìèêðîïðîöåññîðà. Åñëè ìèêðîïðîöåññîð ðàáîòàåò â ðåæèìå îáðàáîòêè 16-ðàçðÿäíûõ äàííûõ ( ðåæèì ðåàëüíûõ àäðåñîâ èëè ðåæèì âèðòóàëüíîãî ïðîöåññîðà 8086), òî 20-ðàçðÿäíûé áàçîâûé àäðåñ ôîðìèðóåòñÿ ïóòåì ñäâèãà ñîäåðæèìîãî ñåãìåíòíîãî ðåãèñòðà íà ÷åòûðå ðàçðÿäà âëåâî. Ò.å. åñëè â ñåãìåíòíîì ðåãèñòðå ñîäåðæèòñÿ ÷èñëî 45F7, òî áàçîâûé àäðåñ áóäåò 45F70. Åñëè ìèêðîïðîöåññîð ðàáîòàåò â ðåæèìå îáðàáîòêè 32-ðàçðÿäíûõ äàííûõ ( çàùèùåííûé ðåæèì ), òî 32-ðàçðÿäíûé áàçîâûé àäðåñ ñîäåðæèòñÿ â äåñêðèïòîðå, âûáîð êîòîðîãî èç òàáëèöû äåñêðèïòîðîâ îñóùåñòâëÿåòñÿ ñ ïîìîùüþ ñåëåêòîðà - ñîäåðæèìîãî ñîîòâåòñòâóþùåãî ñåãìåíòíîãî ðåãèñòðà. Â çàâèñèìîñòè îò òèïà îáðàùåíèÿ ê ïàìÿòè ïðîèçâîäèòñÿ âûáîð ñåãìåíòíîãî ðåãèñòðà è ñïîñîáà îïðåäåëåíèÿ îòíîñèòåëüíîãî àäðåñà. Äëÿ    íåêîòîðûõ ñïîñîáîâ îáðàùåíèÿ ê ïàìÿòè âîçìîæíû âàðèàíòû âûáîðà ñåãìåíòíûõ ðåãèñòðîâ. Ýòè âàðèàíòû ìîãóò áûòü âûáðàíû ñ ïîìîùüþ ïðåôèêñà çàìåíû ñåãìåíòà SEG. Íà ìíåìîíèêå àññåìáëåðà ýòî âûãëÿäèò ïðîñòî êàê DS:[?], ES:[?], CS:[?], FS:[?] è ò.ä. Â êà÷åñòâå îòíîñèòåëüíîãî àäðåñà èñïîëüçóåòñÿ ñîäåðæèìîå ðåãèñòðîâ  EIP(IP), ESP(SP), ESI(SI), EDI(DI) èëè ýôôåêòèâíûé àäðåñ EA, êîòîðûé ôîðìèðóåòñÿ â ñîîòâåòñòâèè ñ çàäàííûì ñïîñîáîì àäðåñàöèè (êîñâåííûé, èíäåêñíûé è ò.ä.).



    1. Âûáîðêà êîìàíä.



       Ñåãìåíòíûé ðåãèñòð           	CS       	( Code Segment )

       Îòíîñèòåëüíûé àäðåñ          	EIP(IP)  	( Instruction Pointer )



    2. Îáðàùåíèå ê ñòåêó.



       Ñåãìåíòíûé ðåãèñòð           	SS     		( Stack Segment )

       Îòíîñèòåëüíûé àäðåñ          	ESP(SP)  	( Stack Pointer )



    3. Àäðåñàöèÿ îïåðàíäà.



       Ñåãìåíòíûé ðåãèñòð           	DS èëè (CS,SS,ES,FS,GS)

       Îòíîñèòåëüíûé àäðåñ          	EA



    4. Àäðåñàöèÿ ýëåìåíòà ñòðîêè-èñòî÷íèêà.



       Ñåãìåíòíûé ðåãèñòð           	DS èëè (CS,SS,ES,FS,GS)

       Îòíîñèòåëüíûé àäðåñ          	ESI(SI)



    5. Àäðåñàöèÿ ýëåìåíòà ñòðîêè-ïðèåìíèêà.



       Ñåãìåíòíûé ðåãèñòð           	ES

       Îòíîñèòåëüíûé àäðåñ          	EDI(DI)



    6. Àäðåñàöèÿ îïåðàíäà ñ èñïîëüçîâàíèåì â êà÷åñòâå áàçîâîãî ðåãèñòðà EBP(BP)                                              	èëè ESP(SP).



       Ñåãìåíòíûé ðåãèñòð           	SS èëè (CS,DS,ES,FS,GS)

       Îòíîñèòåëüíûé àäðåñ          	EA



Ýôôåêòèâíûé àäðåñ îïåðàíäà EA ÿâëÿåòñÿ 16- èëè 32-ðàçðÿäíûì è ôîðìèðóåòñÿ â çàâèñèìîñòè îò çíà÷åíèÿ îïðåäåëåííûõ ïîëåé â ïðåäñòàâëåíèè êîìàíäû. Â îáùåì ñëó÷àå EA îáðàçóåòñÿ ïóòåì ñëîæåíèÿ òðåõ êîìïîíåíò:



ñîäåðæèìîãî áàçîâîãî ðåãèñòðà EBP(BP) èëè EBX(BX);

ñîäåðæèìîãî èíäåêñíîãî ðåãèñòðà ESI(SI) èëè EDI(DI);

8-, 16- èëè 32-ðàçðÿäíîãî ñìåùåíèÿ, çàäàííîãî íåïîñðåäñòâåííî â êîìàíäå.



Â ðàçíûõ ñëó÷àÿõ äëÿ ôîðìèðîâàíèÿ EA èñïîëüçóþòñÿ ëèáî âñå ëèáî ÷àñòü ýòèõ ñëàãàåìûõ. Òåïåðü ðàññìîòðèì êîíêðåòíûå ñïîñîáû àäðåñàöèè.



3.1  ÍÅÏÎÑÐÅÄÑÒÂÅÍÍÀß ÀÄÐÅÑÀÖÈß.



	Â êà÷åñòâå îïåðàíäà èñïîëüçóåòñÿ îäèí, äâà èëè ÷åòûðå ïîñëåäíèõ  áàéòà êîìàíäû. Òàêîé ñïîñîá àäðåñàöèè ðåàëèçóåòñÿ ïðè âûïîëíåíèè ðÿäà êîìàíä ïåðåñûëêè (MOV, PUSH), àðèôìåòè÷åñêèõ îïåðàöèÿõ (ADD, ADC, SUB, SBB, CMP, IMUL), è ëîãè÷åñêèõ (AND, OR, XOR, TEST). Ðàññìîòðèì ïðîñòîé ïðèìåð - óìíîæåíèå ñîäåðæèìîãî ðåãèñòðà íà êîíñòàíòó:



Ðåãèñòðû äî âûïîëíåíèÿ IMUL  AX,5



					AX = 10

Ïîñëå...

					AX = 50



3.2  ÐÅÃÈÑÒÐÎÂÀß ÀÄÐÅÑÀÖÈß.



	Ïðè ýòîì ñïîñîáå àäðåñàöèè îïåðàíäîì áåðåòñÿ ñîäåðæèìîå ðåãèñòðà. Íàïðèìåð äëÿ  îïåðàöèè çàíåñåíèÿ íà ñòåê ðåàëèçàöèÿ ðåãèñòðîâîãî ñïîñîáà àäðåñàöèè áóäåò âûãëÿäåòü êàê PUSH DS.



Ðåãèñòðû äî âûïîëíåíèÿ PUSH DS



					DS = 5678h

				 	SP = FFFEh

				 SS:FFFE = 0000h

Ïîñëå...

					DS = 5678

					SP = FFFDh

				 SS:FFFD = 5678

				 SS:FFFE = 0000



Êàê âèäíî èç ïðèìåðà çíà÷åíèå ðåãèñòðà DS áûëî çàíåñåíî íà ñòåê.





3.3  ÊÎÑÂÅÍÍÎ-ÐÅÃÈÑÒÐÎÂÀß ÀÄÐÅÑÀÖÈß.



	Ïðè òàêîé àäðåñàöèè îòíîñèòåëüíûé àäðåñ ñîäåðæèòñÿ â èíäåêñíîì (SI, DI, ESI, EDI) èëè áàçîâîì ( BX, BP, EBX, EBP) ðåãèñòðàõ èëè â ðåãèñòðàõ îáùåãî íàçíà÷åíèÿ EAX, ECX, EDX. Àäðåñ îïåðàíäà âû÷èñëÿåòñÿ êàê ñåãìåíò:ñìåùåíèå. Ñìåùåíèå ïðåäñòàâëåíî ýôôåêòèâíûì àäðåñîì. 

	Äëÿ ïðèìåðà ðàññìîòðèì êîìàíäó MOV  EBX,[EDI], êîòîðàÿ ïåðåñûëàåò ñîäåðæèìîå ÿ÷åéêè DS:[EDI] â ðåãèñòð EBX. ( Â êà÷åñòâå ðàçìåðà îïåðàíäà áåðåòñÿ äâîéíîå ñëîâî - 4 áàéòà.



Ðåãèñòðû äî âûïîëíåíèÿ MOV EBX,[EDI]



					EBX = 5678h

					EDI = 0100h

				   DS:0100h = 1221h   	(edi)

Ïîñëå...

					EBX = 1221h    	<——— 1221h

					EDI = 0100h

				   DS:0100h = 1221h



Ïðèìåð â êîììåíòàðèÿõ íå íóæäàåòñÿ. ×èñëî, àäðåñ êîòîðîãî DS:EDI áûëî óñïåøíî çàíåñåíî â ðåãèñòð EBX. Ðåãèñòð DS èñïîëüçîâàëñÿ ïî óìîë÷àíèþ.





3.4  ÏÐßÌÀß ÀÄÐÅÑÀÖÈß.



	Ïðè ýòîì ñïîñîáå àäðåñàöèè ñìåùåíèå â ñåãìåíòå äî îïåðàíäà çàäàíî â âèäå ñëîâà èëè äâîéíîãî ñëîâà â êîäå êîìàíäû.  Äëÿ  ïðèìåðà âîçüìåì îïåðàöèþ MOV EAX,[1994h], ïåðåñûëàþùóþ äâîéíîå ñëîâî ïî àäðåñó DS:1994 â ðåãèñòð EAX.



Ðåãèñòðû äî âûïîëíåíèÿ MOV EAX,[1994h]



					EAX = 0000h

				    DS:1994h = 5000h

Ïîñëå...

					EAX = 5000h    	<—— 5000h

				    DS:1994h = 5000h    



Èç ïðèìåðà âèäíî, ÷òî ÷èñëî, ïðÿìî àäðåñîâàííîå êàê ds:[1994h] áûëî ñêîïèðîâàíî â çàäàííûé ðåãèñòð.





3.5  ÁÀÇÎÂÀß ÀÄÐÅÑÀÖÈß.



	Îòíîñèòåëüíûé àäðåñ îïåðàíäà ôîðìèðóåòñÿ ïðè ñëîæåíèè ñîäåðæèìîãî áàçîâîãî ðåãèñòðà ñ íåïîñðåäñòâåííûì ñìåùåíèåì. Ñìåùåíèå ìîæåò áûòü ïðåäñòàâëåíî ñëîâîì èëè äâîéíûì ñëîâîì. Ðàññìîòðèì èíñòðóêöèþ ADD AX,[BP+10h], êîòîðàÿ ê ñîäåðæèìîìó ðåãèñòðà AX ïðèáàâëÿåò ÷èñëî, àäðåñ êîòîðîãî DS:[BP+10h]...



Ðåãèñòðû äî âûïîëíåíèÿ ADD AX,[BP+10h]



					AX  = 0067h

					BP  = 0100h

				  DS:0100h = 0000h   		(bp)

				  DS:0101h = 0001h

					·  ·  ·  ·  ·  ·

				  DS:0109h = 0009h

				  DS:0110h = 0010h    	(bp+10h)

Ïîñëå...

					AX  = 0077h   	<——  (67h+10h = 77h)

					BP  = 0100h 

				  DS:0100h = 0000h

				  DS:0101h = 0001h

					·  ·  ·  ·  ·  ·

				  DS:0109h = 0009h

				  DS:0110h = 0010h



Êàê âèäíî èç ïðèìåðà, ê ñîäåðæèìîìó BP áûëî äîáàâëåíî 10h è ïîëó÷èëîñü ñìåùåíèå 110h, ïî êîòîðîìó è áûëî âçÿòî ÷èñëî, ïðèáàâëåííîå ê AX.



3.6  ÈÍÄÅÊÑÍÀß ÀÄÐÅÑÀÖÈß.



	Ïðèìåðíî òîæå ñàìîå, ÷òî è áàçîâàÿ àäðåñàöèÿ, îäíàêî çäåñü è èñïîëüçóþòñÿ èíäåêñíûå ðåãèñòðû ( SI,DI ) è ñìåùåíèå çàäàííîå áàéòîì èëè ñëîâîì. Ïðè ôîðìèðîâàíèè 32-ðàçðÿäíûõ àäðåñîâ, â êà÷åñòâå áàçîâîãî èëè èíäåêñíîãî ìîæåò èñïîëüçîâàòüñÿ ëþáîé èç ðåãèñòðîâ EAX, ECX, EDX, EBX, EBP, ESI, EDI.. Äëÿ ïðèìåðà âîçüìåì èíñòðóêöèþ MOV WORD PTR ES:[DI+2],AX, êîòîðàÿ ïî àäðåñó ES:[DI+2] çàøëåò ñëîâî èç AX.



Ðåãèñòðû äî âûïîëíåíèÿ MOV WORD PTR ES:[DI+2],AX



					AX  = 0099h

					DI  = 000Dh

				 ES:000Dh = 0000h   		(di)

				 ES:000Fh = 0000h   		(di+2)

Ïîñëå...

					AX  = 0099h

					DI  = 000Dh

				 ES:000Dh = 0000h

				 ES:000Fh = 0099h  		<—— 99h



Àäðåñ ÿ÷åéêè ES:000Fh áûë ïîñ÷èòàí êàê ñîäåðæèìîå DI ïëþñ 2 = F. ×èñëî 99h èç ðåãèñòðà AX óñïåøíî ñêîïèðîâàíî â ýòó ÿ÷åéêó ïàìÿòè.





3.7  ÁÀÇÎÂÎ-ÈÍÄÅÊÑÍÀß ÀÄÐÅÑÀÖÈß.



	Ïðè èñïîëüçîâàíèè ýòîãî ñïîñîáà îòíîñèòåëüíûé àäðåñ îáðàçóåòñÿ ïóòåì ñëîæåíèÿ ñîäåðæèìûõ áàçîâîãî ( BX,BP ) è èíäåêñíîãî ( SI,DI ) ðåãèñòðîâ. Íàïðèìåð äëÿ îïåðàöèè MOV AX,[BP+SI] ìû ïîëó÷èì:



Ðåãèñòðû äî âûïîëíåíèÿ MOV AX,[BP+SI]



					AX  = 00AAh

					BP  = 0100h

					SI  = 0050h

        				  DS:0100h = 0001h   		(bp)

 		                     DS:0150h = 0002h   		(bp+si)

Ïîñëå...

					AX  = 0002h  		<—— 02h

					BP  = 0100h

					SI  = 0050h

				 DS:0100h = 0001h

				 DS:0150h = 0002h



Àäðåñ ÿ÷åéêè DS:0150h ïîëó÷åí ïóòåì ñëîæåíèÿ çíà÷åíèé ðåãèñòðîâ BP è SI, ïîñëå ÷åãî ÷èñëî èç ýòîé ÿ÷åéêè ïàìÿòè áûë çàãðóæåí â ðåãèñòð AX.





3.8  ÁÀÇÎÂÎ-ÈÍÄÅÊÑÍÀß ÀÄÐÅÑÀÖÈß ÑÎ ÑÌÅÙÅÍÈÅÌ.



	Ýòî âàðèàíò áàçîâî èíäåêñíîé àäðåñàöèè, ïðè êîòîðîì ê îòíîñèòåëüíîìó àäðåñó ïðèáàâëÿåòñÿ 8- èëè 16-ðàçðÿäíîå ñìåùåíèå. Äîïîëíèòåëüíûå ñïîñîáû àäðåñàöèè ðåàëèçóþòñÿ ïðè èñïîëüçîâàíèè 32-ðàçðÿäíûõ àäðåñîâ, êîãäà çàäàíî ñïåöèàëüíîå ïîëå (SIB) â êîäå êîìàíäû. Òîãäà âîçìîæíû êîíñòðóêöèè òèïà [EAX+EBX], [EAX+EAX], [ECX+EDX], Â êà÷åñòâå èíäåêñíîãî ðåãèñòðà ìîæíî èñïîëüçîâàòü ëþáîé ðåãèñòð êðîìå ESP. Ñîäåðæèìîå ýòîãî ðåãèñòðà óìíîæàåòñÿ íà ìàñøòàáíûé êîýôôèöèåíò F ò.å. ñäâèãàåòñÿ âëåâî íà ÷èñëî ðàçðÿäîâ 0,1,3 èëè 4. Çíà÷åíèå F çàâèñèò îò ðàçìåðà äàííûõ. Äëÿ ïðèìåðà ðàññìîòðèì èíñòðóêöèþ MOV EAX,[EAX+EAX].



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



					EAX  = 0010h

					DS:0010h = 000Ah   		(eax)

					DS:0020h = 000Bh   		(eax+eax)

Ïîñëå...

					EAX  = 000Bh  		<—— 0Bh

				     DS:0010h = 000Ah

				     DS:0020h = 000Bh



Áàçîâûé àäðåñ áåðåòñÿ èç EAX, ñêëàäûâàåòñÿ ñî ñìåùåíèåì èç EAX è äâîéíîå ñëîâî ïî àäðåñó DS:0020h çàíîñèòñÿ â EAX.





3.9  ÈÍÄÅÊÑÍÀß ÀÄÐÅÑÀÖÈß Ñ ÌÀÑØÒÀÁÈÐÎÂÀÍÈÅÌ

	         

	Ïðè èñïîëüçîâàíèè ýòîãî ñïîñîáà àäðåñàöèè îòíîñèòåëüíûé àäðåñ ôîðìèðóåòñÿ ïðè ñëîæåíèè ìàñøòàáèðîâàííîãî èíäåêñà ( ñîäåðæèìîãî èíäåêñíîãî ðåãèñòðà ) è 32-ðàçðÿäíîãî ñìåùåíèÿ. Ïîÿñíèì èäåþ ìàñøòàáèðîâàíèÿ èíäåêñà: ñîäåðæèìîå èíäåêñíîãî ðåãèñòðà óìíîæàåòñÿ íà ìàñøòàáíûé êîýôôèöèåíò, ÷òîáû ïðàâèëüíî àäðåñîâàòü äàííûå ðàçìåðîì áîëåå îäíîãî áàéòà. Äëÿ ïðèìåðà ðàññìîòðèì ôðàãìåíò ïðîãðàììû, îñóùåñòâëÿþùåé ðàáîòó ñ öåïî÷êîé äâîéíûõ-ñëîâ.



			Start:	jmp	Begin

			

			Var	dd 	5 dup (0)

			

			Begin:

				mov	edi,2			 		; 1

				mov	[Var+edi*4],12345678h	 	; 2

			

Ïåðåìåííàÿ Var ïðåäñòàâëÿåò ñîáîé ìàññèâ èç 5 32-ðàçðÿäíûõ ñëîâ. Â ñòðîêå 1 ìû çàíîñèì â èíäåêñíûé ðåãèñòð 2, èìåÿ ââèäó îáðàáîòêó âòîðîãî ýëåìåíòà ìàññèâà, à äàëåå â ñòðîêå 2 ìû çàíîñèì âî âòîðîé  ýëåìåíò ÷èñëî 1234567h. Íà ïàñêàëå ýòî âûãëÿäåëî-áû êàê Y[2]:=$1234567    Åñëè áû ìû íå ïðîèçâåëè ìàñøòàáèðîâàíèå, òî ÷èñëî 1234567h áûëî-áû çàíåñåíî ïî àäðåñó [Y+2], à ïðè ìàñøòàáèðîâàíèè ðåàëüíûé àäðåñ áûë âû÷èñëåí êàê [Y+2*4] ò.å. [Y+8] è ÷èñëî ïîïàëî "ïî àäðåñó". Èñïîëüçîâàíèå ìàñøòàáèðîâàíèÿ èìååò îãðîìíóþ ðîëü ïðè ðàáîòå ñ ìàññèâàìè ñëîâ è äâîéíûõ ñëîâ, èçáàâëÿÿ ïðîãðàììèñòà îò íåîáõîäèìîñòè äîïîëíèòåëüíîãî èíäåêñèðîâàíèÿ ïåðåìåííûõ è ðàáîòû ñ óäâîåííûìè è ó÷åòâåðåííûìè èíäåêñàìè ýëåìåíòîâ. Âñå ýòî çà íåãî âûïîëíÿåò ïðîöåññîð, ñîêðàùàÿ è ðàçìåð êîäà è ñêîðîñòü åãî âûïîëíåíèÿ.



3.10  ÁÀÇÎÂÎ-ÈÍÄÅÊÑÍÀß ÀÄÐÅÑÀÖÈß Ñ ÌÀÑØÒÀÁÈÐÎÂÀÍÈÅÌ

 

	Îòíîñèòåëüíûé àäðåñ ôîðìèðóåòñÿ ñëîæåíèåì ìàñøòàáèðîâàííîãî èíäåêñà è áàçû, â êà÷åñòâå êîòîðîé èñïîëüçóåòñÿ ñîäåðæèìîå îäíîãî èç ðåãèñòðîâ EAX,EBX,ECX,EDX,ESI èëè EDI. Ïðèâåäåì ïðèìåð òàêîé àäðåñàöèè äàííûõ: Èíñòðóêöèÿ MOV [EAX+EDI*4],666h ïîìåñòèò ÷èñëî 666h ïî àäðåñó EAX ïëþñ ó÷åòâåðåííîå ñîäåðæèìîå EDI.

    

Ðåãèñòðû äî âûïîëíåíèÿ  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???? , îïèñàííàÿ âûøå ).





4. ÇÀÊËÞ×ÅÍÈÅ. ÑÐÀÂÍÈÒÅËÜÍÛÉ ÀÍÀËÈÇ ÑÈÑÒÅÌ ÀÄÐÅÑÀÖÈÈ     ÈÑÏÎËÜÇÓÅÌÛÕ Â CM1700 È Â ÏÝÂÌ ÍÀ ÁÀÇÅ ÏÐÎÖÅÑÑÎÐÀ 80386.

    

	Â äâóõ ïðåäûäóùèõ ðàçäåëàõ ìû ïðèâåëè ïðèìåðû è îïèñàëè îñíîâíûå ñïîñîáû àäðåñàöèè, èñïîëüçóåìûå â ìàøèíàõ äâóõ ðàçíûõ ñåìåéñòâ - ìèíè- è ìèêðîÝÂÌ. Êîíå÷íî ýòî íå âñå, ÷òî ìîæíî ñêàçàòü î ñèñòåìàõ àäðåñàöèè äëÿ êîìïüþòåðîâ ýòèõ ñåìåéñòâ, òåì íå ìåíåå îñíîâíûå ñïîñîáû çàäàíèÿ àäðåñîâ è àäðåñàöèè îïåðàíäîâ áûëè ðàññìîòðåíû è ìîæíî ïîïûòàòüñÿ ïðîàíàëèçèðîâàòü, ñðàâíèòü è ïðèâåñòè ïðèìåðû èñïîëüçîâàíèÿ òåõ ñïîñîáîâ àäðåñàöèè, êîòîðûå áûëè îïèñàíû.

	Äëÿ íà÷àëà, ðàññìîòðèì ñàìûå ïðîñòûå ñïîñîáû àäðåñàöèè, òàêèå êàê ðåãèñòðîâàÿ, ïðÿìàÿ, íåïîñðåäñòâåííàÿ è êîðîòêîãî ëèòåðàëà. Ïðî ðåãèñòðîâóþ àäðåñàöèþ òðóäíî íàïèñàòü áîëüøå, ÷åì óæå áûëî íàïèñàíî. Åñòåñòâåííî, ÷òî ýòîò ñïîñîá àäðåñàöèè ïîääåðæèâàåòñÿ è íà ÑÌ1700 è 80386 ïðîöåññîðîì, êàê âïðî÷åì âîîáùå âñåìè ïðîöåññîðàìè ñåìåéñòâà 80õ86 è ìíîãèìè äðóãèìè ïðîöåññîðàìè, êîòîðûå èìåþò ðåãèñòðîâóþ ïàìÿòü. Íåñìîòðÿ íà ïðîñòîòó ýòîãî ñïîñîáà àäðåñàöèè, îí äîñòàòî÷íî ÷àñòî èñïîëüçóåòñÿ äëÿ ìàíèïóëÿöèè ðåãèñòðàìè, èõ î÷èñòêè, ìîäèôèêàöèè èõ ñîäåðæèìîãî. Ðåãèñòðîâàÿ ïàìÿòü îòëè÷àåòñÿ î÷åíü áîëüøîé ñêîðîñòüþ, è ïîýòîìó áîëüøèíñòâî âû÷èñëåíèé, îñîáåííî íåñëîæíûõ ïðîãðàììèñòû ïûòàþòñÿ äåëàòü â ýòèõ ðåãèñòðàõ. Â íèõ ïîìåùàþò íà÷àëüíûå çíà÷åíèÿ, ïðîèçâîäÿò âû÷èñëåíèÿ, ìîäèôèêàöèþ è êàê-òî èñïîëüçóþò ïîëó÷åííûå ðåçóëüòàòû. Äëÿ âñåõ ýòèõ äåéñòâèé åñòåñòâåííûì ÿâëÿåòñÿ ïðèìåíåíèå èìåííî ðåãèñòðîâîãî ñïîñîáà àäðåñàöèè. Áîëüøèì ïîäñïîðüåì ðåãèñòðîâîìó ñïîñîáó àäðåñàöèè ÿâëÿåòñÿ ðåæèì íåïîñðåäñòâåííîé àäðåñàöèè. Êîíå÷íî â îñíîâíîì îí èñïîëüçóåòñÿ äëÿ çàãðóçêè â ðåãèñòðû íà÷àëüíûõ çíà÷åíèé, çàðàíåå èçâåñòíûõ àäðåñîâ, ñðàâíåíèÿ ñ êîíñòàíòîé è òàê äàëåå. Íî åñëè êîïíóòü ÷óòü ãëóáæå, òî ýòîò ñïîñîá àäðåñàöèè äàåò åùå ìíîæåñòâî óäîáñòâ. Íàïðèìåð äëÿ ïåðåõîäà ïî çàðàíåå èçâåñòíîìó àäðåñó ïðåäñòàâëåííîìó â âèäå ñåãìåíòà ñî ñìåùåíèåì ìîæíî èñïîëüçîâàòü òàêîé êîä:

   				

push	0f000h

push	0ffffh

ret

    						    

Êîìàíäà RET áåðåò èç ñòåêà çíà÷åíèÿ ñåãìåíòà è ñìåùåíèÿ, à ïîòîì äåëàåò ìåæñåãìåíòíûé ïåðåõîä. Ïðåäñòàâèì ñåáå, âûïîëíåíèå ïîäîáíîãî êîäà áåç âîçìîæíîñòè ïîìåùàòü íà âåðøèíó ñòåêà íåïîñðåäñòâåííîå çíà÷åíèå:



mov	ax,0f000h

push	ax

mov	ax,0ffffh

push	ax

ret



Êàê âèäèì, âûãëÿäèò ýòî íå ñëèøêîì êîìïàêòíî, â ñðàâíåíèè ñ ïðåäûäóùèì ïðèìåðîì, è ìîæåòå áûòü óâåðåíû, ÷òî âûïîëíÿåòñÿ ýòî íà íåñêîëüêî òàêòîâ äîëüøå. Ýòî ñàìûé ïðîñòîé ïðèìåð ïðèìåíåíèÿ íåïîñðåäñòâåííîé àäðåñàöèè, íà ñàìîì äåëå åå ïðèìåíåíèå ãîðàçäî øèðå, îñîáåííî åñëè èíòåíñèâíî èñïîëüçóþòñÿ ðàáîòà ñ îïåðàöèîííîé ñèñòåìîé, ãäå âñå çíà÷åíèÿ, àäðåñà è ïàðàìåòðû ñòàíäàðòèçèðîâàíû è â îñíîâíîì çàðàíåå èçâåñòíû. Íà ÑÌ 1700 ðåæèì íåïîñðåäñòâåííîé àäðåñàöèè ðåàëèçóåòñÿ ïðîãðàììíî, ñ èñïîëüçîâàíèåì ñ÷åò÷èêà èíñòðóêöèé, à â ìàøèíàõ íà áàçå i386 îí ðåàëèçóåòñÿ àïïàðàòíî. Òðóäíî ñêàçàòü ÷òî ëó÷øå, îäíàêî â ÑÌ 1700 ïðåäóñìîòðåí åùå è ðåæèì êîðîòêîãî ëèòåðàëà, ïðåèìóùåñòâà êîòîðîãî ïåðåä îáû÷íîé íåïîñðåäñòâåííîé àäðåñàöèåé äàííûõ ìåíüøèõ ÷åì 64 áåñïîðíû. Â 80386 ïðîöåññîðå íè÷åãî ïîäîáíîãî íå ïðåäóñìîòðåíî, õîòÿ ìîæåò áûòü ýòî ëó÷øå - íå óâåëè÷èâàåò ñèñòåìó êîìàíä è ñëåäîâàòåëüíî óïðîùàåò ñòðóêòóðó ïðîöåññîðà.



	Ïðÿìàÿ àäðåñàöèÿ ýòî òîæå äîñòàòî÷íî ïðîñòîé, íî î÷åíü ÷àñòî èñïîëüçóåìûé èíñòðóìåíò. ×àùå âñåãî èñïîëüçóåòñÿ äëÿ îáðàùåíèÿ ê îäèíî÷íûì ïåðåìåííûì, îáëàñòÿì äàííûõ îïåðàöèîííûõ ñèñòåì è ò.ä. Ðåàëèçîâàí è â i386 ïðîöåññîðå è íà ÑÌ 1700, îïÿòü æå ÷åðåç ñ÷åò÷èê èíñòðóêöèé.

    	

	Áîëåå ñëîæíûìè, îäíàêî è áîëåå ïðîäóêòèâíûìè ÿâëÿþòñÿ êîñâåííûå ñïîñîáû àäðåñàöèè. Êîñâåííî ðåãèñòðîâûé, êîñâåííûé ñî ñìåùåíèåì, èíäåêñíûå ðåæèìû àäðåñàöèè ðåàëèçîâàíû â ïîëíîé ìåðå è íà ÑÌ 1700 è â ÏÝÂÌ. Îíè äàþò íàèáîëüøèé ýôôåêò ïðè îáðàáîòêå ìàññèâîâ, òàáëèö, ðàçëè÷íîãî ðîäà ñïèñêîâ. Äëÿ ñðàâíåíèÿ ïðèâåäåì òàáëèöó àíàëîãè÷íûõ ïî ñìûñëó èíñòðóêöèé ÑÌ 1700 è ïðîöåññîðà 80386.

    

    	1. Êîñâåííî ðåãèñòðîâûé.



	   ÑÌ 1700	MOVB 	R1,(R2)

	   i386    	MOV		[EBX],EAX

    

    	2. Ñìåùåíèÿ.



	   ÑÌ 1700	MOVB 	W^32769(R4),R1

	   i386    	MOV		EAX,[EDX+32769]

    

    	3. Êîñâåííûé ñìåùåíèÿ.



	   ÑÌ 1700	MOVW 	@B^8(R5),(R2)

	   i386    	MOV		ESI,[EDI+8]

	   		MOV		AX, word ptr [ESI]

	   		MOV		word ptr [EDX],AX

	   		

	4. Êîñâåííî ðåãèñòðîâûé èíäåêñíûé.



	   ÑÌ 1700	MOVB	(R1)[R2],R3

	   i386    	MOV		CX,[BP+DI]

	

	5. Ñìåùåíèÿ èíäåêñíûé.

	

	   ÑÌ 1700	MOVB	B^5(R1)[R2],R3

	   i386    	MOV		EAX,[EBX+ECX+5]



Â òàáëèöå ïðèâåäåíû ëèøü íåêîòîðûå ðåæèìû àäðåñàöèè, è ñåé÷àñ ìû ïîÿñíèì ïî÷åìó. Åñëè îáðàòèòü âíèìàíèå íà ïóíêò 3, òî âèäíî, ÷òî êîìàíäà, àíàëîãè÷íàÿ êîñâåííîìó ðåæèìó ñìåùåíèÿ çàìåíåíà íà 3 èíñòðóêöèè èç íàáîðà êîìàíä ïðîöåññîðà 80386. Äåéñòâèòåëüíî 386-îé ïðîöåññîð íå ïîíèìàåò êîíñòðóêöèé òèïà "àäðåñ àäðåñà", ïîýòîìó ïîäîáíûå ìàíèïóëÿöèè ïðèõîäèòñÿ äåëàòü ñ ïîìîùüþ äîïîëíèòåëüíîãî ðåãèñòðà. Áîëåå òîãî ñèñòåìà àäðåñàöèè ïðîöåññîðà 80386 íå äîïóñêàåò èñïîëüçîâàíèÿ êîìàíä ñ îáðàùåíèåì ïàìÿòü-ïàìÿòü. Ýòî îïÿòü çàñòàâëÿåò èñïîëüçîâàòü äîïîëíèòåëüíûå ðåãèñòðû. Îäíàêî â ñèñòåìå êîìàíä i386 ïðåäóñìîòðåíû êîìàíäû îáðàáîòêè ñòðîê. Ýòè êîìàíäû âî ìíîãèõ ñëó÷àÿõ ïîçâîëÿþò îáîéòèñü áåç ïîäîáíûõ ïðîáëåì. Âîò ýòè êîìàíäû:

    

MOVS{B,W,D}	- ïåðåñëàòü ñòðîêó

STOS{B,W,D}	- çàíåñòè â ïàìÿòü èç {AL,AX,EAX}

LODS{B,W,D}	- çàíåñòè èç ïàìÿòè â {AL,AX,EAX}

CMPS{B,W,D}	- ñðàâíèòü ñòðîêè

SCAS{B,W,D}	- ñêàíèðîâàòü ñòðîêó

    		

Âñå ýòè êîìàíäû ìîæíî èñïîëüçîâàòü ñ ïðåôèêñîì ïîâòîðåíèÿ REP. Ó ýòîãî ïðåôèêñà åñòü è óñëîâíûå ìîäèôèêàöèè REPE, REPZ, REPNE REPNZ è äðóãèå, ïðåêðàùàþùèå ïîâòîðåíèå ïî êàêîìó-òî ïðèçíàêó äî èñ÷åðïàíèÿ ñ÷åò÷èêà. Ñ ïîìîùüþ ïåðâûõ òðåõ êîìàíä è ðåàëèçóåòñÿ îñíîâíàÿ ðàáîòà ñ ïàìÿòüþ. Ýòè èíñòðóêöèè ìîæíî îõàðàêòåðèçîâàòü, êàê èñïîëüçóþùèå àâòîóâåëè÷åíèå èëè àâòîóìåíüøåíèå, òàê êàê îíè ïîñëå âûïîëíåíèÿ ìîäèôèöèðóþò òåêóùåå ñìåùåíèå, êîòîðîå õðàíèòñÿ â ðåãèñòðàõ ESI(SI),EDI(DI). Â òîæå âðåìÿ MOVS ðåàëèçóåò àäðåñàöèþ "ïàìÿòü-ïàìÿòü". Ñ ïåðâîãî âçãëÿäà ýòîãî íåäîñòàòî÷íî äëÿ òîãî, ÷òîáû ýôôåêòèâíî èñïîëüçîâàòü íàïðèìåð ïîäîáèå êîñâåííîãî ñ àâòîóâåëè÷åíèåì èíäåêñíîãî ðåæèìà. Îäíàêî ýòè ñëîæíûå èíñòðóêöèè ëåãêî çàìåíÿþòñÿ íàáîðîì èíñòðóêöèé ïðîöåññîðà 80386. Íàïðèìåð ïåðåïèøåì êîìàíäó MOVL @(R1)+[R3],(R2)+ äëÿ ìàøèí íà áàçå i80386.

    			

					CLD	

					MOV	ESI,[EAX+EBX]

					MOVSD



Åñëè ïîëîæèòü, ÷òî EDI = R2, òî ðåçóëüòàò áóäåò òåì æå. Äàëåå ESI è EDI áóäóò óâåëè÷åíû íà 4 è äëÿ äàëüíåéøåé ïåðåñûëêè ìîæíî áûëî áû íàïèñàòü

    

    					MOV	CX,1000

    					REP	MOVSB

    			

×òî ïðèâåëî áû ê ïåðåñûëêå 4000 áàéò èç DS:[ESI] â ES:[EDI]. Êîíå÷íî íóæíà íåêîòîðàÿ ïðåäâàðèòåëüíàÿ ïîäãîòîâêà, ê ïðèìåðó çàäàíèå íà÷àëüíûõ àäðåñîâ, óñòàíîâêà ñ÷åò÷èêà â ECX, çàäàíèå íàïðàâëåíèÿ (CLD/STD - ïðèáàâëÿòü èëè îòíèìàòü â ESI è(èëè) EDI), îäíàêî ïðèìåðíî òàêèå æå ïðèãîòîâëåíèÿ íåîáõîäèìû è â ïåðâîì ñëó÷àå.

    

Òàêèì îáðàçîì, ðàññìàòðèâàÿ è ñðàâíèâàÿ âîçìîæíûå ñïîñîáû àäðåñàöèè íà ÑÌ ÝÂÌ è ïåðñîíàëüíûõ ÝÂÌ íà áàçå ïðîöåññîðà i386 ìîæíî ñôîðìèðîâàòü âïîëíå îïðåäåëåííîå ïðåäñòàâëåíèå î âîçìîæíîñòÿõ ýòèõ ìàøèí. Íåñîìíåííî ÑÌ 1700 ÿâëÿåòñÿ áîëåå ìîùíîé ìàøèíîé, ðàññ÷èòàííîé íà ðåøåíèå äîñòàòî÷íî ñëîæíûõ ýêîíîìè÷åñêèõ è äðóãèõ çàäà÷. Èìåÿ áîëåå ñîâåðøåííûé íàáîð âîçìîæíûõ ñïîñîáîâ àäðåñàöèè ïîçâîëÿåò êà÷åñòâåííåå è êîìïàêòíåå çàïèñûâàòü çàäà÷è îðèåíòèðîâàííûå íà ðàáîòó ñ áîëüøèì êîëè÷åñòâîì ðàçëè÷íîé íôîðìàöèè, ïî ñðàâíåíèþ ñ âîçìîæíîé ðåàëèçàöèåé ïîäîáíûõ çàäà÷ íà ÏÝÂÌ.Ïðÿìàÿ èëè êîñâåííàÿ àäðåñàöèÿ "ïàìÿòü-ïàìÿòü" íåñîìíåííî èìååò îãðîìíûå ïðåèìóùåñòâà, è ðåçêî ñíèæàåò ðàçìåð êîäà è êîëè÷åñòâî äîïîëíèòåëüíûõ ðåñóðñîâ ( ðåãèñòðû, ëèøíèå òàêòû è ò.ä.), èñïîëüçóåìûõ ïðè ïîäîáíûõ ïåðåñûëêàõ. Îäíàêî, íåñìîòðÿ íà ýòî, ïåðåïðîãðàììèðîâàíèå ïîäîáíûõ çàäà÷ äëÿ ïðîöåññîðà 80386 âïîëíå ðåàëüíî è äàæå èìååò ñìûñë. Áëàãîäàðÿ ðàçâèòèþ ýëåìåíòíîé áàçû, íîâûì àðõèòåêòóðíûì ðåøåíèÿì, ïîâûøåíèþ ïðîèçâîäèòåëüíîñòè âíóòðåííèõ è âíåøíèõ çàïîìèíàþùèõ óñòðîéñòâ îáùàÿ ïðîèçâîäèòåëüíîñòü ñîâðåìåííûõ ÏÝÂÌ äîñòèãàåò, è ÷àñòî îáõîäèò ïðîèçâîäèòåëüíîñòü òàêèõ êëàññè÷åñêèõ âû÷èñëèòåëüíûõ ñèñòåì, êàê ÂÑ íà îñíîâå ÑÌ è ÅÑ ÝÂÌ. Ïîýòîìó, íåñìîòðÿ íà íåêîòîðóþ íåïðèñïîñîáëåííîñü ìàøèí ýòîãî êëàññà äëÿ ðåøåíèÿ ñëîæíûõ çàäà÷, ïîñëåäíåå âðåìÿ î÷åíü áîëüøîé ïðîöåíò ïîäîáíûõ âû÷èñëåíèé   ïðèõîäèòñÿ íà ÏÝÂÌ. È êîíå÷íî íå ïîñëåäíþþ ðîëü çäåñü èãðàåò èõ îòíîñèòåëüíî íåáîëüøàÿ ñòîèìîñòü, ãëîáàëüíîå ðàñïðîñòðàíåíèå è îãðîìíîå êîëè÷åñòâî ïðèêëàäíûõ ïðîãðàìì, à ñëåäîâàòåëüíî è ïðîãðàììèñòîâ, ñïîñîáíûõ ïèñàòü ãðàìîòíîå ÏÎ äëÿ ðåøåíèÿ ýêîíîìè÷åñêèõ çàäà÷.

    



Êîçëîâ À.Â.





















ÑÏÈÑÎÊ ÈÑÏÎËÜÇÎÂÀÍÍÎÉ ËÈÒÅÐÀÒÓÐÛ.



Ìàëûå ÝÂÌ âûñîêîé ïðîèçâîäèòåëüíîñòè. Àðõèòåêòóðà è ïðîãðàììèðîâàíèå. Ìîñêâà "Ðàäèî è ñâÿçü" 1990.



Ä.Áðàìì, Ï.Áðàìì. Ïðîöåññîð 80386 è åãî ïðîãðàììèðîâàíèå. "Ìèð" 1990.



Øàãóðèí, Â.Á. Áðîäèí, Ã.Ï. Ìîçãîâîé. Îïèñàíèå è ñèñòåìà êîìàíä. ÌÏ "Ìàëèï" 1992.



Âû÷èñëèòåëüíûå ìàøèíû, ñèñòåìû è ñåòè. Ìîñêâà "Ôèíàíñû è ñòàòèñòèêà" 1991.



ALI 386DX MINI ISA Syståm Board user's manual. Printed in the Taiwan. Edition - August 1993.







ÎÃËÀÂËÅÍÈÅ

    

    1. Ââåäåíèå.

        Ñðàâíåíèå ìèíè- è ìèêðîÝÂÌ.



    2. Ñèñòåìû àäðåñàöèè èñïîëüçóåìûå â ìèíè-ÝÂÌ.

       1. Ðåãèñòðîâûé ðåæèì àäðåñàöèè.

       2. Êîñâåííî ðåãèñòðîâûé ðåæèì àäðåñàöèè.

       3. Ðåæèì ñ àâòîóâåëè÷åíèåì.

       4. Ðåæèì ñ àâòîóìåíüøåíèåì.

       5. Êîñâåííûé ñ àâòîóâåëè÷åíèåì.

       6. Ðåæèì ñìåùåíèÿ.

       7. Êîñâåííûé ñìåùåíèÿ.

       8. Ðåæèì êîðîòêîãî ëèòåðàëà.

       9. Èíäåêñíûé ðåæèì.

      10. Ðåæèìû àäðåñàöèè ñ èñïîëüçîâàíèåì ñ÷åò÷èêà èíñòðóêöèé.

      11. Àäðåñàöèÿ ïåðåõîäîâ.

       

    3. Ñèñòåìû àäðåñàöèè èñïîëüçóåìûå â ÏÝÂÌ.

       1. Íåïîñðåäñòâåííàÿ àäðåñàöèÿ.

       2. Ðåãèñòðîâàÿ àäðåñàöèÿ.

       3. Êîñâåííî-ðåãèñòðîâàÿ àäðåñàöèÿ.

       4. Ïðÿìàÿ àäðåñàöèÿ.

       5. Áàçîâàÿ àäðåñàöèÿ.

       6. Èíäåêñíàÿ àäðåñàöèÿ.

       7. Áàçîâî-èíäåêñíàÿ àäðåñàöèÿ.

       8. Áàçîâî-èíäåêñíàÿ àäðåñàöèÿ ñî ñìåùåíèåì.

       9. Èíäåêñíàÿ àäðåñàöèÿ ñ ìàñøòàáèðîâàíèåì.

      10. Áàçîâî-èíäåêñíàÿ àäðåñàöèÿ ñî ñìåùåíèåì.

      11. Áàçîâî-èíäåêñíàÿ àäðåñàöèÿ ñî ñìåùåíèåì è ñ ìàñøòàáèðîâàíèåì.

      12. Îòíîñèòåëüíàÿ àäðåñàöèÿ.



    4. Çàêëþ÷åíèå. Ñðàâíèòåëüíûé àíàëèç ñèñòåì àäðåñàöèè èñïîëüçóåìûõ â                	CM1700 è â ÏÝÂÌ íà áàçå ïðîöåññîðà 80386.

    

    5. Ëèòåðàòóðà.

24



25