Ысқаша теориялық мәліметтер. Жұмыстың мақсаты Ассемблерде жұмыс жасау үшін қажетті негізгі ұғымдармен танысу
Жұмыстың мақсаты
Жұмыстың мақсаты Ассемблерде жұмыс жасау үшін қажетті негізгі ұғымдармен танысу.
ысқаша теориялық мәліметтер
Процессор деген не?
Ассемблер не екенін білу үшін процессор ұғымын түсінуіңіз кажет. Сурет1 –де процессордың әрекеттесуінің қарапайым схемасы көрсетілген.
Сурет 1 – Әрекеттесу схемасы
Процессорларда ең бастысы регистрлер. Регистрлер триггерлерден тұрады. Триггер екі мән қабылдайды: 0 және 1. Регистрлер 8, 16, 32, (64) разрядтық болады, егер 8 разрядтық регистр болса, онда оның құрамында 8 триггер бар дегенді білдіреді. Регистрлер аралық ақпараттық сақтауға қолданылады, кейбір регистрлер тек белгілі бір ақпаратты сақтайды. Сонымен қатар енгізу шығару порттары болады. Сыртқы құрылғыларға қол жеткізу үшін енгізу шығару порттары қолданылады, олар енгізу шығару контроллерлерін қолданады.
Процессор құрамына, арифметико-логикалық құрал, басқару құралы және регистрлер тобы (локалді жады) кіреді (2 сурет). Процессордың регистрі дегеніміз, процессор құрамын еңгізілген, жедел сақтау жад түрі.
Сурет 2 – Процессор құрамы
АЛҚ – процессордың арифметикалық пен логикалық есептерін шешетін бөлігі. АЛҚ акпаратты өңдеудің негізгі операцияларын басқарады. АЛҚ негізін бірізді тасымалы бар сумматор құрайды. Сумматор дегеніміз екілік сандарды қосуға арналған, жартылай өткізгішті схема. Бір секунд ішінде мыңдаған, миллиондаған операциялар орындалады. Қосу, алу, көбейту, бөлу – АЛҚ ең қарапайым орындайтын операциялары.
БҚ – процессордың барлық бөліктеріне керекті уақытта, алдында орындалған операциялар нәтижесіне және операция түріне байланысты, басқару сигналдарды жібереді; орындалып жатқан операцияның алып жатқан жадының адрестерін құрап, процессордың арнайы бөліктеріне береді. БҚ құрамында командалар регистрі, командалар дешифраторы, және құрамында басқарушы жады , басқару құралы бар.
Регистр – ЖСҚ бір түрі. Процессордың регистрлік жады ең үлкен жылдамдық шапшаңдығына ие, сондықтан оны өтежедел СҚ деп атайды. Оның ақпараттық көлемі өте аз. Әрбір регистр, басқаларда жоқ, белгілі бір қасиеттерге ие.
Intel технологиясы бойынша құрылатын микропроцессорларда келесі регистр түрлері болады(9.2 суретті қара):
– жалпы тағайындалған регистрлер (жалпы мағлұматтар мен адрестер регистрлері);
– командалар (инструкциялар) көрсетуші;
– сегменттер регистрі;
– жалау регистрлері;
– басқарушы регистрлер;
– жүйелік адрестік регистрлер;
– алып қоюға арналған регистрлер;
– тестілеу регистрлері;
– модельді-арнайы (процессордың белгілі бір түріне байланысты)
регистрлер.
Алдында жазынған бағдарламалар қазіргі компьютерде істей алу үшін, процессор бірнеше режимде жұмыс істей алуы мүмкін:
- нақты режим;
- қорғалған режим;
- виртуалды режим.
Нақты режим 8086/8088 процессорлар мүмкіншілігіне сәкес келеді және тек 1 Мб жад адрестей алады. Алдындағы бағдарламалар жұмыс істей алу үшін, кейінгі процессорлар, соның ішінде Pentium, MS-DOS операциялық жүйесімен нақты режимде жұмыс істейді. Осында, әрине процессордың барлық мүмкіншілігі іске асырылмайды.
Қорғалған режим ең алғаш 80286 процессорында пайда болды. Осы режимде ОП 15Мб-қа дейін физикалық, 1 Гб дейін виртуалді жадты адрестей алады. Егер физикалық жады толса, сыймаған ақпарат сыртқы жадқа сақталынады. Сонда, процессор нақты адрестермен емес, арнайы кестелермен басқарылатын, акпаратты табу үшін, виртуалді адрестермен жұмыс істейді.
x86 процессорлары
x86 процессорлары 8086, 80186, 80286, 80386, 80486, 80586 және т.б. болады. 8086-80286 процессорлары 16- разрядты, ал ары қарай 32 разрядттық болады. 80386 процессорына тоқталайық, қалған процессорлар бір-бірінен көп өзешеліктері жоқ.
Жалпы мақсаттағы регистрлер - EAX, EBX, ECX, EDX 32 биттік регистрлердің кіші бөлімі AX, BX, CX, DX деп аталады, олар 16 биттік, әр регистр 2 бөлікке бөлінеді: кіші AL, BL, CL, DL, үлкен AH, BH, CH, DH. Жалпы мақсаттағы регистрлер деректер операцияларын, яғни жадыға деректерді жазу, математикалық операциялар және салыстыру сияқты операцияларды қолданады. СХ(ECX) регистрі көбінде циклдерде санауыш (счетчик) ретінде қолданылады.
Сегметтер регистрлері - бұл CS, DS, ES, FS, GS, SS. Бұл регистрлер 16 биттік, және өзінде адрестің "оффсет:сегмент" бірінші бөлігінен тұрады. Оффсет ресгитрлері - EIP, ESP, EBP, ESI, EDI. Бұл регистрлер 32 биттік, төменгі бөлігі IP, SP, BP, SI, DI регистрлері ретінде қол жетімді. EIP - командалардың сілтеуіші, келесі орындалатын кодтың код сызығына сілтемеден тұрады. Яғни, келесі орындалатын код сызығының толық адресі CS:IP (CS:EIP) болады.
ESP регистрі стектің төбесінің адресіне сілтейді. ЕВР регистрі стекке ақпаратты енгізетін немесе жоятын жеріннен басталатын адресті көрсетеді. ESI регистрі – дереккөзінің адресі, және «блокты жылжыту» операциясы үшін ақпарат блогінің басы адресінен тұрады (толық адрес DS:SI), ал EDI регистрі – бұл операциядағы мақсатты адрес (толық адрес ES:EDI).
Стек деген не? Стек (англ. stack — стопка) — LIFO (англ. last in — first out, «соңғы келген-бірінші шығады») принципі бойынша ұйымдастырылған элементтер тізімінен тұратын деректер құрылымы. Көбінде бұл принципін түсіндіру үшін тәрелке бағанымен салыстырады: «жоғарыдағы екінші тәрелкені алу үшін оның үстіндегісін алу керек».
Сурет 3 – Стектің ұйымдастырылуы
Процессор 80386+ (қосу белгісі басқа да процессорлар дегенді білдіреді) 2 режимде жұмыс жасайды: нақты және қорғаулы. Қорғаулы режимде 32 разрядтық регистрлер мен инструкциялар қол жетімді. Win32 80386+ процессорлардың қорғаулы режимінде жұмыс жасайды. DOS нақты режимде жұмыс жасайды. DOS - та 32 биттік регистрлер.
Алдында орындалған операциялар нәтижесін білу үшін «жалау» регистрлері болады. Ол 16 биттік. Әр бит белгілі бір «жалауды» білдіреді. Жалау регистрлерінде толу, теріс нәтиже, оң нәтиже, үзілу, тасымалдау тыйымы және т.б. деген флагтар бар.