Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


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




Программаның белгілі бір бөлігін қайта-қайта қайталап орындауды ұйымдастыру үшін басқару тізгінін шартқа байланысты ауыстыру командаларын немесе шартсыз өту (көшу) JMP командасын пайдалануға болады. Бірақ бұл кезде программалаушы қайталаманы (cycle) ұйымдастыру операцияларының барлығын өзі “қолмен” орындауы керек.

Сондықтан шағынпроцессордың командалар жүйесінде қайталаманы программалауға арналған үш арнайы команда бар. Бұл командалар программалық қайталама үрдісін ұйымдас­тыру кезінде басқару тізгінін шарттың орындалуына байланысты ауыс­тыруды қамтамасыз етеді. Оларда қайталама санауышы ретінде ECX/CX регистрін қолдану көзделген. Әрбір қайталамадан кейін шарттың орындалғанын тексере отырып (әр қайталама санауыштың мәнін 1-ге кемітіп отырады) басқару тізгінін өзгерту жайында шешім қабылданады.

Қайталаманы басқару командалары екі топқа бөлінеді:

· ECX/CX санауышын қолданатын қайталаманы ұйымдастыру командасы (LOOP командасы);

· қосымша шарт бойынша қайталамадан бұрын шығу мүмкіндігі бар және ECX/CX санауышын қолданатын қайталаманы ұйымдастыру командасы (LOOPE/LOOPZ және LOOPNE/LOOPNZ командалары ).

LOOP командасы. LOOP (loop untіl count complete - санауыштың соңына дейін қайталау) командасының пішімі:

LOOP өткел_тамғасы

Өткел_тамғасы мен LOОP командасы аралығындағы программа бөлігі санауыштың мәні 0-ге тең болғанша қайталанады. ECX/CX регистрінің (санауыштың) мәні 0-ге тең болған кезде басқару тізгіні LOОP командасынан кейін орналасқан командаға беріледі.

Мысалы: MOV CX,100

ST: --------------

--------------

LOOP ST

LOOPE/LOOPZ командалары. LOOPE (loop іf equal - егер тең болса қайтадан қайталаманы орындау) және LOOPZ (loop іf zero - егер нөл болса қайтадан қайталаманы орындау) командаларының пішімі:

LOOPE/LOOPZ өткел_тамғасы

Бұл екі команда бірдей міндет атқарады. Олар орындалған кезде ECX/CX регистрінің (санауыштың) мәнімен қатар ZF жалаушасының қалып-күйі де тексеріледі. Егер санауыш мәні 0-ден үлкен болса және ZF=1 болса, онда басқару тізгіні өткел_тамғасына беріледі. Егер санауыш мәні 0-ге тең болса немесе ZF=0 болса, онда басқару тізгіні LOOPE/LOOPZ командасынан кейін орналасқан командаға беріледі.

LOOPNE/LOOPNZ командалары. LOOPNE (loop іf not equal - егер тең болмаса қайтадан қайталаманы орындау) және LOOPNZ (loop іf not zero - нөл болғанша қайталаманы қайталау) командаларының пішімі:

LOOPE/LOOPZ өткел_тамғасы

Бұл командалардың жұмыс істеу ұстанымы LOOPE/LOOPZ командаларына қарама-қарсы. Егер санауыш мәні 0-ден үлкен болса және ZF=0 болса, онда қайталама үдірісі жалғаса береді. Егер санауыш мәні 0-ге тең болса немесе ZF=1 болса, онда басқару тізгіні LOOPNE/LOOPNZ командасынан кейін орналасқан командаға беріледі.

LOOPE/LOOPZ және LOOPNE/LOOPNZ командаларының LOOP командасына қарағанда қосымша мүмкіншілігі бар: ZF жалаушасының қалып-күйін қосымша тексеру арқылы қайталамадан бұрын шығуды ұйымдастырады.

LOOP, LOOPE/LOOPZ және LOOPNE/LOOPNZ командаларының кемшілігі – олар тек қысқа өткел (-128-ден +127-ге байтқа дейін) ұйымдастыра алады. Сондықтан, егер ұзын қайталамамен жұмыс істеу үшін басқару тізгінін шартқа байланысты ауыстыру командаларын немесе шартсыз өту (көшу) JMP командасын пайдалану керек болады.

 

Негізгі әдебиет:

1[64-73];

4[47-54];

7[202-222].

Қосымша әдебиет:

1[93-97].

Бақылау сұрақтары

1.Ассемблер тілінде басқару тізгінін ауыстыру тәсілдерін атаңыз?

2.Азайту командалар тобының жұмыс істеу логикасы?

3. Көбейту командалар тобының жұмыс істеу логикасы?

4.Бөлу командалар тобының жұмыс істеу логикасы?

5.Түзету командалар тобының жұмыс істеу логикасы?

6. Таңба ұлғайту командалар тобының жұмыс істеу логикасы?

 

 

9 дәрістің тақырыбы:

Командалар типы.Үзу командалары.

Шағынпроцессорларда үзу командаларының үш түрі бар: үзуді болдыру-шақыру екі командасы (ІNT, ІNTO) және үзуден кейін қайту бір командасы (ІRET). Үзу командасын орындаған кезде шағынпроцессор белгілі бір үзілімді өңдеу программасын (процедурасын) шақырып жұмыс істетеді және қайта оралу командасына сәйкес ағымдағы программаға қайтадан басқару тізгінін береді.

ІNT командасы. ІNT (іnterrupt - үзу) командасы үзу өңдеуішін шақыруды программалық түрде жүзеге асырады. Команданың пішімі:

ІNT үзудің_түрі

Бұл жерде, үзудің_түрі – шақырылатын өңдеу процедурасының ІDT кестесіндегі (үзулердің дескрипторлық кестесіндегі) индексі немесе үзу векторлар таблицасының өңдеуіштің нөмірі ретінде қолданылатын операнд. Яғни, шағынпроцессор бұл операндты (0 мен 255 арасындағы санды) жады ұяшығынң көрсеткіші ретінде пайдаланады. Ал мұндай ұяшықта нақты үзуді өңдейтін процедураның жадыдағы (үзу векторы деп аталатын) мекенжайы сақталады.

ІNTO командасы. ІNTO (іnterrupt іf overflow - толып кету кезіндеі үзу) командасы шартты программалық үзу командасы болып табылады. Ол ІNT командасына ұқсайды, бірақ оның анық көрсетілмеген операнды (үзу нөмірі) 4-ке тең және ІNTO командасы тек eflags/flags региcтрінің толып кету жалау­шасы OF=1 болған кезде ғана басқару тізгінін өңдеу процедурасына береді.

ІRET командасы. ІRET (іnterrupt return - үзуді өндеуден кейін қайту) командасы үзулімді өндеу программасынан (процедурасынан) негізгі прог­рам­маға қайтып оралу үшін пайдаланылады. ІRET командасы R-режім кезінде команданың көрсеткішін, CS регистрін және жаулаушалар регистрін стектен шығарып алады да үзілген негізгі программаның жұмысын жалғастырады. P-режімінде ІRET командасының іс-әрекеті eflags/flags региcтрінің есептің қабаттылығын белгілейтін NT жалаушасының (14-ші разрядының) қалып-күйіне байланысты.

Зулер


Поделиться:

Дата добавления: 2015-01-05; просмотров: 139; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты