ОПЕРАНДТАРДЫ АДРЕСАЦИЯЛАУ ƏДІСТЕРІ

Операндтар регистрлерде, жадыда жəне командалардың өзінде болуы мүмкін. Операндты табу тəсілі адресация режимдерімен анықталады. Ассемблердің командаларында келесі

адресациялау режимдері қолданылады: регистрлі, тікелей, жанама, төте, ығысумен база бойынша, масштабтаумен жанама, индекстелумен база бойынша, индекстелумен жəне масштабталумен база бойынша.

Регистрліадресация

Операнд кез – келген жалпы міндетті регистрде немесе сегменттік регистрде орналасуы мүмкін:

mov AX,BX

Тікелейадресация

Операнд командада орналасады:

а) mov AX,10;10 — тікелейоперанд

б) mov BX,OFFSET A ; OFFSET A-тікелейоперанд

в) mov AX,K;K – тікелей операнд, егер K EQU немесе = директивалары арқылы анықталған болса, онда K EQU 10 деп беріледі.

Төтеадресация

Операнд жадыда орналасады. Командада операнд адресі көрсетіледі mov AX,A;

Деректер сегментінде келесі оператор түрінде берілген A

DW 10,20,30, A – операнд адресі mov AX,A+2; AX = 20

Жанамаадресация

Операнд жадыда орналасады, ал регистрде операнд адресі орналасады mov AX,[BX];BX-теоперандадресіорналасқан

Квадраттық жақшалар регистрде адрес орналасқандығын білдіреді. 80386 процессорларына дейін операнд адрестерінBX, BP, SІ, DІ регистрлерінде ғана көрсетуге болатын, бірақ ол шектеулер кейіннен ұлғайтылып EAX, EBX, ECX, EDX, ESІ, EDІ, EBP жəне ESP регистрлерін қолдануға да болатын болды.

Ығысуменбазабойыншаадресация

Операнд жадыда орналасады, операнд адресі ығысу мен базалық регистр мəнінің қосындысы арқылы есептелінеді.

mov AX,[BX+2] mov AX,[BP] +2 mov AX, 2[BX]

80386 процессорларына дейін базалық регистр ретінде BX, BP, SІ немес DІ жəне ығусу ретінде байт немесе сөзді ғана алуға болатын. 80386 процессорларынан жəне одан жоғарғыларында EAX, EBX, ECX, EDX, ESІ, EDІ, EBP жəне ESP регистрларын қолдануға болады. Бұл əдістің көмегімен бір өлшемді массив байттарына қатынау жасауға болады.

Масштабтаумен жанама адресация

Бұл əдіс алдыңғы əдіске ұқсас, бірақ бұның көмегімен регистрге элемент нөмірін жіберу арқылы сөз, екілік сөз жəне төрттік сөз массивтерінің элементтерін оқуға болады:

mov AX, [ESІ*2] +2

1, 2, 4 немесе 8 тең көбейткіш массив элементінің өлшеміне сəйкес – байт, сөз, екілік сөз немесе төрттік сөз. Регистрлердің ішінен тек EAX, EBX, ECX, EDX, ESІ, EDІ, EBP, ESP қолдануға болады, SІ, DІ, BP немес SP регистрлері қолдануға келмейді.

Индекстелуменбазабойыншаадресация

Бұл адресациялау əдісінде жадыдағы операндтың ығысуы, екі регистрдегі мəннің қоысндысы арқылы жəне егер ол көрсетілсе, ығысуының қосындысы арқылы есептелінеді. Келесі формадағы жазбаларды қолдануға болады:

mov AX,2[BX][SІ] mov AX, [BX+2][SІ] mov AX,[BX][SІ]+2 mov AX,2[BX][SІ+2] mov AX,[BX+SІ+2]

16- биттік регистрлер үшін келесі регистрлердің құрамын қолдануға болады: BX+SІ, BX+DІ, BP+SІ жəне BP+DІ, ал 32-биттік үшін – барлық сегіз жалпы міндетті регистрлерді қолдануға болады.

Көрсетілген адресациялау əдістеріндегі операндтар деректер сегментінде орналасады, ерекше жағдай ретінде адресациялау кезіндеBP(EBP) регистрлерін қолданған болсақ онда, операнд стек сегментінде орналасады.

Операндтар адресі регистрге: mov BX,OFFSET TAB немесе lea BX,TAB командалары арқылы жүктеледі. 

Индекстелуменжəнемасштабталуменбазабойыншаадресация

Бұл адресациялаудың ең толық схемасы, мұнда барлық жағдайлар қарастырылған, яғни олар бұдан бұрын жеке түрде қарастырылды. Операндтардың толық адресін өрнек түрінде жазуға болады, ол келесі 6 — суретте көрсетілген.

EAX

CS: EBX EAX 1

SS: ECX EBX2 Ығысу

DS:EDX+ ECXEDX* 4 +

ES: EBPEBP8

FS: ESP

 EDI

GS;EDI

 ESI

ESI

Ығысу екілік сөз немесе байт болуы мүмкін. ЕгерESP немесе EBP базалық регистр ретінде қолданылса, онда операнд сегментінің селекторы келісім бойыншаSS регистрінен алынады, ал қалған жағдайдың барлығында – DS регистрі пайдаланылады. 

Негізгі əдебиеттер: 2[12-20];3[10-43]