Жалпы қолданысты регистрлер
Жалпылама регистрлер программада арифметикалық және логикалық амалдардың операндтарын, адрестердің компоненттерін сақтауға арналған. Бұл топқа келесі сегіз регистр жатады:
Мәліметтер регистрлері | ||||
ЕAX | AH | AL | Аккумулятор | |
ЕBX | BH | BL | Базалық регистр | |
ЕCX | CH | CL | Есептегіш | |
ЕDX | DH | DL | Мәліметтер регистрі |
Индекстік регистрлер | |||
ЕSI | SI | Жібер-нің индексі | |
ЕDI | DI | Қабылдағыш индексі | |
ЕBP | BP | База көрсеткіші | |
ЕSP | SP | Стек көрсеткіші |
Әр регистрге 32 разрядты мән жазуға болады. Сонымен қатар регистрдің әр байтына жеке қатынауға болатын мүмкіндік бар. Мысалы, ЕAX регитстрі 32 разрядты, оның кіші жартысына қатынау үшін АХ деп аламыз. АХ -тің кіші байтына АL, ал үлкен байты АН деп қатынауға болады.
Мәліметтер регистрлерін кез келген арифметикалық логикалық және т.б. машиналық амалдарда қолдануға болады. Командаларда екіеселі сөз өлшемді мәліметермен амалдар орындағанда EAX, EBX, ECX, EDX, сөз өлшемді мәліметермен амалдар орындағанда AX, BX, CX, DX, ал байт өлшемді мәліметермен амалдар орындағанда АН, АL, ВН, ВL, СН, СL, DН, DL регистрлері қолданылады.
Сонымен қатар, бұл регистрлердің әр қайсысы арнайы бір жұмыстарға да бекітілген: кейбір командалар өздерінің операндтарының белгілі бір регистрлерде орналасыуын талап етеді. Мысалы, бөлу амалы үшін бірінші операнд (бөлінгіш) AX регистрінде, немесе ЕAX, немесе ЕАХ және ЕDX (операндтың өлшеміне байланысты) регистрлерінде орналасуы қажет, ал ЕСХ/СХ регистрі циклды басқару командаларында есептегіш ретінде қолданылады.
Регистрлерді олардың ең басты қолданыстарына байланысты былайша жіктеуге болады:
· ЕAX/AX/AH/AL (аккумулятор) регистрі aрифметикалық амалдарда қолданылады.
· EBX/BX/BH/BL (базалық регистр) регистрінде процедуралардың немесе айнымалылардың адрестері сақталады. Бұл мақсатта ЕSI/SI, EDI/DI, EBP/BP регистрлері де пайдаланылады.
· ECX/CX/CH/CL (есептегіш) регистрі циклдық командаларда қайталану санын есепке алу жұмысын атқарады.
· EDX/DX/DH/DL (мәліметтер регистрі) регистрі көбейту амалын орындағанда көбейтіндінің, ал бөлу амалын орындағанда бөлінгіштің бір бөлігін жазу үшін қолданылады.
Көрсеткіштер регистрі мәліметтер мен командалардың адрестерін есептеуде қолданылатын «ығысу» шамасын сақтайды. «Ығысу»- айнымалының, белгінің немесе команданың базалық сегментпен арасындағы қашықтықты көрсетеді. Оларға келесі екі регистр жатады:
· EBP/BP (база көрсеткіші) регистрі стек сегментінің төбесінен ығысуды сақтайды. Бұл регистр ішкі программаларда, шақырушы программаның стекке орналастыратын, айнымалылардың адрестерін анықтау үшін қолданылады.
· ESP/SP (стек көрсеткіші). Бұл регистр стек төбесінің ығысуынан тұрады. EBP/BP, ESP/SP регистрлері арқылы стек төбесінің толық адресі анықталады.
Келесі екі регистр индекстік регистрлерге жатады. Индекстік регистрлерді пайдалану жолдармен, массивтермен және басқа да жүйелі құрылымдармен жұмыс жасау жылдамдығын арттырады:
· ESI/SI (жіберушінің индексі). Тізбектік амалдарда жіберуші-тізбектегі кезекті элементтің индексін сақтайды.
· EDI/DI (қабылдағыштың индексі). Тізбектік амалдарда қабылдағыш-тізбектегі кезекті элементтің индексін сақтайды.
Регистрлердің машиналық командаларда қолданылу ерекшеліктерін білу, қажет болған жағдайда, программа коды сақталатын жадты ықшамды пайдалануға және алгоритмді тиімдірек жолмен программалауға мүмкіндік береді.
Сегменттік регистрлер
Intel процессоры программаның сегменттік ұйымдастырылуын қолдайды. Ол дегеніміз кез келген программа үш сегменттен - кодтар, мәліметтер және стек сегменттерінен - тұрады. Intel тобы процессорларының архетектурусында логикасы бойынша машиналық командалар әр команданы таңдағанда программаның мәліметтеріне немесе стекке қатынауда мәліметтерді нақтылы бір сегменттік регистрден пайдаланылады. Процессордың жұмыс режиміне байланысты олардың құрамы бойынша сәйкес сегменттер басталатын жадтың адресі анықталады. Intel тобы процессорының программалық моделінде, сегменттің төрт типіне қатынауға арналған, алты сегменттік регистр бар:
· Командалар сегменті программа кодынан тұрады. Бұл сегментке қатынау үшін CS–сегменттік регистрі қолданылады. Онда процессор қатынауға арналған машиналық командалар орналасатын сегменттің адресі жазылады.
· Мәтіметтер сегменті программаның өңдейтін мәліметтерінен тұрады. Бұл сегментке қатынау үшін DS –сегменттік регистрі қолданылады. Мұнда кезектегі программаның мәліметтері сақталатын сегменттің адресі жазылады.
· Стек сегменті. Бұл сегментке қатынау үшін SS –сегменттік регистрі қолданылады.
· Қосымша мәліметтер сегменті. Егер программаға бір мәліметтер сегменті жеткіліксіз болса, онда программаның үш қосымша мәліметтер сегментін пайдалану мүмкіншілігі бар. Бірақ негізгі мәліметтер сегментіне қарағанда ол регистрлерді пайдаланғанда олардың адрестері, арнайы сегменттерді анықтау префикстерінің көмегімен, айқын көрсетілуі керек. Қосымша мәліметтер сегменттерінің адрестері ES, GS, FS қосымша мәтіметтер регистрлерінде жазылады.
Бұл регистрлер ешқандай арифметикалық, логикалық және т.б. амалдарда қолданылмайды. Оларға тек мәліметтерді жазуға және олардан мәліметтерді оқуға ғана болады, онда да белгілі бір шектеулер бар.