6.4. Мәліметтер форматы
Процессордың әрбір командасы мәліметтерді өңдеу үшін арналған. Ол адрестер операндымен анықталады. Егер бағдарламаның орындалу барысында оны тоқтатса, жұмыс істеу мүмкін емес. Себебі бұл операцияны істеу алдында кодты кері шифрлау керек. Ол өзінен өзі бұл үрдісті орындамайды.
Мәліметтер форматының 16-разрядты ЭВМ үшін кейбір бөліктерін қарасырайық.
8-битті таңбасыз бүтін сандар. Әрбір мұндай сандар 1 байтты құрайды және процессормен бүтін сан ретінде алынады. Бұл форматта 00000000-ден 11111111-ге дейінгі диапазонда қабылдайды. Яғни, 0-ден FF-ке дейін.
8-битті таңбалы бүтін сандар. Бұл жағдайда сандар 7 битпен анықталады. Ал, ең үлкен бит сан таңбасымен анықталады. (0 - шын, 1 -жалған). Мысалы, бұл форматта 01101011 коды +6В-ны білдіреді.
11101011 коды үшін -6В саны қосымша кодты береді.
Ол келесі тәсілмен өрнектеледі:
• санның абсолюттiк шамасын сегiз разрядты екiлiк ұсыныста болады;
• табылған код аударады, яғни нөлдер онда бiрлiкте керiсiнше ауыстырылады;
• алынған кодқа автоматты түрде бірлік қосылады.
Мысалы, ондық санның қосымша кодын алу үрдісі мынадай:
01001011 10110100 10110101
Қосымша кодты қолдану процессордың жұмысын жеңілдетеді.
Керi процедура – қосымша кодтың санының мағынасының қайтарылуы. Тікелей қатынас бойынша жүреді. Бұл форматтағы сандардың диапазоны: -128 ден +127-ге дейін.
16-битті таңбасыз бүтін сандар. Бұл 8-битті дәлдікпен анықталады. Бірақ код екі есе ұзындықты қабылдайды. Сәйкесiнше тарату диапазоны өседi: 0000-ден (ондық жүйеде 65535-ке) FFFF-ке дейінгі сандар үшiн таңбасыз, таңбалы - - 8000-ден (ондық жүйеде - 32768 +32767-ге) +7FFF-ге дейiнгі сандары үшiн жұмыс жасайды.
8-битті символдар. Бұл форматта екілік код символ коды ретінде интерпретацияланады. Дербес ЭВМ-мен жұмыс жасағанда ASCII кодтау жүйесі қолданылады. Бұл 1–бөлімде айтылған. Бұл жүйеде кодтар стандартталған. Ең үлкен код 0-ге тең. Ал қалған кодтар алфавиттермен және қосымша символдармен анықталады.
Битті жолдар. Бұл форматтағы сандар 8 немесе 16-разрядты кодта анықталмайды. Битті жолдардың бірден – бір мысалы ретінде – процессор күйінің регистрінің мазмұны. Тағы бір мысал Паскаль тілінде тілдер формасының сақталуы. Басқа да мәліметтер форматы бар – екілік-ондық сандар және жолдар т.б.
6.5 Үзілістерді өңдеу
Қазiргi микропроцессордың жұмысындағы маңызды рөлді үзілістер ойнайды. Олар әрқашан бағдарламаның негізгі орындалуын бұзады.
Үзілістер тудыратын оқиғалар екi топқа бөлінуі мүмкiн: фаталды және фаталды емес. Фаталды үзілістерге процессор жалғыз әдiспен ғана әсер ете алады: бағдарламаның орындалуын тоқтатып, болған оқиғаны талдап және тиiстi шара қолданады. Алайда, көпшілік жағдайда бағдарламалар тоқтатуын кiдiрте тұруға болады: үзіліс болғанын есте сақтап, бағдарламаның орындалуын жалғастыра беруге болады. Мысалы, принтерден баспаға шығарған кезде қабылдауға дайын емес ақпарат кейінге қалдырылуы мүмкін (бірақ бұл мәлімет сақталады).
Үзілістердiң негiзгi түрлері – ішкі процессорлық үзілістер және сыртқы құрылғылардан пайда болған үзілістер. Алғашқысы бағдарлама орындалуы кезінде алынбас бөгеттiң пайда болуымен байланысты. Мұның бірнеше себебі бар: жадыдан коды немесе адресі жоқ команда таңдалып, команданы орындау барысында ЭЕМ-нің разрядтық торының толысуы немесе басқа командаға бөлінген жедел жадыға жазылуға талпыныс пайда болады. Мұндай көп жағдайда бағдарламаның орындалуы тоқтатылып, басқару операциялық жүйеге беріледі.
Өте сирек болса да фаталды емес ішкі процессорлық үзілістер кездесіп тұрады. Олар мысалы: арнаулы кейінге қалдырылатын үзілістер. Мұндай үзілістер арнаулы бағдарламаның басқарылуымен тестіленетін бағдарламаның қадамдық орындалуына мүмкіндік береді.
Екiншi топтың үзілістерi көбінесе қандай да бір сыртқы құрылғылардың талаптары бойынша пайда болады. Мұндай оқиға әдетте бағдарламаның фаталды аяқтауына алып келмейдi, керiсiнше, бұл қалыпты жағдай. Сондықтан МП бағдарламаның әрі қарай орындалуын қамтамасыз ету үшін қажетті шараларды қолданады: командалар есептеуiшiнiң ағымдағы стектегі мәнін және қалып регистрінің мазмұнын сақтайды. Содан соң үзілістерді өңдеуді жүзеге асыратын ішкі бағдарламаға көшеді. Процессор стектің ағымдағы мәнін және қалып регистрінің мәнін қалпына келтіріп, үзiлген бағдарламаның орындауын жалғастырады.
Сыртқы құрылымдардағы үзілістер келесi тармақтарда толық қаралады.
Үзіліс термині тағы бір мағынада қолданылатынын атап өткен жөн. Мұндағы айтып отырғанымыз бағдарламалық үзілістер. Мысалы, IBM үшін үйлесiмдi компьютерлерде көптеген нөмірлі 1NT үзілістер командалары бар. 1NT-бұл процессор нұсқауларының бірі деп түсінген жөн; ол жұмыс iстеуі үшін, оның коды бағдарламада болуы керек. Бұған қарама-қайшылық ретінде шын үзілістер аппаратты түрде пайда болып, ешқандай арнаулы команда болуын қамтамасыз етпейтіні айтып кеткен жөн. Керiсiнше, аппараттық үзіліс бағдарламаның кез келген екі командаларының арасында бола алады.
Бағдарламалық үзілістерге машина аралық үзілістер жатады. Олар жергілікті желіде компьютерлер арасында ақпарат алмасқан кезде пайда болады.
Фаталды емес үзілістерге тыйым жасауды жасыру (маскировка) деп атайды. Жасыру арнайы бағдарламамен немесе жүйелік бағдарлама арқылы жасалады. Бұл арнаулы регистрде биттік өрістің қойылуымен жүзеге асырылады. Мұндағы разрядтардың мәндері сәйкесінше үзіліс разрядының бар жоқтығына байланысты, не болмаса регистр қалпы разрядын қарапайым қолдануымен байланысты.
Жасырылмаған үзіліс туралы сигнал келген соң, процессор келесі әрекеттерді орындайды:
• үзiлген бағдарламаның күйiн есте сақтайды;
• үзіліс көзiн табады;
• арнайы жүйелiк үзілістерді өңдейтін бағдарламаны шақырып орындайды;
• үзiлген бағдарламаның күйiн қалпына келтiредi және мүмкiндiк болса оның орындауын жалғастырады.
Үзілістің көзін табуда процессор қалпы регистрінің кейбір биттері талданып, сыртқы құрылғылардың қалпы тексеріледі және т.б. Үзілген бағдарламаның қалып-күйін сақтау үшін көбінесе стек қолданылады. Сонымен қатар, процессор стекті үзілістерді ұйымдастыру механизмі ретінде ғана емес, сондай-ақ, ішкі бағдарламаларға қатынау құралы ретінде және параметрлерді жеткізу, уақытша мәліметтерді сақтау үшін қолданылады.
Үзілісті өңдеуші бағдарлама үзілістің себебін тауып, қолданушыға түсінікті формада экранға шығарып беру және мүмкін болған жағдайда қолданушыға ұсыныс беруге тиіс. Осының бәрі 1-ші және 2-ші буын машиналарының бір-бірінен өзгеше болғанынан туындайды. Себебі, ол кезде көпшілік жағдайда қолданушы жүйелік бағдарламашының көмегінсіз үзіліс тудырған оқиғаның себебін біле алмайтын болған. Мұндай жағдайға шыдау дербес компьютерлердің қолданушылары үшін мүмкін емес еді. Үзілістерді өңдеу бағдарламасының анализаторы жетілдірілген сайын қолданушы интерфейсінің «татулық» деңгейі жоғары болады.