Күй және басқару регистрлері

Процессорға әрқашан процессордың өзінің де және осы сәтте ол командасын өңдейтін программалардың да күйлері жайлы мәліметтерді сақтайтын екі регистр енгізілген:

· ЕІР/ІР команда көрсеткіші регистрі;

· ЕFLAGS/ FLAGS жалаушалар регистрі.

ЕІР/ІР команда көрсеткіші регистрінде әрдайым келесі орындалатын команданың адресі сақталады. Дәлірек айтсақ, CS сегменттік регистрінде көрсетілген сегменттің басынан басталып есептелген команданың ығысуы тұрады. Сол себепті команданың абсолюттік адресі CS және ЕІР/ІР регистрлерімен анықталады:

d CS® d  
  ЕІР/ІР ®  
   

 

 

ЕІР/ІР

 

 

ЕFLAGS/ FLAGS жалауша регистрі 32(16) разрядтан тұрады. Оның әр биты процессордың белгілі бір жұмыстарының күйін анықтайды да, сәйкешінше 0 немесе 1 мәнін қабылдайды, жалауша деп аталады (1.1 –кесте).

1.1 -кесте. 32- разрядты процессордың жалаушаларының сипаттамасы

Жалауша аты Анықтамасы Бит Күйі және міндеті
CF Тасымалдау жалаушасы Егер таңбасыз сандарды қосқанда жоғарғы разрядқа тасымалдау жасалса (ұяшыққа симаса) онда мәні 1, ал жасалмаса мәні 0. Операндтардың өлшімдеріне сәйкес жоғарғы разряд 7 -ші,15- ші және 31-ші бит
PF Жұптық жалаушасы Кезекті команданың нәтижесінің 8 кіші биттарында екілік бірлер саны жұп болса, мәні 1-ге тең. Әдетте енгізу-шығару амалдарында ескеріледі.
AF Қосымша тасымалдау жалаушасы Екілік-ондық сандар мен амалдар орындау ерекшеліктерін ескереді.
ZF Нөлдік жалаушасы Команданың нәтижесі нөл болғанда мәні 1.  
SF Таңба жалаушасы Таңбалы сандармен амалдар орындағанда нәтиже теріс болғанда мәні 1.  
DF Бағыттыу жалаушасы   Байттар тізбегінің қарастырылу бағытын анықтайды: егер оңға қарай қарастырылса DF=0, ал солға қарай қарастырылса DF=0 .
OF Толып кету (Толу) жалаушасы Таңбалы сандармен амалдар орындағанда пайдалы. Мысалы, таңбалы сандарды қосуда немесе алуда нәтиже модулі бойынша мүмкін шамадан асып кетсе мәні 1, әйтпесе 0.
IOPL Енгізіу-шығару деңгейін анықтау 12,13 Процессордың қорғалу режимінде есептердің орындалу ретіне байланысты енгізу –шығару командаларына қатынауды бақылауда қолданылады.
NT Қаптамалы есептер жалаушасы Процессордың жұмысының қорғалу режимінде есептердің қаптамалы орындалу фактысын бекітеді.
TF Трассировка жалаушсы Процессордың жұмысының қадамдап ұйымдастырылуына арналған: 1 – әр машиналық команда орындалғаннан соң процессор үзілім (1 нөмірлі) жасайды. 0– процессордың қалыпты жұмысы.
IF Үзілім жалаушасы Аппараттық үзілімге (INTR кірісі бойынша үзілім) тыйым салынуға (жасырыну) немесе рұқсат етілуге арналған: 1 – аппараттық үзілімге рұқсат етілген; 0 – аппараттық үзілімге тыйым салынған.
RF Жаңарту жалаушасы Жөндеу регистрі бойынша үзілімді өңдеуге арналған.  
VM 8086 виртуальды режимі жалаушасы Процессордың 8086 виртуальды режимде жұмыс жасау белгісі: 1- процессор 8086 виртуальды режимде жұмыс жасайды. 0- процессор қалыпты немесе қорғалу режимде жұмыс жасайды
АC Туралауды бақылау жалаушасы Жадқа қатынау барысында туралауды бақылауға рұқсат етуге арналған.
VIF Виртуальды үзілім жалаушасы Белгілі бір жағдайларда (олардың бірі - процессордың V режимдегі жұмысы) IF жалаушасының баламасы болып табылады. VIF жалаушасы VIP жалаушасымен қоса қолданылады. Жалауша Pentium процессорында пайда болды.
VIP Кейінге қалдырылған виртуальды үзілімдер жалаушасы Кейінге қалдырылған үзілімдерді көрсету үшін мәні 1 болады. V режимде VIF жалаушасымен қоса қолданылады. Жалауша Pentium процессорында пайда болды.
ID Идентификациялау жалаушасы Процессордың CPUID командаларын қолдайтындығын көрсету үшін қолданылады.

 

ID VIP VIP AC VM RF NT IOPL OF DF IF TF SF ZF AF PF CF
                                               

FLAGS/ ЕFLAGS регистрініңжалаушаларын қолдану ерекшетіктеріне байланысты үш топқа бөлуге болады.

Бірінші топқа 8 күй жалаушасы (CF, OF, ZF, SF, PF, AF, IOPL, NT) кіреді. Бұл жалаушалар машиналық командалар орындалғаннан соң өзгеруі мүмкін. ЕFLAGS/FLAGS регистрінің күй жалаушалары арифметикалық және логикалық амалдардың нәтижелерінің ерекшеліктерін көрсетеді. Бұл жағдай есептеу процесінің күйін талдап, оған шартты өту және ішкі программаларды шақыру командалары арқылы әсер етуге мүмкіндік береді.

ЕFLAGS/FLAGS регистрінің жалаушаларының екінші тобына бір ғана DF бағыттау жалаушасы жатады. Бұл жалауша байттар тізбегін өңдеу командаларында қолданылады. Жалаушаның мәні командаларда байттар тізбегінің қарастырылу бағытын анықтайды: егер тізбектің басынан оңға қарай қарастырылса DF=0, ал, керісінше, соңынан бастап солға қарай қарастырылса DF=0.

ЕFLAGS/FLAGS регистрінің жалаушаларының үшінші тобына 8 жүйелік жалаушалар (IF, TF, RF, VM, AC, VIF, VIР, ID) кіреді. Бұл жалаушалар үзілімдерлі, жөндестіру процесін, есептерді ауыстыруды және 8086 виртуальды процессорының режимдерін басқарады. Қолданбалы программаларда бұл жалаушаларды, аса бір қажетті жағдайда болмаса, өзгертпеген жөн, себебі бұл жалаушаларды өзгерту көбіне программаның жұмысының үзілуіне әкеледі.

Дәріс №2

Тақырыбы: Ассемблер тілінің негізгі элементтері.

Жоспары. Лексемалар. Идентификаторлар. Бүтін сандар. Сөйлемдер және олардың түрлері мен құрылымдары. Коментарилер. Командалар. Директивалар. жазылады.

DB, DW, DD, EQU директивалары. Эквиваленттілік және меншіктеу директивалары. Өрнектер.Тұрақтылық өрнектері. Адрестік өрнектер.

Машиналық тілде программалау күрделі. Оның бір себебі – командалардың цифрлық формада жазылуы. Ал адамдарға символдық белгілеулер көрнектілеу. Сол себепті машиналық программаларды құруды жеңілдету құралдары ойластырылған. Бұл - машиналық тілдің символдық формада жазылуы болып табылатын, ассемблер тілі: онда амалдардың цифрлық кодтарының орнына үйреншікті амал белгілері немесе олардың сөздік атаулары, адрестердің орнына – атаулар жазылады, ал тұрақтылар ондық жүйеде жазылады. Бұл түрде жазылған программаны компьютерге енгізіп, оны машиналақ тілге аударатын, ассемблер деп аталатын арнайы трансляторға жіберіледі. Сонан соң жасалған машиналық программа орындалады.

Сонымен ассемблер тілінде жазылған программа екі сатыда орындалады: алдымен трансляцияланады; сонан соң есептеу жүреді. Бұл жұмысқа уақыт көбірек кетсе де адамдар осы жолды қалайды. Өйткені ассемблер тілінде программа құру машиналық тілге қарағанда жеңілірек. Сондықтан қазіргі кезде, егер машиналық программа жазу керек болса, оны машиналық тілде жазбай ассемблeр тілінде жазады.

Ассемблер тілінің синтаксисін сипаттауда келесі толықтырулармен Бэкус – Наура ( БНФ ) формуласын қолданамыз:

· міндетті емес конструкцияларды квадраттық жақшада көрсетеміз. Мысалы: А [В] С – АВС немесе АС –ні дегенді білдіреді.

· бірнеше рет қайталануы мүмкін конструкцияларды фигуралық жақшаға аламыз. Мысалы, А{ВС} келесі мәтіндердің кез келгенін білдіреді: А, АВС, АВСВС, АВСВСВС т.с.с.