Регистри на процесора

Както вече споменахме, вътрешните регистри на процесора са малко количество памет за изтриване, което е предназначено за временно съхранение на служебна информация или данни. Броят на регистрите в различните процесори може да бъде от 6-8 до няколко десетки. Регистрите могат да бъдат универсални и специализирани. Специализираните регистри, които присъстват в повечето процесори, са регистърът на програмния брояч, регистърът на състоянието (PSW), регистърът на указателя на стека. Останалите регистри на процесора могат да бъдат както универсални, така и специализирани.

16-битовият процесор Intel 8086, който се превърна в основа в линията процесори, използвани в персоналните компютри, използва коренно различен подход. Всеки регистър на този процесор има свое специално предназначение и регистрите могат само частично да се заменят един друг или изобщо не могат. Нека се спрем по-подробно на характеристиките на този процесор.

Процесорът 8086 има 14 16-битови регистъра. От тях четири регистъра (AX, BX, CX, DX) са регистри за данни, всеки от които, в допълнение към съхраняването на операнди и резултати от операции, също има своя специфична цел:

  • регистър AX - умножение, деление, обмен с входно/изходни устройства (команди за вход и изход);
  • регистър CX - брояч на цикли;

За регистрите на данни е възможно да се използват и двата байта поотделно (например за регистъра AX те се обозначават AL - нисък байт и AH - висок байт).

Следващите четири вътрешни регистъра на процесора са сегментни регистри, всеки от които определя позицията на един от работните сегменти (фиг. 4.8):

  • регистърът CS (кодов сегмент) съответства на сегмента от команди, които се изпълняват в момента;
  • регистрирайте DS (ДанниСегмент) съответства на сегмента от данни, с които процесорът работи;
  • регистър ES (Extra Segment) съответства на допълнителен сегмент от данни;
  • регистърът SS (сегмент на стека) съответства на сегмента на стека.

процесора

Фиг. 4.8.Инструкции, данни и сегменти на стека в паметта.

По принцип всички тези сегменти могат и наистина се припокриват за оптимално използване на пространството в паметта. Например, ако програмата заема само част от сегмента, тогава сегментът с данни може да започне веднага след края на програмата (с 16-байтова точност), а не след края на целия програмен сегмент.

Следващите пет процесорни регистъра (SP - Stack Pointer, BP - Base Pointer, SI - Source Index, DI - Destination Index, IP - Instruction Pointer) служат като указатели (т.е. те определят отместването в рамките на сегмента). Например броячът на инструкции на процесора се формира от двойка CS и IP регистри, а указателят на стека се формира от двойка SP и SS регистри. Регистрите SI, DI се използват при операции с низове, т.е. при последователна обработка на няколко клетки с памет с една команда.

Последният регистър FLAGS е регистърът на състоянието на процесора (PSW). От неговите 16 бита се използват само девет (фиг. 4.9): CF (Carry Flag) - флаг за пренасяне за аритметични операции, PF (Parity Flag) - флаг за четност на резултата, AF (Auxiliary Flag) - допълнителен флаг за пренасяне, ZF (Zero Flag) - флаг за нулев резултат, SF (Sign Flag) - флаг за знак (съвпада с високия бит на резултата), TF (Trap Flag ) - флаг за стъпков режим (използван за отстраняване на грешки), IF (Interruptenable Flag) - флаг за разрешаване на хардуерно прекъсване, DF (Direction Flag) - флаг за посока за операции с низове, OF (Overflow Flag) - флаг за препълване.

Фиг. 4.9.Регистър на състоянието на процесора 8086.

Битовете на регистъра на състоянието се задават или изчистват в зависимост от резултата от изпълнението на предишната инструкция и се използват от някои инструкции на процесора. Битовете на регистъра на състоянието могат също да бъдат зададени и изчистени чрез специални инструкции на процесора (системата с инструкции на процесора ще бъде обсъдена в следващия раздел).

Много процесори разпределят специален регистър, нареченакумулатор (т.е. съхранение). В този случай, като правило, само този регистър-акумулатор може да участва във всички операции, само чрез него може да се осъществява взаимодействие с входно / изходни устройства. Понякога в него се поставя резултатът от всяка изпълнена команда (в този случай дори се говори за "батерийната" архитектура на процесора). Например в процесора 8086 регистърът на данните AX може да се счита за вид акумулатор, тъй като той е този, който задължително участва в командите за умножение и деление и само чрез него могат да се изпращат данни към I / O устройството и от I / O устройството. Разпределението на специален акумулиращ регистър опростява структурата на процесора и ускорява прехвърлянето на кодове в процесора, но в някои случаи забавя системата като цяло, тъй като целият поток от информация трябва да премине през един акумулиращ регистър. В случай, че няколко процесорни регистъра са напълно взаимозаменяеми, такива проблеми не възникват.

MP командна система.