Шартсыз ту командалары

Процессорды командалар жйесінде бірнеше шарттыз ту командалары бар. Оларды айырмашылытары ту ашытыы жне ту адресіні берілуімен аныталады. Шартсыз ту командаларыны жазылу синтаксисі:

JMP ор

Мнда операнд андай да бір тсілмен ту адресін, яни келесі орындалатын команданы адресін крсетеді. Ол адрес кезектегі сегментте немесе баса бір сегментте жатуы ммкін. Бірінші жадайда ол сегментіші немесе жаын ту, ал екінші жадайда сегментарлы немесе алша ту деп аталады.

Процессорда келесі орындалатын команданы адресі CS жне ЕІР/ІР регистрлерімен берілетінін білеміз: CS регистрі осы команда тран жад сегменттіні басын, ал ЕІР/ІР регистрі кезекті сегментті басынан бастап осы команданы сегмент ішіндегі орынын (ыысуын) крсетеді.

Егер тек ЕІР/ІР регистріні мні згеретін болса, онда ту сегмент ішінде жасалады. Мндай тулер сегментіші немесе жаын тулер деп аталады. Ал программада бірнеше сегмент бар болса, онда бір сегменттен баса сегментке ту ажет болады. Мндай тулер сегментарлы немесе алша тулер деп аталады.

Салыстыру жне шартты ту командалары. Шартты ту командалары трлері.

Жоспары.Салыстыру командаларынан со олданылатын шартты ту командалары. андайда бір аныталан жалаушаларды мндеріне байланысты ту. СХ регистріні мнін тексеру арылы ту.

Егер ту андай да бір шарттарды орындалуына байланысты жасалса, ондай ту шартты ту деп аталады. Шартты ту детте екі адамда жасалады: алдымен андай да бір шамалар салыстырылады, нтижесінде жалаушаларды мндері орнатылады (SF,ZF жне т.б.), содан со жалаушаларды мндеріне байланысты ту орындалады.

Салыстыру командасы SUB op1,op2 командасы трізді, операнттарды айырымын тауып, салыстыру нтижесінде жалаушаларды мндерін орнатады. Айырмашылыы: айырым ешайда жазылмайды. Сондытан бл команданы негізгі жмысы айырымды сипаттайтын жалаушаларды мндерін орнату. Жазылуы:

CMP op1,op2

Шартты ту командасын алатын болса, процессорды командалар жйесінде мндай командалар жеткілікті. Оларды брі ассемблерде біркелкі жазылады:

J** <таба>

Мнда операнд андай да бір шарт аиат болан жадайдаы тілетін команданы табасын крсетеді. Ал мнемокод соында бір немесе екі символ жазылатын J ріпінен басталады. Барлы шартты ту командаларын ш топа блуге болады:

· салыстыру командасынан кейін ойылатын командалар;

· жалаушаларды мндері арылы жасалатын командалар;

· ЕСХ/СХ регистріні мнін тексеретін команда.

Бірінші топа салыстыру командасынан кейін ойылатын командалар кіреді. Оларды мнемокодында белгілі бір ріптерді кмегімен салыстыру трі аныталады. Олар:

E – equal (те)

N – not (жо, терістеу)

G – greater (лкен) – табалы сандар шін

L – less (кіші) - табалы сандар шін

A – above (жоары, лкен) – табасыз сандар шін

B – below (тмен, кіші) – табасыз сандар шін

Кріп отыранымыздай «кіші» жне «лкен» шарттар шін екі трлі белгілеулер жасалан. Ол табалы, табасыз сандарды салыстыраннан кейін жалаушаларды ртрлі мндері арастырылатындытан.

Енді салыстырудан кейін олданылатын шартты ту командаларыны барлы атауларын келтірейік:

Операнттарды типтері Шартты ту командасыны мнемокоды ту шарты   Жалаушаларды кйі  
кез келген сан JE op1=op2 ZF=1
кез келген сан JNE op1<>op2 ZF=0
табалы сандар JL/JNGE op1=op2 SF<>OF
табалы сандар JLE/JNG op1<=op2 SF<>OF немесе ZF=1
табалы сандар JG/JNLE op1>op2 SF=OF жне ZF=0
табалы сандар JGE/JNL op1=>op2 SF=OF
табасыз сандар JB/JNAE op1=op2 CF=1
табасыз сандар JBE/JNAE op1<=op2 CF=1 немесе ZF=1
табасыз сандар JA/JNBE op1>op2 CF=0 жне ZF=0
табасыз сандар JAE/JNB op1=>op2 CF=0

6.2.1-мысал. X, Y жне Z сз лшемді айнымалылар. Z-ке Х пен Y-ті лкенін жазу керек. Бл есепті шешімі табалы, табасыз сандар шін ртрлі салыстыру командаларын олданатын боландытан ртрлі болады:

;табалы сандар MOV AX,X CMP AX,Y ;x=y? JGE M ;x>=y->M MOV AX,Y M: MOV Z,A ;табасыз сандар MOV AX,X CMP AX,Y JAE M MOV AX,Y M: MOV Z,AX

Шартты ту командаларыны екінші тобына андай да бір жалаушаларды мндеріне байланысты жасалатын ту командалары кіреді. Егер жалаушаны мні 1-ге те боланда ту жасалса, бл командаларды мнемокодында тексерілетін жалаушаны бірінші ріпі крсетіледі немесе егер ту жалаушаны нлдік мндері арылы жасалса, N ріпі крсетіледі.

Жалаушаны мні Жалауша регистіріндегі битты орыны Шартты ту командасыны мнемокоды Жалаушаны кйі (ту шарты)
CF ауысу JC CF=1
PF жпты JP PF=1
ZF нлдік JZ ZF=1
SF таба JS SF=1
OF толу JO OF=1
CF ауысу JNC CF=0
PF жпты JNP PF=0
ZF нлдік JNZ ZF=0
SF таба JNS SF=0
OF толу JNO OF=0

(Ескерту: JE жне JZ,JNE жне JNZ,JB жне JC,JNB жне JNC мнемокдтарыры жбтары эквивалентті).

6.2.2-мысал. Айталы А,В,С табасыз байтты айнымалылар, С=A*A+B рнегін есептеу керек. Егер нтиже байт лшемінен артып кетсе, онда ERROR табасына ту керек.

Шешуі:

MOV AL,A

MUL AL

JC ERROR ;A*A > 255 (CF=1)àERROR

ADD AL,B

JC ERROR ;(CF=1)àERROR

MOV C,AL

...

ERROR:

шінші топа жалаушаны емес, ЕСХ/СХ регистріні мнін тексеретін бір ана шартты ту командасы кіреді:

JCXZ<таба> немесе JЕCXZ<таба>

JCXZ жне JЕCXZ командалары тек ана ыса ту жасайды, яни оларды кмегімен 127-128 байта жоары немесе тмен аттауа болады. Ол шамамен 30-40 команда (бір команда орта есеппен 3-4 байт орын алады).