МИКРОПРОЦЕССОР КОМАНДАЛАР ЖҮЙЕСІНЕ ШОЛУ

і80х86 микропроцессорлар тобының барлығы і8086 командалар жиынымен жұмыс істейді. Командалар жиынын келесі топқа бөлуге болады: деректерді алып-орналастыру командалары, басқару тізгінін ауыстыру командалары, екілік разрядтармен жұмыс командалары, тізбекті командалар, үзу командалары жəне микропроцессорды басқару командалары.

Деректерді алып орналастыру командалары

Алып орналастыру командалар белгілерді, адрестерді, деректерді алып орналастыру үшін қолданылады. MOV – жалпы міндетті алып-орналастыру командасы.

Байтты жəне сөзді алып орналастырады

Команда форматы: MOV <қабылдағыш>,<таратқыш>

Қабылдағыш ретінде регистр немесе жады ұяшығықолданылуы мүмкін, ал таратқыш ретінде — регистр, жадыұяшығыжəне тікелей операнд (тұрақты) қолданылады.

MOV командасында келесі жағдайлардың болуы мүмкін емес:

  1. a) бір жады ұяшығының мəнін екіншіге алып орналастыру;

б) бір жады ұяшығының мəнін сегментті регистрге немесе

керісінше алып орналастыру;

в) бір сегментті регистрдің мəнін екінші сегментті

регистрге алып орналастыру.

Бұл көшіруді аралық регистр арқылы орындауға болады. Аралық регистр ретінде SP-дан басқа жалпы міндеттік регистр қолданылды. MOV командасында рұқсат берілген алып орналастырулар: регистр – регистр, регистр – жады, тұрақты – регистр, тұрақты – жадыға, жады-регистр.

Мысалы: 20MOV AX,DX

MOV AX,FLDA[SІ]

MOV FLDA,AX

MOV AL, 22H MOV FLDA[BP][SІ],33H

PUSH – Сөзді стекке жазу командасы

Команда форматы: PUSH <таратқыш>

Таратқыш ретінде регистр немесе жады ұяшығы қолданылады.

Мысалы: PUSH CX

PUSH TABL

POP – Сөзді стектен оқу командасы

Команда форматы: POP <қабылдағыш> қабылдағыш ретінде регистр немесе жады ұяшығы қолданылады.

Мысалы: POP BX

POP TABL

XCHG -Сөздерді немесе байттарды ауыстыру командасы Команда форматы: XCHG операнд1, операнд 2 операндтар есебінде регистрларды жəне жады ұяшықтарын келесітүрде алуға болады:

регистр-регистр, регистр-жады. Мысалы: ХСHG AX,DX

XCHG BX,A[SІ]

XLAT -Қайта кодтау командасы

Команда форматы: XLAT таратқыш_кестесі

XLAT командасын пайдаланғанда, қайта кодталатын элементтің нөміріAL регистріне енгізіледі, ал таратқыш кестесінің адресі BX регистріне енгізіледі. XLATкомандасы орындалғаннан кейін нəтиже AL регистріне енгізіледі.

Мысалы:

деректер сегментінде ASCІІ DB’0123456789′ кодтар сегментінде

MOV BX, OFFSET ASCІІ

MOV AL, 5

XLAT; AL=35H

Енгізушығару командалары ІN – Портан операндты енгізу.

Команда форматы: ІN аккумулятор, порт

ІN – командасы байтты, сөзді жəне екілік сөзді порттан микропроцессорға алып-орналастырады.

OUT – Портқа операндты шығару.

Команда форматы: OUT порт, аккумулятор

OUT – командасы байтты, сөзді жəне екілік сөзді микропроцессордан портқа алып-орналастырады.

Аккумулятор есебінде AL регистрі (байттарды қайта тасымалдау үшін) жəне AX регистрі ( сөздерді қайта тасымалдау үшін) қолданылады. Порт операторы есебінде 0-ден 255-ке дейінгі порттар нөмірі жəне DXрегистрі қолданылады.Мысалы: ІNAL,60H

OUT 20H,AL

ІNAX,DX

OUT DX,AX

Адресті қайта тасымалдау командалары

LEA — Тиімді адресті жүктемелеу командасы

Команда форматы: LEA қабылдағыш, таратқыш

Команда орындалған кезде қабылдағыш регистрге 16биттік немесе 32-биттік таратқыш операндынан түскен мəн жүктемеленеді. Қабылдағыш операнды ретінде жалпы міндетті регистрлердің бірі алынады. Таратқыш операндтары DW немесе DD директивасымен анықталуы керек.

Мысалы: TAB DW 10h, 20h,30h leaBX, TAB

Берілген команда ассемблердегі offset операторына ұқсас. Оның offset операторынан айырмашылығы, lea командасы операндты индекстеуді орындайды, ол арқылы операндты адрецациялауды ұйымдастыру жеңіл болады. Мысалы:

bx регистріне mas массивінің бесінші элементін

жүктемелеу керек болсын

.data

mas db10 dup (0) .code

mov dі,4

lea bx,mas[dі]

;или

lea bx,mas[4]

;или

lea bx,mas+4

LDS/LES/LFS/LGS/LSSЖадыдан көрсетілген сегменттік регистрлерді жүктемелеу ds/es/fs/gs/ss

Команда форматы: LDS қабылдағыш, таратқыш

Команда көрсетілген регистрге кіші сөзді, ал DS сегменттік регистріне үлкен сөзді жүктемелейді. Мысалы:

MAІN DD 10000100h

LDS BX,MAІN

LDS командасы3 MOV командасын ауыстырады :

MOV BX,OFFSET MAІN

MOV AX,SEG MAІN

MOV DS,AX

LES, LFS, LGS, LSS командалары LDS командасына ұқсас, бірақ адрес сегменті сəкесінше ES, FS, GS, SS регистрлеріне жүктемеленеді. 

Белгілердіауыстыру командалары

LAHF – AH регистріне белгілерді жүктемелеу

LAHF командасы белгілер регистрінің кіші битін AH регистріне жүктемелейді.

SAHF – AH регистріндегі белгілерді орнату

SAHF командасыАН регистріндегі 0, 2, 4, 6, 7 разрядтарды белгілер регистрінің кіші байтына қайта жазады.

PUSHF – Стекке белгілерді орналастыру

PUSHF командасы белгілер регистріндегі мəндерді стекте сақтайды.

POPF – Стектен белгілерді шығару

POPF командасы стектен сөзді оқиды да оны белгілер регистріне орналастырады. 

Басқару тізгінін ауыстыру командалары

Бұл топтағы командалар программаның бір жерінен екінші жеріне көшуге мүмкіндік береді. Бұл командалар жұмыс принципіне байланысты үш топқа бөлінеді:

  1. Басқару тізгінін шартсыз ауыстыру командалары:
  • Шартсыз ауысу командалары;
  • Процедураны шақыру жəне процедурадан қайту;
  • Программалық үзулерді шақыру жəне программалық үзулерден қайту.
    1. Басқару тізгінін шартқа байланысты ауыстыру командалары:
  • Cmp салыстыру командасының нəтижесіне байланысты ауысу;
  • Белгілі бір белгінің күйіне байланысты ауысу; — cx (ecx) регистрінің құрамына байланысты ауысу.
    1. Циклды басқару командалары:
  • cx (ecx) санауышпен ұйымдастырылған командалар
  • cx (ecx) санауышпен ұйымдастырылған жəне қосымша шартқа байланысты циклдан ертерек шығу мүмкіндіктері бар командалар. 

Басқару тізгінін шартсыз ауыстыру командалары.

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 регистріне жүктемелеу үшін сегмент адресін шығарады.

Басқару тізгінін шартқа байланысты ауыстыру командалары

Басқарутізгініншартқа байланыстыауыстыру командаларының жалпы форматы келесі түрде болады:

Jx ауысу_таңбасы, мұндағы х – модификатор, ол бір немесе бірнеше əріптерден тұрады, ол келесі мəндерді қабылдауы мүмкін:

E (equal) – тең,

N (not) – немесе,

G (greater) – үлкен,

L (less) – кіші, A (above) – жоғары,

B (below) – төмен.

E, N модификаторлары кез-келген типтегі операндтар үшін қолданылады, G жəне L – таңбасыз сандар үшін, A жəне B – таңбалы сандар үшін.

Шартқа байланысты ауыстыру командаларын программаның орындалуы кезінде пайда болатын əртүрлі шарттарды тексеру үшін қолданған ыңғайлы. Көп командалар орындалу нəтижелерін flags (eflags) регистрінде қалыптастырады. Төменде шартқа байланысты ауысу командалары жəне олар орындалған кездегі белгілердің өзгерулері, сондай-ақ оларға сəйкес логикалық ауысулар көрсетілген.

Команда Тексерілетін белгілер күйі Ауысу шарты  
JA CF = 0 и ZF = 0 Егер жоғары болса  
JAE CF = 0 Егер жоғары немесе болса тең
JB CF = 1 Егер төмен болса  
JBE CF = 1 или ZF = 1 Егер төмен немесе

болса

тең
JC CF = 1 Егер тасымал болса  
JE ZF = 1 Егер тең болса  
JZ ZF = 1 Егер 0 болса  
JG ZF = 0 и SF = OF Егер үлкен болса  
JGE SF = OF Егер үлкен немесе болса тең
JL SF <> OF Егер кіші болса  
JLE ZF=1 или SF <> OF Егер кіші немесе тең болса
JNA CF = 1 и ZF = 1 Егер жоғары болмаса
JNAE CF = 1 Егер жоғары емес немесе тең болса
JNB CF = 0 Егер төменболмаса
JNBE CF=0 и ZF=0 Егер жоғары емес немесе тең болса
JNC CF = 0 Егер тасымал болмаса
JNE ZF = 0 Егер тең болмаса
JNG ZF = 1 или SF <> OF Егер үлкен болмаса
JNGE SF <> OF Егер үлкен емес немесе тең болса
JNL SF = OF Егер кіші болмаса
JNLE ZF=0 и SF=OF Егер кіші емес немесе тең болса
JNO OF=0 Егер асатолу болмаса
JNP PF = 0 Егер нəтиже биттерінің қосындысы тақ болса(тақтық паритет)
JNS SF = 0 Егер таңба оң болса (таңбалық (үлкен) бит

нəтижесі 0 тең)

JNZ ZF = 0 Егер 0 болмаса
JO OF = 1 Егер асатолу болса
JP PF = 1 Егер нəтиже биттерінің қосындысы жұп болса(жұптық паритет)
JPE PF = 1  JP сияқты, яғни жұптық паритет
JPO PF = 0  JNP сияқты, яғни тақтық паритет
JS SF = 1 Егер таңба теріс болса

(таңбалық (үлкен)бит нəтижесі 1 тең)

JCXZ əсер етпейді Егер регистр CX=0 болса
JECXZ əсер етпейді Егер регистр ECX=0 болса

«Үлкен» жəне «кіші» логикалық шарттары таңбалы бүтін сан мəндері салыстыру үшін, ал «жоғары» жəне «төмен» — логикалық шарттары таңбасыз бүтін сан мəндерін салыстыру үшін қолданылады. Бірінші кездегі і8086 микропроцессорларындағы шартқа байланысты ауысу командалары қысқа ауысуларды ғана жасай алатын, ал қазіргі і386 микропроцессорларына қойылған шарт жоқ, олар ағымдағы сегменттің кез-келген жерінен ауысу жасай береді. Ал сегмент аралық ауысулар жасау үшін шартты ауысу командалары мен jmp шартсыз ауысу командаларын қосып қолданған дұрыс.

Басқаруды шартқа байланысты ауыстыру командаларына кез-келген белгінің күйін өзгерте алатын командалар кедергі келтіре алады, олар əдетте СМР салыстыру командасымен бірге қолданылады. 

Циклды басқару командалары

Циклды басқару командалары цикл ұйымдастыру кезінде шартты ауысу үшін қолданылады. Əрбір команда СХ регистріндегі санауыш мəнін 1 кемітіп отырады, ал одан кейін оның жаңа мəніне байланысты оны тоқтату керек па немесе əрі қарай жалғастыру керек па жайындағы шешім қабылдайды.

LOOP – циклды санауыш біткенге дейін қайталайды.Команда форматы: LOOP таңба

Бұл команда СХ регистр санауыштың мəнін 1-ге азайтады жəне СХ регистрінің мəні 0-ге тең болғанға дейін басқаруды таңбаға береді. LOOP командасы циклды орындауын СХ регистрі 0-ге тең болған кезде ғана аяқтайды. Бірақ көптеген қосымшаларда белгілі бір шартты орындаса болғаны СХ регистрінің мəнін 0-ге тең болғанша күтпей-ақ аяқтау керек болатын жағдайлар кездеседі. Мұндай циклды аяқтау командаларына LOOPE (егер тең болса, циклды қайтала) жəне LOOPNE (егер тең болмаса, циклды қайтала).

LOOPE (LOOPZ) – циклды (нөлге) тең болғанша қайталайды. Команда СХ регистрінің мəнін 1-ге азайтады, одан кейін СХ регистрі 0-ге жəне ZF 1-ге тең болған кезде ауысу жасайды. Сонымен цикл өз жұмысын СХ регистрі 0-ге жəне ZF регистрі 0-ге тең болған кезде, немесе олардың екеуі де 0-ге тең болған кезде аяқтайды. Əдетте LOOPE командасы нөлдік нəтиже іздеу операцияларында қолданылады.

LOOPNE (LOOPNZ) – циклды (нөлге) тең болмағанша қайталайды. Команда СХ регистрінің мəнін 1-ге азайтады, одан кейін СХ регистрі 0-ге тең емес жəне ZF 0-ге тең болған кезде ауысу жасайды. Сонымен цикл өз жұмысын СХ регистрі 0-ге жəне ZF регистрі 1-ге тең болған кезде, немесе олардың екеуі де орындалған кезде аяқтайды. Əдетте LOOPNE командасы бірінші нөлдік нəтиже іздеу операцияларында қолданылады.

і80х86 микропроцессорлар тобының барлығы і8086 командалар жиынымен жұмыс істейді. Командалар жиынын келесі топқа бөлуге болады: деректерді алып-орналастыру командалары, басқару тізгінін ауыстыру командалары, екілік разрядтармен жұмыс командалары, тізбекті командалар, үзу командалары жəне микропроцессорды басқару командалары.

Деректерді алып орналастыру командалары

Алып орналастыру командалар белгілерді, адрестерді, деректерді алып орналастыру үшін қолданылады. MOV – жалпы міндетті алып-орналастыру командасы.

Байтты жəне сөзді алып орналастырады

Команда форматы: MOV <қабылдағыш>,<таратқыш>

Қабылдағыш ретінде регистр немесе жады ұяшығықолданылуы мүмкін, ал таратқыш ретінде — регистр, жадыұяшығыжəне тікелей операнд (тұрақты) қолданылады.

MOV командасында келесі жағдайлардың болуы мүмкін емес:

  1. a) бір жады ұяшығының мəнін екіншіге алып орналастыру;

б) бір жады ұяшығының мəнін сегментті регистрге немесе

керісінше алып орналастыру;

в) бір сегментті регистрдің мəнін екінші сегментті

регистрге алып орналастыру.

Бұл көшіруді аралық регистр арқылы орындауға болады. Аралық регистр ретінде SP-дан басқа жалпы міндеттік регистр қолданылды. MOV командасында рұқсат берілген алып орналастырулар: регистр – регистр, регистр – жады, тұрақты – регистр, тұрақты – жадыға, жады-регистр.

Мысалы: 20MOV AX,DX

MOV AX,FLDA[SІ]

MOV FLDA,AX

MOV AL, 22H MOV FLDA[BP][SІ],33H

PUSH – Сөзді стекке жазу командасы

Команда форматы: PUSH <таратқыш>

Таратқыш ретінде регистр немесе жады ұяшығы қолданылады.

Мысалы: PUSH CX

PUSH TABL

POP – Сөзді стектен оқу командасы

Команда форматы: POP <қабылдағыш> қабылдағыш ретінде регистр немесе жады ұяшығы қолданылады.

Мысалы: POP BX

POP TABL

XCHG -Сөздерді немесе байттарды ауыстыру командасы Команда форматы: XCHG операнд1, операнд 2 операндтар есебінде регистрларды жəне жады ұяшықтарын келесітүрде алуға болады:

регистр-регистр, регистр-жады. Мысалы: ХСHG AX,DX

XCHG BX,A[SІ]

XLAT -Қайта кодтау командасы

Команда форматы: XLAT таратқыш_кестесі

XLAT командасын пайдаланғанда, қайта кодталатын элементтің нөміріAL регистріне енгізіледі, ал таратқыш кестесінің адресі BX регистріне енгізіледі. XLATкомандасы орындалғаннан кейін нəтиже AL регистріне енгізіледі.

Мысалы:

деректер сегментінде ASCІІ DB’0123456789′ кодтар сегментінде

MOV BX, OFFSET ASCІІ

MOV AL, 5

XLAT; AL=35H 

Енгізушығару командалары ІN – Портан операндты енгізу.

Команда форматы: ІN аккумулятор, порт

ІN – командасы байтты, сөзді жəне екілік сөзді порттан микропроцессорға алып-орналастырады.

OUT – Портқа операндты шығару.

Команда форматы: OUT порт, аккумулятор

OUT – командасы байтты, сөзді жəне екілік сөзді микропроцессордан портқа алып-орналастырады.

Аккумулятор есебінде AL регистрі (байттарды қайта тасымалдау үшін) жəне AX регистрі ( сөздерді қайта тасымалдау үшін) қолданылады. Порт операторы есебінде 0-ден 255-ке дейінгі порттар нөмірі жəне DXрегистрі қолданылады.Мысалы: ІNAL,60H

OUT 20H,AL

ІNAX,DX

OUT DX,AX 

Адресті қайта тасымалдау командалары

LEA — Тиімді адресті жүктемелеу командасы

Команда форматы: LEA қабылдағыш, таратқыш

Команда орындалған кезде қабылдағыш регистрге 16биттік немесе 32-биттік таратқыш операндынан түскен мəн жүктемеленеді. Қабылдағыш операнды ретінде жалпы міндетті регистрлердің бірі алынады. Таратқыш операндтары DW немесе DD директивасымен анықталуы керек.

Мысалы: TAB DW 10h, 20h,30h leaBX, TAB

Берілген команда ассемблердегі offset операторына ұқсас. Оның offset операторынан айырмашылығы, lea командасы операндты индекстеуді орындайды, ол арқылы операндты адрецациялауды ұйымдастыру жеңіл болады. Мысалы:

bx регистріне mas массивінің бесінші элементін

жүктемелеу керек болсын

.data

mas db10 dup (0) .code

mov dі,4

lea bx,mas[dі]

;или

lea bx,mas[4]

;или

lea bx,mas+4

LDS/LES/LFS/LGS/LSSЖадыдан көрсетілген сегменттік регистрлерді жүктемелеу ds/es/fs/gs/ss

Команда форматы: LDS қабылдағыш, таратқыш

Команда көрсетілген регистрге кіші сөзді, ал DS сегменттік регистріне үлкен сөзді жүктемелейді. Мысалы:

MAІN DD 10000100h

LDS BX,MAІN

LDS командасы3 MOV командасын ауыстырады :

MOV BX,OFFSET MAІN

MOV AX,SEG MAІN

MOV DS,AX

LES, LFS, LGS, LSS командалары LDS командасына ұқсас, бірақ адрес сегменті сəкесінше ES, FS, GS, SS регистрлеріне жүктемеленеді. 

Белгілердіауыстыру командалары

LAHF – AH регистріне белгілерді жүктемелеу

LAHF командасы белгілер регистрінің кіші битін AH регистріне жүктемелейді.

SAHF – AH регистріндегі белгілерді орнату

SAHF командасыАН регистріндегі 0, 2, 4, 6, 7 разрядтарды белгілер регистрінің кіші байтына қайта жазады.

PUSHF – Стекке белгілерді орналастыру

PUSHF командасы белгілер регистріндегі мəндерді стекте сақтайды.

POPF – Стектен белгілерді шығару

POPF командасы стектен сөзді оқиды да оны белгілер регистріне орналастырады.

Басқару тізгінін ауыстыру командалары

Бұл топтағы командалар программаның бір жерінен екінші жеріне көшуге мүмкіндік береді. Бұл командалар жұмыс принципіне байланысты үш топқа бөлінеді:

  1. Басқару тізгінін шартсыз ауыстыру командалары:
  • Шартсыз ауысу командалары;
  • Процедураны шақыру жəне процедурадан қайту;
  • Программалық үзулерді шақыру жəне программалық үзулерден қайту.
    1. Басқару тізгінін шартқа байланысты ауыстыру командалары:
  • Cmp салыстыру командасының нəтижесіне байланысты ауысу;
  • Белгілі бір белгінің күйіне байланысты ауысу; — cx (ecx) регистрінің құрамына байланысты ауысу.
    1. Циклды басқару командалары:
  • cx (ecx) санауышпен ұйымдастырылған командалар
  • cx (ecx) санауышпен ұйымдастырылған жəне қосымша шартқа байланысты циклдан ертерек шығу мүмкіндіктері бар командалар.

Басқару тізгінін шартсыз ауыстыру командалары.

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 регистріне жүктемелеу үшін сегмент адресін шығарады.

Басқару тізгінін шартқа байланысты ауыстыру командалары

Басқарутізгініншартқа байланыстыауыстыру командаларының жалпы форматы келесі түрде болады:

Jx ауысу_таңбасы, мұндағы х – модификатор, ол бір немесе бірнеше əріптерден тұрады, ол келесі мəндерді қабылдауы мүмкін:

E (equal) – тең,

N (not) – немесе,

G (greater) – үлкен,

L (less) – кіші, A (above) – жоғары,

B (below) – төмен.

E, N модификаторлары кез-келген типтегі операндтар үшін қолданылады, G жəне L – таңбасыз сандар үшін, A жəне B – таңбалы сандар үшін.

Шартқа байланысты ауыстыру командаларын программаның орындалуы кезінде пайда болатын əртүрлі шарттарды тексеру үшін қолданған ыңғайлы. Көп командалар орындалу нəтижелерін flags (eflags) регистрінде қалыптастырады. Төменде шартқа байланысты ауысу командалары жəне олар орындалған кездегі белгілердің өзгерулері, сондай-ақ оларға сəйкес логикалық ауысулар көрсетілген.

Команда Тексерілетін белгілер күйі Ауысу шарты  
JA CF = 0 и ZF = 0 Егер жоғары болса  
JAE CF = 0 Егер жоғары немесе болса тең
JB CF = 1 Егер төмен болса  
JBE CF = 1 или ZF = 1 Егер төмен немесе

болса

тең
JC CF = 1 Егер тасымал болса  
JE ZF = 1 Егер тең болса  
JZ ZF = 1 Егер 0 болса  
JG ZF = 0 и SF = OF Егер үлкен болса  
JGE SF = OF Егер үлкен немесе болса тең
JL SF <> OF Егер кіші болса  
JLE ZF=1 или SF <> OF Егер кіші немесе тең болса
JNA CF = 1 и ZF = 1 Егер жоғары болмаса
JNAE CF = 1 Егер жоғары емес немесе тең болса
JNB CF = 0 Егер төменболмаса
JNBE CF=0 и ZF=0 Егер жоғары емес немесе тең болса
JNC CF = 0 Егер тасымал болмаса
JNE ZF = 0 Егер тең болмаса
JNG ZF = 1 или SF <> OF Егер үлкен болмаса
JNGE SF <> OF Егер үлкен емес немесе тең болса
JNL SF = OF Егер кіші болмаса
JNLE ZF=0 и SF=OF Егер кіші емес немесе тең болса
JNO OF=0 Егер асатолу болмаса
JNP PF = 0 Егер нəтиже биттерінің қосындысы тақ болса(тақтық паритет)
JNS SF = 0 Егер таңба оң болса (таңбалық (үлкен) бит

нəтижесі 0 тең)

JNZ ZF = 0 Егер 0 болмаса
JO OF = 1 Егер асатолу болса
JP PF = 1 Егер нəтиже биттерінің қосындысы жұп болса(жұптық паритет)
JPE PF = 1  JP сияқты, яғни жұптық паритет
JPO PF = 0  JNP сияқты, яғни тақтық паритет
JS SF = 1 Егер таңба теріс болса

(таңбалық (үлкен)бит нəтижесі 1 тең)

JCXZ əсер етпейді Егер регистр CX=0 болса
JECXZ əсер етпейді Егер регистр ECX=0 болса

«Үлкен» жəне «кіші» логикалық шарттары таңбалы бүтін сан мəндері салыстыру үшін, ал «жоғары» жəне «төмен» — логикалық шарттары таңбасыз бүтін сан мəндерін салыстыру үшін қолданылады. Бірінші кездегі і8086 микропроцессорларындағы шартқа байланысты ауысу командалары қысқа ауысуларды ғана жасай алатын, ал қазіргі і386 микропроцессорларына қойылған шарт жоқ, олар ағымдағы сегменттің кез-келген жерінен ауысу жасай береді. Ал сегмент аралық ауысулар жасау үшін шартты ауысу командалары мен jmp шартсыз ауысу командаларын қосып қолданған дұрыс.

Басқаруды шартқа байланысты ауыстыру командаларына кез-келген белгінің күйін өзгерте алатын командалар кедергі келтіре алады, олар əдетте СМР салыстыру командасымен бірге қолданылады.

Циклды басқару командалары

Циклды басқару командалары цикл ұйымдастыру кезінде шартты ауысу үшін қолданылады. Əрбір команда СХ регистріндегі санауыш мəнін 1 кемітіп отырады, ал одан кейін оның жаңа мəніне байланысты оны тоқтату керек па немесе əрі қарай жалғастыру керек па жайындағы шешім қабылдайды.

LOOP – циклды санауыш біткенге дейін қайталайды.Команда форматы: LOOP таңба

Бұл команда СХ регистр санауыштың мəнін 1-ге азайтады жəне СХ регистрінің мəні 0-ге тең болғанға дейін басқаруды таңбаға береді. LOOP командасы циклды орындауын СХ регистрі 0-ге тең болған кезде ғана аяқтайды. Бірақ көптеген қосымшаларда белгілі бір шартты орындаса болғаны СХ регистрінің мəнін 0-ге тең болғанша күтпей-ақ аяқтау керек болатын жағдайлар кездеседі. Мұндай циклды аяқтау командаларына LOOPE (егер тең болса, циклды қайтала) жəне LOOPNE (егер тең болмаса, циклды қайтала).

LOOPE (LOOPZ) – циклды (нөлге) тең болғанша қайталайды. Команда СХ регистрінің мəнін 1-ге азайтады, одан кейін СХ регистрі 0-ге жəне ZF 1-ге тең болған кезде ауысу жасайды. Сонымен цикл өз жұмысын СХ регистрі 0-ге жəне ZF регистрі 0-ге тең болған кезде, немесе олардың екеуі де 0-ге тең болған кезде аяқтайды. Əдетте LOOPE командасы нөлдік нəтиже іздеу операцияларында қолданылады.

LOOPNE (LOOPNZ) – циклды (нөлге) тең болмағанша қайталайды. Команда СХ регистрінің мəнін 1-ге азайтады, одан кейін СХ регистрі 0-ге тең емес жəне ZF 0-ге тең болған кезде ауысу жасайды. Сонымен цикл өз жұмысын СХ регистрі 0-ге жəне ZF регистрі 1-ге тең болған кезде, немесе олардың екеуі де орындалған кезде аяқтайды. Əдетте LOOPNE командасы бірінші нөлдік нəтиже іздеу операцияларында қолданылады.