Jmp – шартсыз ауысу командасы. Команда фоматы: jmp [модификатор] ауысу_адресі
Ауысу_адресі ауысу көрсеткіші орналасатын жады аймағын немесе таңба түріндегі адресті көрсетеді. jmp шартсыз ауысу машиналық командаларының бірнеше кодтары кездеседі. Ауысу_адресі ағымдағы сегмент кодының ішінде немесе басқа сегментте орналасуы мүмкін. Бірінші жағдайдағы өту ішкісегменттік, немесе жақын, екінші жағдай — сегментаралық, немесе алыс жағдайлар деп аталады. Ішкісегменттік ауысу кезінде eіp/іpрегистрлерінің құрамы ғана ауысады.
jmp командасымен қолданылатын үш ішкісегменттік ауысуларды атап кетуге болады: тікелей қысқа; тікелей; жанама.
Модификатор келесі мәндерді қабылдайды:
near ptr — ағымдағы сегемнт кодының ішіндегі таңбаға тікелей ауысу. Тек eіp/іp (use16 немесе use32) регистрі ғана командадағы көрсетілген адрес (таңба) бойынша модификацияланады;
far ptr — басқа сегмент кодынан таңбаға тікелей ауысу. Ауысу адресі 16-биттік селектор және 16/32 биттік ығысудан құралған адрестен (таңбадан) немесе тәуелсіз операндтан тұрады, олар сәйкесінше cs және іp/eіp регистрлеріне жүктемеленеді;
word ptr — ағымдағы сегмент кодынан таңбаға жанама ауысу. Тек eіp/іp модификацияланады. Ығысу өлшемі 16 немесе 32 бит;
dword ptr — басқа сегмент кодынан таңбаға жанама ауысу. cs және eіp/іp регистрлері модификацияланады. Бұл адрестің бірінші сөзі/екілік сөзі ығысуды көрсетеді және іp/eіp жүктемеленеді; екінші/үшінші сөздер cs жүктемеленеді.
CALL – процедураны шақыру. Команда форматы: CALL процедура_аты
RET – процедурадан қайту.
Процедура бұл командалар тізбегі, ол бір рет қана жазыладыда, керектігіне қарай программада кез-келген жерден бірнеше рет қолданылады.
CALL командасы қайту функциясын сақтап қалу және процедураға басқаруды беруді орындайды. Ол CS команда сегментінің адресі, процедура NEAR атрибутымен анықталған болса, қайту адресінің ығысуын стекке орналастырады, және FAR атрибутымен анықталса, онда ығысу адресін стекке орналастырады. NEAR атрибутындағы процедуралар өзі орналасқан сегменттен ғана шақырылады, ал FAR атрибутындағы сегменттер басқа сегменттерден де шақырыла береді.
Қайту адресін сақтағаннан кейін CALL командасы таңбаның сегменттік адресінің ығысуын "процедура_аты" ІP (EІP) команда көрсеткішіне жүктемелейді. Егер процедураның атрибуты FAR болса, онда CALL командасы таңбаның сегменттік адресінің ығысуын "процедура_аты" CS регистріне жүктемелейді.
RET командасы стектен қайту адресін шығарады. Егер процедураның атрибуты NEAR болса, онда RET командасы стектен бір сөзді (екілік сөзді) шығарады және оны ІP (EІP) команда көрсеткішіне жүкткмклейді. Егер процедураның атрибуты FAR болса, онда RET командасы стектен екі (үш) сөзді шығарады: бірінші ІP (EІP) команда көрсеткішіне орналастыру үшін адрестің ығысуын, содан кейін CS регистріне жүктемелеу үшін сегмент адресін шығарады.
Дата добавления: 2015-10-26; просмотров: 1562;