Микропроцесорен модел
В днешния компютърен пазар има голямо разнообразие от различни видове компютри. Следователно е възможно да се предположи, че потребителят ще има въпрос - как да оцени възможностите на определен тип (или модел) компютър и неговите отличителни характеристики от компютри от други видове (модели). Разглеждането само на блоковата диаграма на компютъра не е достатъчно за това, тъй като тя фундаментално се различава малко в различните машини: всички компютри имат RAM, процесор и външни устройства. Начините, средствата и използваните ресурси, чрез които компютърът функционира като един механизъм, са различни. За да се обединят всички понятия, които характеризират компютъра по отношение на неговите функционални програмно контролирани свойства, има специален термин - компютърна архитектура. За първи път концепцията за компютърна архитектура започва да се споменава с появата на машини от 3-то поколение за тяхната сравнителна оценка.
Има смисъл да започнете да изучавате асемблерния език на всеки компютър само след като разберете коя част от компютъра е останала видима и достъпна за програмиране на този език. Това е така нареченият компютърен програмен модел, част от който е микропроцесорният програмен модел, който съдържа 32 регистъра, до известна степен достъпни за използване от програмиста. Тези регистри могат да бъдат разделени на две големи групи:
- 16 потребителски регистъра;
- 16 системни регистъра.
Потребителски регистри
Ориз. 1. Потребителски регистри на микропроцесори i486 и Pentium
Защо много от тези регистри са съкратени?разделителна линия? Не, това не са различни регистри - те са части от един голям 32-битов регистър. Те могат да се използват в програмата като отделни обекти. Това се прави, за да се гарантира работоспособността на програмите, написани за по-ниските 16-битови модели микропроцесори от Intel, като се започне с i8086. Микропроцесорите i486 и Pentium имат предимно 32-битови регистри. Техният брой, с изключение на сегментните регистри, е същият като при i8086, но размерността е по-голяма, което се отразява и в обозначенията им - имат префикс e ( E xtended ).
Нека разгледаме по-отблизо състава и предназначението на потребителските регистри.
Регистри с общо предназначение
сегментни регистри
Статусни и контролни регистри
eflags/flags (flag register) - флагов регистър. Битовата дълбочина на eflags/flags е 32/16 бита. Отделните битове на този регистър имат определено функционално предназначение и се наричат флагове. Долната част на този регистър е напълно аналогична на регистъра на флаговете за i8086. На фиг. 2 показва съдържанието на регистъра на eflags.
Ориз. 2. Съдържанието на регистъра на eflags
Въз основа на моделите на използване флаговете на регистъра eflags/flags могат да бъдат разделени на три групи:
- 8 флага за състояние. Тези флагове могат да се променят след изпълнение на машинни инструкции. Флаговете за състояние на регистъра eflags отразяват спецификата на резултата от изпълнението на аритметични или логически операции. Това дава възможност да се анализира състоянието на изчислителния процес и да се отговори на него с помощта на условни команди за прескачане и извиквания на подпрограми. В табл. 1 показва флаговете за състояние и тяхното предназначение;
- 1 контролен флаг. Означава се df (флаг на директория). Той е в бит 10 на регистъра eflags и се използва от верижни команди. стойност на флага dfопределя посоката на поелементна обработка в тези операции: от началото на низа към края ( df = 0) или обратно, от края на низа към неговото начало ( df = 1). Има специални команди за работа с флага df: cld (изчистване на флага df) и std (задаване на флага df). Използването на тези команди ви позволява да приведете флага df в съответствие с алгоритъма и да осигурите автоматично увеличаване или намаляване на броячите при извършване на операции с низове;
- 5 системни флага, контролиращи I/O, маскирани прекъсвания, отстраняване на грешки, превключване на задачи и виртуален режим 8086. На приложните програми се препоръчва да не променят тези флагове ненужно, тъй като това ще доведе до прекратяване на програмата в повечето случаи. В табл. 2 изброява системните флагове, тяхното предназначение.
Таблица 1 Флагове за състояние
Мнемоника на флага | Флаг | Битово число в eflags | Съдържание и цел |
вж | Флаг за носене | 0 | 1 - аритметичната операция, пренесена от старшия бит на резултата. Най-значимият бит е 7, 15 или 31, в зависимост от размера на операнда; 0 — нямаше трансфер |
pf | Флаг за паритет | 2 | 1 - 8 най-малко значими бита (този флаг е само за 8-те най-малко значими бита на операнд с произволен размер) от резултата съдържат четен брой единици; 0 - 8 най-малко значими цифри от резултата съдържат нечетен брой единици |
аф | Допълнителен флаг за носене | 4 | Само за команди, работещи с BCD числа. Записва факта на заемане от долната тетрада на резултата: 1 — в резултат на операцията за добавяне е извършено прехвърляне от бит 3 къмнай-значимата цифра или при изваждане е заем на 3-та позиция на младшата тетрада от стойността в старшата тетрада; 0 - трансфери и заеми към (от) 3-та категория(и) от долната тетрада на резултата не беше |
zf | Нулев флаг | 6 | 1 - резултатът е нула; 0 — ненулев резултат |
sf | Подпишете флаг | 7 | Отразява състоянието на старшия бит на резултата (битове 7, 15 или 31 съответно за 8, 16 или 32-битови операнди): 1 — старшият бит на резултата е 1; 0 — най-важният бит от резултата е 0 |
на | Флаг за препълване | единадесет | Флагът of се използва за фиксиране на факта, че значим бит е загубен по време на аритметични операции: 1 - в резултат на операцията, прехвърляне (заемане) към (от) най-значимия, знаков бит на резултата (битове 7, 15 или 31 за 8, 16 или 32-битови операнди, съответно); 0 - в резултат на операцията няма прехвърляне (заем) към (от) старшия знаков бит на резултата |
iopl | Ниво на привилегии за вход/изход | 12, 13 | Използва се в защитения режим на микропроцесора за контрол на достъпа до I / O команди, в зависимост от привилегията на задачата |
nt | флаг за влагане на задача (Вложена задача) | 14 | Използва се в защитения режим на микропроцесора за записване на факта, че една задача е вложена в друга. |
Таблица 2. Системни флагове
eip / ip (Instraction Pointer register) - регистър на указателя на командата. eip/ip регистърът е с ширина 32/16 бита и съдържа отместването на следващата инструкция, която трябва да бъде изпълнена спрямо съдържанието на сегментаcs регистър в сегмента на текущата инструкция. Този регистър не е директно достъпен за програмиста, но стойността му се зарежда и променя от различни контролни команди, които включват команди за условни и безусловни скокове, извикване на процедури и връщане от процедури. Появата на прекъсвания също води до промяна на регистъра eip/ip.
Регистри на микропроцесорна система
Самото име на тези регистри подсказва, че те изпълняват специфични функции в системата. Използването на системните регистри е строго регламентирано. Именно те осигуряват защитения режим. Те могат да се разглеждат и като част от микропроцесорната архитектура, която умишлено е оставена видима, така че квалифициран системен програмист да може да изпълнява най-ниските операции.
Контролни регистри
Тези регистри са за общ контрол на системата. Контролните регистри са достъпни само за програми с ниво на привилегия 0.
Въпреки че микропроцесорът има четири контролни регистъра, само три от тях са налични - изключен е cr1, чиито функции все още не са дефинирани (запазен е за бъдеща употреба).
Регистърът cr0 съдържа системни флагове, които контролират режимите на работа на микропроцесора и отразяват състоянието му глобално, независимо от конкретните задачи, които се изпълняват. Присвояване на системни флагове:
- pe (Protect Enable), бит 0 - активиране на защитен режим на работа. Състоянието на този флаг показва в кой от двата режима - реален (pe=0) или защитен (pe=1) - микропроцесорът работи в момента.
- mp (Math Present), бит 1 - наличие на копроцесор. Винаги 1.
- ts (Task Switched), бит 3 - превключване на задачи. Процесорът автоматично задава този бит, когатопревключване към друга задача.
- am (маска за подравняване), бит 18 — маска за подравняване. Този бит разрешава (am = 1) или забранява (am = 0) контрол на подравняването.
- cd (Деактивиране на кеша), бит 30, деактивиране на кеш паметта. Този бит може да се използва за деактивиране (cd = 1) или активиране (cd = 0) на използването на вътрешния кеш (кеш от ниво 1).
- pg (PaGing), бит 31, разрешава (pg = 1) или забранява (pg = 0) пейджинг. Флагът се използва в модела на пейджинг на организация на паметта.
Регистри за отстраняване на грешки
Регистър dr6 се нарича регистър за състояние на отстраняване на грешки. Битовете в този регистър се настройват според причините, довели до възникването на последното изключение номер 1.
Нека изброим тези битове и тяхното предназначение:
- b0 - ако този бит е зададен на 1, тогава последното изключение (прекъсване) е настъпило в резултат на достигане на контролната точка, дефинирана в регистъра dr0;
- b1 - подобно на b0, но за контролна точка в регистър dr1;
- b2 - подобно на b0, но за контролна точка в регистър dr2;
- b3 - подобно на b0, но за контролна точка в регистър dr3;
- bd (бит 13) - служи за защита на регистрите за отстраняване на грешки;
- bs (бит 14) - зададено на 1, ако изключение 1 е причинено от състоянието на флага tf = 1 в регистъра eflags;
- bt (бит 15) е зададен на 1, ако изключение 1 е причинено от превключване към задача с бита за прихващане, зададен в TSS t = 1.
Повечето от системните регистри са програмно достъпни. Не всички от тях ще са необходими в нашияпо-нататъшно представяне, но въпреки това ги прегледах накратко, за да събудя интереса на читателя към по-нататъшни изследвания върху архитектурата на микропроцесора.