Регистри за асемблиране: типове, функции и характерни команди

Процесорните клетки, наричани още асемблерни регистри, заради езика за програмиране на ниско ниво, който ги управлява език за програмиране Регистърът представлява определен блок от свободни елементи в паметта. Те са характерна особеност на Регистри на асемблера: видове, предназначение и функции на инструкциите са изключително бърз достъп до паметта. Регистрите се използват най-често по време на изпълнението на командите на процесора и не са достъпни за програмиста. Например, когато номер на инструкция се извлича от съществуваща свръхбърза памет, нейният двоичен код се записва в регистър.

Не е възможен директен достъп до регистъра. Освен това има редица налични блокове памет, но достъп до тях може да се осъществи само от обвивката операционна система. Такива регистри включват контролни регистри, както и сенчести дескрипторни системи. Само разработчиците на операционни системи използват тези регистри в работата си.

Структура на регистъра на асемблера

Видове регистри

Различните регистри на Асемблер се използват за различни нужди по време на програмирането. Те се използват в зависимост от целта на. Например регистърът на брояча се използва за организиране на прости и вложени цикли. Изброени по-долу основни видове Регистри на асемблера:

  • Регистри с общо предназначение.
  • Индексни регистри.
  • Регистри на указатели.
  • Сегментирани блокове памет.
  • Регистри на флаговете.

Почти всички регистри заемат 32 бита в паметта. Тоест те могат да съдържат числа от нула до 4294967295. Някои от регистрите са разделени на няколко части по 16 и 8 бита. Тя позволява да се контролира част от блока памет или цялата клетка памет, като се записва само част от данните в нея.

Команди за управление на паметта

Регистрите на асемблера се наричат според функцията, която изпълняват:

  • EAX - регистър на акумулатора;
  • EBX - База;
  • ECX - Брояч - отговаря за броенето;
  • EDX - Data - Блок от клетки с данни;
  • ESI - Индекс на източниците;
  • EDI - Индекс на местоназначението - регистър на приемника;
  • ESP - Указател на стека;
  • EBP - Основен показалец; EBP - Основен показалец.

Специално използване на регистрите

Трябва да се има предвид, че всеки от маркираните регистри може да се използва не само за въвеждане на данни. Например всяко десетично число може да бъде добавено към базовия регистър и използвано като брояч. Въпреки това не е препоръчително да се използват за тази цел блокове памет, съответстващи на указатели (ESP и EBP), тъй като могат да възникнат проблеми с достъпа до абстрактни клетки с данни. Целта на регистрите на асемблера е да съхраняват някаква информация и за тази цел може да се използва всеки вид регистър.

ASM код и представяне в списъка

Регистри с общо предназначение

Този тип регистри се създават за запазване на данните след изчислителни операции. Всъщност в тях можете да въвеждате информация с помощта на команда mov във всякаква форма и система на записване: двоична, осмична, десетична или шестнадесетична. Друго име - Регистри за данни на асемблера. Към списъка на регистрите с общо предназначение на асемблера принадлежат:

  • Регистър EACH (акумулатор) на натрупване. Състои се от три младши блока от по 8 бита: AX, NA, AL. Ако е необходимо, може да се осъществи достъп до двата най-малки блока.
  • EBX (база) - блок данни, който отговаря за базата. Както всички регистри с общо предназначение, той се състои от две секции от 8 бита на ниско ниво и една шестнадесетична секция. Това позволява в един и същи регистър да се поставят няколко числови стойности.
  • counter - отговорник за брояча. Използва се по време на изпълнението на цикли. Без нея командата loop не работи. Състои се от две части, едната от които включва два осембитови блока CH и CL.
  • EDX - Data - изисква се за операции по точно определяне на адреса в основната памет за входните и изходните функции. Освен това в този регистър могат да се въвеждат данни, които да се предават за използване в процедури и шаблони. Работа с регистри в 64-битовата версия

Регистри на указатели

За да работят със стека в асемблер, разработчиците са предвидили два вида регистри. Достъпът до тях се осъществява чрез операция за добавяне към указателя на върха на абстрактен тип битови стойности от определен тип данни, който се поставя в стека. Всички изчисления се извършват ръчно. По този начин се записват много данни, които се предават на подпрограми - процедури и масиви. Регистрите на указателите в асемблера се различават:

Структура на процесора и регистрите
  • Регистърът ESP е указател към горната част на стека. Винаги съдържа адреса на първия елемент, който е поставен на стека в кеш паметта на процесора. Може да се попълни с други данни, ако е необходимо. Включва подрегистъра SP, състоящ се от 16 бита.
  • Регистърът EBP (Base Pointer) е блок от клетки на паметта, необходим за адресиране на данните, съдържащи се в стека. Така достъпът до всички данни и променливи е много по-лесен. Той включва най-малкия значим бит на BP.

Регистри-индекси

За разширено индексиране са необходими блокове от индексната памет. Те участват и в някои аритметични операции и обработката на байтови низове - последователност от байтове, съдържащи произволна стойност. В асемблера са включени два регистъра, които отговарят за индексирането на ESI и EDI. Нека ги опишем:

  • ESI (Индекс на източника) включва индекс на източника (мястото, откъдето идват данните) и е необходим за някои операции с байтови низове;
  • EDI (индекс на местоназначението) е необходим, за да се запишат резултатите от изчисление. Приложимо и за част от действието с низ. Частично свързан с регистъра на сегмента ES.

Сегментни регистри

Първите блокове в паметта ли са. Наричат се текущи сегменти. Софтуерът може да заделя повече от четири блока памет. Задължително е обаче блоковите адреси да се съхраняват в местата в паметта между сегментните регистри. Този тип блокове памет са много специфични, което прави невъзможно запълването им с отделен тип данни. Редът на блоковете с регистри в паметта може да варира. Регистрите на сегмента се съхраняват в произволен ред в произволни места в паметта.

  • Регистърът за код CS обикновено съдържа адреса на началото на сегмента за код софтуер (началото на представянето на машинния код). По този начин командите се прескачат за сметка на указателя на командата IP.
  • Регистърът за данни съдържа адреса на данните, обработвани от софтуера в началото на. Данните се навигират по отместването, което се записва в регистъра EIP.
  • Необходим е сегмент на стека (ESS), за да се съхранява началото на сегмента на абстрактния тип данни.
  • Допълнителен сегмент е спомагателен регистър, който съдържа празна област за запис на данни по време на някои действия Над низове от байтове. Може да съдържа информация, подобна на тази в регистъра за данни.

Регистър на указателя на командата

Връзка между блоковете памет

Този тип се отнася за команда. С помощта на този указател изходът на регистъра на асемблера към списъка на. Включва данни за отместването на следващата команда спрямо предишната. На практика не се използва при разработката на софтуер, но е необходим за преглед на списъка с изпълнения код. По този начин се проследяват грешките.

Регистър на флаговете на асемблера

Отчита текущото състояние на процесора. Състои се от 16 бита, от които само 9 могат да бъдат заети. Този блок от паметта се запълва след изпълнение, пропускане или код за грешка в резултат на предишна команда. Освен това някои битове се използват от процесора и могат да се инициализират и изтриват чрез специална командна система. Ето как се управлява командната система.

Статии по темата