7.2 Командалар жүйесі

 

Процессор орындай алатын командалар жүйесіне кірісейік. Машиналық команда операциялық және адрестік бөліктерден тұратынын білеміз. Операциялық команда мәліметтермен жасалатын әрекеттерді көрсетеді, ал адрестік команда ол мәліметтерді қайдан алу керектігін және нәтижені қайда орналастыру қажеттігін көрсетеді.

«Е97» командаларының құрылымын қарастырайық (7.5-сурет). Команданың әрбіреуі 4 биттен болатын 4 бөліктен құралады: МОД модификатор, КОП операция коды және 2 ОП1 және ОП2 операнда. Операндтар мен КОП мақсаты алдындағы тарауда көрсетілген. МОД қарастыратын болсақ, команданың жүзеге асу нұсқаларын көрсетеді. Мысалы, байтты немесе сөзді адрестеу, т.с.с.

Ең қарапайым команда форматы операция жоқ (коды 0) және тоқтау (коды F). 7.5 суретте көрсетілгендей мұндай командаларда КОП қатысқан, қалған 12 биттің мәні жоқ. Коды 0 мен В интервалындағы командалар екі адресті болып табылады. 7.1 суретінде көрсетілген бөлімге сәйкес келеді. Оларға:

1 – тіркеу

2 – қосу

3 – алу

4 – салыстыру

6 – бөлу

7 – логикалық «және»

8 – «немесе»

9 – «емес»

А – порттан енгізу

В – порттан шығу

 

…….  
…….  
КОП
…….

а) (КОП = 0, КОП = F)

 

 

б) (КОП = 1-В)

 

 

в) (КОП = С)

 

 

г) (КОП = D)

 

 

д) (КОП = Е)

 

7.5-сурет. «Е97» процессорының командалар форматы

 

Тіркеу әдісі келесідей орындалады: ОП1 ақпарат оқылады және ОП2-ге көшіріледі. Портқа енгізу мен шығару осыған сәйкес жұмыс жасайды. Тек порт нөмірі ретінде операндтардың бірі көрсетіледі. Барлық басқа 2-9 кодты екі адресті командалар әмбебап сұлбамен орындалатын 2 мәліметпен әрекет етеді. Ол:

ОП2 әрекет ОП1 =>ОП2

Мысалы, бөлу командасында процессор ОП2 алып, оны ОП1-ге бөледі және ОП2-ң алғашқы мәнінің орнына орналасады.

Салыстыру командаларының аз ғана ерекшелігі бар. Оның орындалуы кезінде ОП2-ОП1 айырмасы есептеледі, бірақ нәтиже ешқайда сақталмайды.

Арифметикалық әрекеттер бүтін сандармен жүзеге асады және олардың нәтижелері «16-битті таңбасы бар бүтін сан» форматында болады. Бөлу кезінде бүтіннің бөлігі пайда болады. Нақты сандармен әрекеттер бағдарламалық жолмен жүзеге асады (сәйкес бағдарламалар мысалы, бір ТЕСҚ-на орналасуы мүмкін).

Енді өту командаларын қарастырайық. Олар абсолютті және салыстырмалы болады. Осыған сәйкес «Е97» процессорінде С және D әрекет коды бар 2 түрлі өтулер бар. Олардың форматтары 4.20 в, г суреттерінде көрсетілген.

Коды С-ға тең абсолют өтуді қарайық. Егер процессор бағдарламадан екі сөзден тұратын команда кездестірсе

1C0D

0056,

онда келесі 56 адресті команда орындалады. Өту адресі команданың өзінен алынады. 1C0D командасында үлкен он алтылық сан- модификатор болып табылады және ол шартсыз өтуге сәйкес келеді. С-әрекет коды. 0-қолданылмайтын сан. D-көрсетілген адрес келесі сөзде сақталатындығын көрсететін операнд. Ол 1C0D бүтін бөлігін құрайды.

Коды D-ға тең салыстырмалы өтуді қарастырайық. Мысал ретінде келесі команданы алайық:

1D06,

Бұл команда 42 адресті жадыда сақталған болсын. Процессор жұмысының негізгі алгоритміне сәйкес қарастыратын команда таңдалған соң РС команда адресінің санауышы автоматты түрде 44-ке артады. Сонан соң өту командасын шифрлеп процессор 06-ға ығысқан PC-дің ағымдық мазмұнына келеді және 44+6=4А адресіне өтуді жүзеге асырады. Салыстырмалы өту кезінде нәтиже адресі ЖЕСҚ-ға өту командаларының орналасуына байланысты.

МОД командасы өту қандай шарт бойынша жүзеге астындығын көрсетеді. «Е97»-де қолданылатын барлық модификатор мәндері төменде көрсетілген:

0-бағдарлама астарынан қайта оралу;

1-шартсыз өту;

2-N=0(≥0);

3-N=1(<0);

4-Z=0(≠0);

5-Z=1(=0);

6-N=1 or Z=1(≤0);

7-N=1 and Z=0(>0);

9-бағдарлама астарын шақыру.

Шартты өтумен жұмыс жасау үшін келесі ережелерді есте сақтау қажет:

«Егер талданушы шарт ақиқат болса немесе басқарушының анықтау күйі талапқа сай болса, онда өту орындалады. Керісінше жағдайда ешқандай әрекет болмайды және процессор келесі команданы таңдайды»

Командалардың соңғы тобы – ығысуды қарастырайық. Олардың коды ЕА-ЕС. Олардың барлығы ОП1 кодын ДКОП мәніне байланысты бір разрядқа солға немесе оңға ығыстырады. Солға ығысу көбейтуге, ал оңға ығысу 2-ге бөлуге сәйкес келеді.

ЕС командасы арифметикалық ығысу деп аталады, ол ЕВ қарапайым ығысуына қарағанда үлкен таңбалық разряд арифметикалық ығысу кезінде өзінің мәнін сақтап қалады. Мысалы:

ОП1 –дің шығыс мәні: 1111 0000 1111 0000

ЕВ командасының нәтижесі: 0111 1000 0111 1000

ЕС командасының нәтижесі: 1111 1000 0111 1000

Арифметикалық ығысу теріс санды бөлу үшін қажет, себебі үлкен разрядта бірлік автоматты түрде теріс таңбамен сақталады.

 

7.3 Мәліметтерді адрестеу

 

ОП1 және ОП2 операндаларды қарастырайық. Әрдайым әрбір операндты кодтауға төрт екілік разряд бөлінеді, Олардың екі үлкені мәліметтердің адрестеу типін береді, ал кішілері оны анықтайды. Көпшілік жағдайда екі кіші биттер адрестеу жүзеге асатын регистр номерін береді.

Адрестеу типіне сәйкес оператор модификаторының үлкені төрт қайталанбайтын екілік комбинациядан құралады:

00 – адрестеудің регистрлеу әдісі: операндасы болып көрсетілген регистрдің мазмұны саналады;

01 – қосалқы адрестеу әдісі: адресі көрсетілген регистрде берілген ЖЕСҚ ұяшығының мазмұны операнд болып табылады;

10 – қор; адрестеудің индекстік әдісі қолданылады;

11 – РС команда адресінің санауышы: командаға кіретін ақпаратты қолданудан операнд алынады.

Қарапайым адрестеу әдісі болып регистрлік әдіс саналады. Бұл әдіске үлкен биттің нөлдік мәні сәйкес келеді. Операнданың толық коды регистр нөмеріне сәйкес келеді: 0000 екілік комбинациясы R0-ге, 0001-R1-ге және т.с.с. сәйкес келеді.

Әрекетке мәліметтер ретінде көрсетілген регистрдегі ақпарат қолданылады. Мысалы, егер R1=3, ал R2=5 болса, онда нәтижесінде келесі команда орындалады:

0212:R2+R1=>R2

нәтижесі R2=8 болады.

Қосалқы адрестеу кезінде операнд коды күрделі болады: қосалқы қатынасу R0 регистрі бойынша 0100 (4) болады, ал R1-0101(5) және т.с.с. Көрсетілген регистр мазмұны операнд емес, оның ЖЕСҚ адресі болады. Келесі команданы қарастырайық:

0263: R3+(R2)=>R3

мұндағы R2 жақшасы қосалқы адрестеуді сипаттайды. R2 мазмұны 30 ға тең, ал R3=6. 30-ші адресті жады ұяшығында 10 саны сақталған. «Е97» процессоры команданы орындау кезінде R3-тегі 6 мәніне R2 көрсеткен 30-шы ұяшықтағы санын қосады және әрекет нәтижесін R3 – ке 16 деп еңгізеді.

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

11 00 – қор;

11 01 – команда құрамындағы тұрақты операнд болады;

11 10 – операнд командаға кіретін адрес ЖЕСҚ-ның алынады;

11 11 – қор.

«Е97» РС бойынша D және E оналтылық кодына сәйкес адрестеудің екі әдісі бар. Мысалы, екі сөзден құралған команданы алайық:

02D1

0020.

R1+20=>R1 әрекеті келесідей орындайды: R1 ағымдық мәніне командадан алынған 20 саны қосылады және нәтиже R1-ге орналасады. Егер R1-дің алғашқы мәні F0 болса, онда әрекет нәтижесі R1 –ге 110 болып жазылады.

РС адрестеуімен тағы бір команда жазайық:

021Е

0020.

(20)+R1=>(20) әрекетін келесідей орындайды: 20-шы жады ұяшығында сақталатын санға R1 мәні қосылады. Егер R1=F0, онда (20)=40 нәтиже (20)=130 болады.

Модификатор төрт биттен құралады, екі үлкені байт/сөзді айырып қосуға, ал екі кішісі «қысқа тұрақты» деп аталатын әдіспен мәліметтерді беруге жауап береді. Көптеген командалар мәні модулі бойынша 15-тен аспайтын кішкене тұрақтылармен жұмыс жасайды. Мұндай тұрақтылар ОП1-дегі алынған төрт битке орналаса алады. «Е97»-де мұндай мүмкіндікті жүзеге асыру үшін 0 және 1 екі кіші бит модификаторлары қолданылады. Олар арқылы процессор «қысқа тұрақтыны» анықтай алады. Бұл жағдайда ОП1 мәні екілік сан ретінде қарастырылады, ал модификатордың 0-і биті оның таңбасы болады. Мысалы:

25А3:R3*10=>R3

немесе

3653:R3/(-5)=>R3.

Көрсетілген мысалдардан «қысқа тұрақтылы» әрекет бір сөзді ғана алады. Мұндай әдіс мынадан бұрын айтылған РС бойынша адрестеу әдісіне қарағанда үтымды болып келеді.

«Қысқа тұрақтылы» әрекет процессор командасының жүйесін жеңілдетеді. Мысалы, бағдарламаларда мәліметтерді бірлікке көбейту немесе азайту командалары қажет болады. Кез келген процессорда мұндай жағдайда IMC және DEC деп аталатын арнайы командалар болады. «Е97»-де бұл командалар «қысқа тұрақтылы» әрекетінің жеке жағдай ретінде қарастырылады.

 

7.4 Сыртқы құрылғылармен жұмыс

 

Енгізу-шығаруды синхрондау күрделі мәселе және сыртқы құрылғының түріне байланысты болады. «Е97»-де күй регистрі өте қарапайым құрылған: онда дайындық биті деп аталатын орындау биті бар. Бұл компьютерде дайындық биті күй регистрінің жетінші разрядында орналасады.

Барлық порттар 16-разрядты болады, бірақ ақпарат олардың кіші байтында орналасады. Шығыс порттарға 8-ден 15-ке дейінгі биттер мазмұны формальді еңгізіледі, бірақ шығару құрылғысына әсері болмайды.

Әрбір портқа өзіндік нөмір (адрес) сәйкес келеді. «Е97»-де оналтылық разрядтан келесі порттар қолданылады:

0 – пернетақта күйінің порты (тек оқуға арналған);

1 – пернетақта мәліметінің порты (тек оқуға арналған);

2 – дисплей күйінің порты (тек оқуға арналған);

3 – дисплей мәліметтерінің порты (тек оқуға арналған).

Енгізу-шығару порттарын қолданып, мәлімет алмасудың стандарт алгоритмі келесідей болады. Күй порты оқылады және таңбалық биттің кіші байтының мәні тексеріледі. Бұл әрекет дайындық биті сыртқы құрылғымен бір ретінде берілгенше қайталана береді. Сонан соң егер ол шығару құрылғысы болса процессор мәліметтер портына ақпарат жаза алады, ал енгізу құрылғысы болса порттан оқи алады.

Дисплейге R0-ден бірлік символды шығару бағдарламасы осылай болады.

0А21 порт2=>R1

E401 0 R1b мен салыстырылады

2DFA егер >=0, PC – 6 (тексеруді қайталау)

0B03 R0=> порт3

Алдыңғы үш команда порт2-дегі дайындық битін оқиды және тексереді, ал соңғы команда дисплейге қажет символдың шығарылуын қамтамасыз етеді.

Кіші байт разрядының таңбасын міндетті түрде тексеретін 0 «қысқа тұрақтылы» командасына назар аударыңыз.

Символды енгізу процедурасы да шығару процедурасына сәйкес болады.

7.5 Бағдарлама мысалдары

 

1-мысал. А, В және С қыры бар параллелепипедтің толық бетін табыңыз. Шығыс мәндер ЖЕСҚ-ң ұяшығында болсын. Нәтижені жады ұяшығына орналастырыңыз.

Шешімі. Параллелепипедтің толық беті келесі формула бойынша есептеледі:

S=2*(A*B+A*C+B*C)

Өрнекті ықшамдап келесі түрге келтіреміз: S=2*[A*(B+C)+B*C]

134 бағдарлама

0000 01ЕО (22) => R0 В => R0

0002 0022

0004 0101 R0 => Rl В => Rl

0006 02Е0 R0 + (24) => R0 В + С

0008 0024

000А 05Е0 R0 * (20) => R0 A * (В + С)

000С 0020

000Е 05Е1 Rl * (24) => Rl В * С

0010 0024

0012 0210 R0 + Rl => R0 A * (В + С) +

В * С

0014 0200 R0 + R0 => R0 2 * [A * (В + С)

+ В * С]

0016 010Е R0 => (26) нәтиже => S

0018 0026

001A 0F00 тоқтау

……….

0020 0002 А

0022 0003 В

0024 0004 С

0026 0034 S

Ескерту! Нәтиже 34 ЭЕМ жадысында оналтылық жүйеде берілетінін ұмытпаңыз. Ондық жүйеде 52 саны шығады.

 

2-мысал. Латын әріптерін әрдайы үлкен түрінде енгізуді ұйымдастыру.

Шешімі. Бас әріп пен кіші әріптердің айырмашылығын тауып алайық. Ол үшін ASCII кестесінен кез келген бас және кіші әріпті таңдап екілік жүйеде кодтайық. Мысалы, R әріпі үшін

R 0101 0010

r 0111 0010

Осы әрекетті тағы бірнеше әріптер үшін қайталап мынадай қорытындыға келеміз: егер кіші битті 0 деп есептесе, онда бас және кіші әріптер бес битпен ерекшеленеді.

Сонымен біздің есепте бестен басқа барлық биттерді сақтау керек. Ол үшін тұрақтысы бар ЖӘНЕ әрекетін орындау керек.

1101 1111 =DF,

сонан соң әрбір код бізге қажеті жоқ биттен басқаларын сақтап отырады.

 

135 бағдарлама

0000 0E6D 26 => SP стек көрсеткішін

орнату

0002 0026

0004 9C0D 40FE шақыру символды енгізу

0006 40FE

0008 0101 R0 => Rl еңгізілген символды

сақтау

000A 07D0 DF and R0 => R0 әріпті үлкен жасау

000C 00DF

000E 9C0D 4088 шақыру нәтижені шығару

0010 4088

0012 0F00 тоқтау

3-мысал. R1, R2 және R3 регистрларында сақталған сандардың үлкенін табу. Нәтижені R0 жазу керек.

Шешуі. Алдымен R1және R2 сандарының үлкенін тауып, R0 енгізейік. Сонан соң егер R3 R0-ден үлкен болса жауап ретінде R3-ті жаамыз.

 

136 бағдарлама

0000 0412 R2-ді Rl-мен салыстыру

0002 3D04 егер < 0, онда РС=РС+4

жазбаға Rl (0008)

0004 0120 R2 => R0 R2 сақтау

0006 1D02 РС=РС+2 екінші тармаққа

өту (000A)

0008 0110 Rl => R0 Rl сақтау

000A 0403 R3-ді R0-мен салыстыру

000C 3D02 егер < 0, онда РC=РС+2 шығысқа (0010)

000E 0130 R3 => R0 R3 сақтау

0010 0F00 тоқтау

 

7.6 Е-97 бойынша кейбір анықтама мәліметтер

А. Процессордың командалар жүйесі

МОД   коп   ОП1   ОП 2   Түсініктеме  
х   0   X   X   әрекет жок  
х   1   X   X   оп l => oп 2  
х   2   X   X   oп 2 + oп 1 => oп 2  
х   3   X   X   oп 2 – oп l =>oп 2  
х   4   X   X   oп 2 + oп 1 (салыстыру)  
х   5   X   X   oп 2 * oп l => oп 2  
х   6   X   X   oп 2/oп l => oп 2  
X   7   х   х   оп 2 AND oп 1 => oп 2  
X   8   х   х   oп 2 OR oп l =>оп 2  
X   9   х   х   oп 2 XOR oп l =>oп 2  
X   А   х   х   порт! => oп 2  
X   В   х   х   oп 1 => порт 2  
X   С   х   х   Адрес бойынша өту  
X   D   X   х   Ығысу бойынша өту  
X   Е   *   х   (Бір адресті әрекет)  
X   F   X   х   Тоқтау  

 

МОД коп ОП1 Түсініктеме
х   Е1   х   NOT oп l  
х   Е2   х   оп 1 => стек  
х   ЕЗ   х   стек => oп l  
х   Е4   х   SP + oп l => SP  
х   Е5   х   SP – oп 1 => SP  
х   Е6   х   Oп 1 => SP  
х   Е7   х   SP => oп l  
х   Е8   0   PS => стек  
х   Е9   0   стек => РS  
х   ЕА   X   oп l солға ығысу  
х   ЕВ   X   oп l оңға ығысу  
х   ЕС   X   oп l арифметикалық оңға ығысу

 

Б. Ығысу үшін МОД модификаторының екілік коды

0000 - бағдарлама астарынан қайта оралу

0001 - өту

0010 - N=0 (>=0)

0011 - N=l (<0)

0100 - Z=0 (<>0)

0101 - Z=l (=0)

0110 - N=1 or Z=l (<=0)

0111 - N=0 and Z=0 (>0)

1001 - бағдарлама астарын шақыру

В. «Тұрақты» маңызды командалар

XX 10 0001 0000 ХХХХ - oп l тазарту

ХХ 10 0010 0001 ХХХХ - оп 1-ге +1

XX 11 0010 0001 ХХХХ - ****

немесе

ХХ 10 0011 0001 ХХХХ - oп l-ден -1

XX 10 0100 0000 ХХХХ - oп 1 мен 0-ді салыстыру

XX 11 0101 0001 ХХХХ - *(-1) оп1

ХХ 10 0111 0001 ХХХХ - oп l MOD 2 = => oп l

Г. Операндтарды кодтау

0   0000   R0       1000   қойма  
1   01   R1       01   қойма  
2   10   R2       10   қойма  
3   11   R3       11   қойма  
4   0100   (R0)       1100   қойма  
5   01   (R1)       01   тұрақты  
6   10   (R2)       10   ЖЕСҚ адресі  
7   11   (R3)       11   қойма  

 

Бақылау сұрақтары мен тапсырмалар

1. Е97 оқу компьютерінің қызметтік құрылғыларын атаңыз.

2. Процессор ішкі бағдарламаға қалай қатынас жасайды?

3. Енгізу-шығару порты деген не?

4. Регистр қандай рөл атқарады?

5. Кодтаудың қандай түрлері қарастырылған?

 

Тестілер

1. BIOS (Basic Input Output System) қай тілде қысқартылған сөздер?

а) ағылшын тілінен, енгізу-шығарудың базалық жүйесі

ә) латын тілінен, сыртқы құрылғыларды тестілеу жүйесі

б) орыс тілінен, компьютер құрылғыларын бақылау

2. Оқу микрокомпьютерінің сыртқы құрылғылар контроллерін қарастырғанда енгізу-шығару порттарына қайсысы сәйкес келетін портқа жатпайды?

а) берілгендер регистрі

ә) күй регистрі

б) санау регистрі