12.8 Күй регистрі
Қарапайым калькулятордан нағыз есептегіш машина күй регистрінің
бар болуымен көзге түседі. Бұл аталып отырған регистр бағдарламаны
орындау тәсірі кезінде іске асырылатын кейбір тексерулердің нәтижесін
сақтау үшін арналған. АҚҚ мен тағы басқа регистрлерді пайдаланып амалды
орындаған кезде, күй регистрінің разрядтәры не ол, не бұл мәндерге
иеленеді. Айтылған тексеру нәтижелерін есте сақтау, көшулері бар (яғни
бұйрықтар орындалуының кәдімгі бір ізділігінің бұзылуы) бағдарламаларды
пайдалануға мүмкіндік береді.
Бағдарламада көшуі бар болса, бұйрықтардың орындалуы жадының
кейбір жаңа аймағынан басталады, яғни бұйрықтар санағышы жаңа санмен
тиеледі. Шартты көшу жағдайда бұндай әрекет айқын тексеру нәтижелері
үміттелген мәндермен дәл келгенде орындалады. Бұл айтылып отырған
нәтижелер күй регистрінің ішінде орналасқан болады.
Калькулятормен салыстырғандағы машинаның ерекше өзгешелігі - ол,
бағдарламалауды жүргізгенде басқаруды әпере алу мүмкіндігінің
(көшулермен) бар болуында. Айқын болған жағдайларда күй регистрі
бағдарламалаушыға МП жұмысын бұйрықтар орындалу тәртібін өзгерте
алатындай етіп ұйымдастыруына мүмкіндік береді. Көрсетілген шарттарға
тәуелді есептеулердің не ол, не бұл жолымен жалғасуы тиіс деген шешімді
МП қабылдайды деуге болады. Калькулятор бұндай шешімдерді қабылдай
ала алмайды.
Сонымен, күй разрядтарының ішіндегі барымен пайдалану МП
бұйрықтарының жаңа жинтығының пайда болуына келтіреді. Бұл бұйрықтар
не ол, не бұл күй разрядының иеленетін мәніне сәйкесті бағдарламаның
орындалу жолын өзгерту үшін арналған. Егер белгілі бір күй разрядының
мәні "1"-ге тең болса, бұл арнайы бұйрықтарды пайдаланудың дәстүрлі тәсімі
бұйрықтар санауышын жаңа ішіндегі барымен тиеуді ұйғарады.
Жоғарыда ескертілгендей, АҚҚ амалдар орындағанда күй регистрінің
разрядтарына бірлік ("1"-лік) мәндері беріледі. Бұндай амалдардың әдеттегі
мысалы ретінде арифметикалық амалдарды келтіруге болады. Оларды іске
асырғанда тасымалдаудың "1"-лік БИТ-і, нөльдік нәтиженің қалыптасуы
(яғни барлық разрядтарда екілік нөльдер) немесе екеуі де бір кезде тууы
(генерациялануы) мүмкін. Шынында да, егер екі 8-БИТ-тік сандарды
84
қосқанда алатын нәтижеміз 1111 1111 - мәнінен үлкен болса, онда
тасымалдаудың "1"-лік БИТ-і пайда болады, күй регистрінің аттас разрядын
өз кезегінде "1"-ге орнатады. Бұндай амалдың мысалын келтірейік:
Тасымал БИТ-інің пайда болуы түбі күй регистрінің сәйкесті
разрядының "1"-ге орнатылуына әкеліп соғады. Тағы да екі мысал
қарастырайық:
1-ші мысал
2-ші мысал
Бірінші мысалда тасымал жоқ, сондықтан күй регистрінің сәйкесті
разрядының мәні "0"-ге тең, ал екінші мысалда тасымал орындалады
тасымалдау БИТ-і "1"-ге тең және де нәтиженің теріс таңбалың белгісі де
орындалады (нәтиженің теріс таңбалың белгісі БИТ-і "1"-ге тең).
Егер амалды орындап болғаннан кейін аккумулятордың барлық
разрядтарына "0"-ге тең БИТ-тер жазылған болса, онда күй регистрінің
ішіндегі нөльдік нәтиженің БИТ-і "1"-ге тең болады. Біздің қарастырып
отырған МП-де бірлік күйге бұл БИТ жалпы міндет атқаратын регистрлердің
қатысуымен кейбір амалдарды іске асырғанда да орнығуы мүмкін. Мысалы,
белгілі бір шаманы белгілі бір регистр ішіне (оны D регистрі деп атайық)
жазу жиі талап етіледі, ал содан кейін оны бағдарламаның белгілі бір нүктесі
арқылы әрдайым "өткен" сайын белгілі бір тұрақты шамаға константаға
азайту талап етіледі. Бұл регистр ішіндегісінің әрбір өзгеруінен кейін күй
регистрінің ішіндегі нольдік нәтиже разрядының мәні тексеріледі. Егер D
регистрінің ішіндегісі нөльге тең болса, нөльдік нәтиже разряды "1" күйіне
орнығады. D регистрінің ішіндегі нөльдің бар жоғын тексеруші бағдарлама
немесе оның бөлігі күй регистрінің ішінде нөльдік нәтиже разрядының бірлік
мәні табылғанға дейін қайталанып тұрады.
Жоғарыда айтылғанға нақтылы мысал келтіріп, теріс таңбалы
өсімшелерді алатын белгілі бір регистрдің ішіндегісін тексеру үшін күй
регистрін қаалай пайдалануға болатынын қарастырайық. Сәйкесті
бағдарламаның сөзбен сипаттамасы келесі түрде болуы мүмкін:
1.
Регистр ішінде 11002 деген сан тиелуі тиіс.
85
2.
Регистр ішіндегі барын 12 деген санға азайту керек.
3.
Күй регистрінің ішіндегі нөльдік нәтиже разрядының мәні "1"-ге тең бе
екенін тексеру.
4.
Тең болмаған жағдайда, екінші қадамдағы амалды орындау
үшін қайта оралу керек.
5.
Тең болған жағдайда, әрекет доғарылады. Күй регистрінің кейбір ең
жалпы пайдаланылатын разрядтарын қысқаша сипаттап өтейік.
1.Тасымал/қарыз. Бұл разряд соңғы болып орындалған амал тасымалмен
немесе қарызбен (яғни теріс таңбалы тасымалмен) қабаттас өткенін
көрсетеді. Егер екі екілік санның қосылу нәтижесінде сегізінші нәтиже
разрядының ішінен тасымал бар болса, тасымал разрядының мәні "1"-ге тең
болып орнығада. Кіші саннан үлкен сан шегертілгенде күй регистрінің ішінде
теріс таңбалы тасымал яғни қарыз бекітіледі.
2. Нөльдік нәтиже. Егер амал орындалып болғаннан кейін нәтиже
регистрінің барлық разрядтарында екілік нөльдер табылса, ол бірлік мәнге
иеленеді. Бұл разрядтың "1"-ге орнығуы регистрдің ішіндегі барын тек теріс
таңбалы өсімшеге өзгерткенде ғана емес, басқа да кез келген амалды (егер
оның нәтижесі екілік нөльдерден тұратын сан болса) орындағанда да іске
асырылады.
3. Таңбалық. Орындалған амалдың нәтижесін жазу үшін арналған
регистрдің ішіндегі аға мәнді БИТ "1"-ге тең болғанда, "1"-лік мәнге
иеленеді. Қосымша нышанда жазылған сандармен арифметикалық
амалдарды орындағанда аға мәнді БИТ-тің бірлік мәні регистр ішінде теріс
таңбалы санның бар екенін көрсетеді.
Жоғарыда қарастырылған күй разрядтарының үшеуі де МП-лердің
көбінде пайдаланылады, демек, біздің қарастырып отырған жорамалданған
микропроцессорымызда да қолданылады. МП-лердің көбінде қолданылуы
"стандартталмаған" қосымша күй разрядтары да болады. Бұндай
разрядтармен дұрыс пайдалану үшін бағдарламалаушы екілік арифметика
бұйрықтармен жұмыс істеу ерекшеліктерін жақсы түсінуі тиісті, себебі күй
регистрінің разрядтары бірлік мәндеріне тек белгілі арифметикалық
амалдардың орындалу нәтижесінде ғана иеленеді. "Стандартсыз" разрядтар
тек МП-ның көмегімен немесе регистрлердің қатысымен орындалатын
амалдарда ғана болып қоймайды. Тап сондай регистр разрядтары МП-нің
кейбір қосымша бағдарламалы-аппараттық құралдардың "қосу" немесе
"ажырату" көрсетушілері (индикаторлары) ретінде пайдаланылады. Бұндай
разрядтар аппараттық құралдар туралы ақпаратты беретіндіктен, олардың
мәндерін бұл құралдарды пайдалану туралы шешімге келер алдында талдау
керек.
Кейбір МП-лерде күй разрядтарының бәрін бастапқы қалпына келтіру
немесе тазарту үшін арнайы бұйрықтар алдын ала ескерілген. Дегенмен күй
регистрінің ішіндегісін "тек оқуды" рұқсат ететін МП-лер де бар. Күй
регистрінің "стандартсыз" разрядтарымен қалай пайдалану керектігін түсіну
86
үшін әрбір нақтылы жағдайда сізді ынталандыратын МП моделінің
техникалық құжаттарына көңіл аудару керек.
МП
күй
регистрінің
барлық
разрядтарымен
пайдаланбайды.
Пайдаланылмайтын күй регистрінің разрядтарына әдетте "мәңгі-бақи" екілік
бірлер ("1
2
") жазылады. Біздің қарастырып отырған МП-ге сәйкес күй деген
сөз - аттас регистр ішіндегі бары - тек үш пайдаланылатын разрядтармен
беріледі (12.2-сурет). Сегіз разрядты сөздің бес кіші разрядтары тұрақты
бірлік мәндерге иеленеді. Бұның нәтижесінде күй регистрінің ішіндегі бары
МП деректерінің ішкі өрелік жолына тиеленуі мүмкін, бірақ күй регистрі
өрелік жолмен келіп түсетін деректерді қабылдай алмайды. Бұның
салдарынан, егер, мысалы, аккумулятор ішіне жазылатын амалдың нәтижесі
тасымалсыз оң таңбалы сан болса, онда күй сөзі 0001111 -ге тең. Егер
амалдың нәтижесі тасымалсыз теріс таңбалы сан болса, онда күй регистрінің
ігшінде 01011111 деген сан қалыптасады.
12.2-сурет. Z ,N және C үш модификацияланатын БИТ-тері бар
микропроцессордың күй сөзі.
Достарыңызбен бөлісу: |