ЛЕКЦИОННИ ЗАПИСКИ КЪМ КУРСА
“КОМПЮТЪРНИ АРХИТЕКТУРИ”
Доц. Станимир Станев
7. Понятие за машинна програма и машинни
инструкции. Фази на изпълнение на машинна инструкция
Напомням, че езиците за програмиране
са средство за кодиране на
алгоритмите. Описаният чрез даден език за програмиране алгоритъм представлява
програма, която се изпълнява на компютъра.
Компютърен програмен език
е
множество от символи и правила за тяхното използване, предназначени за управление
действието на компютъра. Всеки език притежава своя собствена граматика и синтаксис,
свой собствен начин за използване на идеи.
Нека да е необходимо да бъде изчислен простия математически израз
x = (a+b) -
(c+d).
Фрагментът от компютърна програма за изчисляване на този израз, написан на
език за програмиране от високо ниво,
изглежда така:
. . . . . . . . . . . .
x = (a+b) - (c+d);
. . . . . . . . . . .
Това е разбираемо за потребителя, защото е почти същото като математическия израз.
Програмите, написани на даден език за програмиране трябва да се превеждат на
машинен език (код),
който е единствено разбираем за определен тип компютър.
За израза
x=(a+b) - (c+d)
фрагментът от машинната програма, записан в
оперативната памет на микрокомпютъра в двоичен код изглежда така:
00000011 11000011
00000011 11001010
00101011 11000001
За човека този фрагмент е трудно разбираем, но само в този вид той се възприема
от микропроцесорa на Intel и може да се изпълни от него.
Същия фрагмент, записан в шестнадесетичен код, изглежда така:
03C3
03CA
2BC1
Едва ли и този запис е разбираем за човека, просто той е по-компактен.
На първите компютри от 50-те години на ХХ век е програмирано на машинен
език . Той е единствен, който може да се използва директно от компютъра. Машинните
езици са езици от първо ниво по отношение апаратурата на компютъра. От гледна точка
на програмиста е трудно да се работи с тях, защото се използва двоична бройна система
и следствие на това голяма е вероятността за допускане на грешки. Машинните езици
за различни типове компютри са различни и следователно не е възможна преносимост
на програма от един за друг тип компютър. Асемблерните езици се появяват в началото
на петдесетте години с цел да се намалят трудностите при писане на програми на
машинен език. В асемблерния език мнемоничен код заменя кода на операцията, а
вместо абсолютни адреси на клетки се използват символни адреси.
Горният фрагмент от машинната програма, преписан на асемблера на
микропроцесор на фирмата Intel изглежда така:
add ax, bx
add cx, dx
sub ax, cx ,
където
add
е мнемонично съкращение от addition (събиране)
, sub
- от substruction
(изваждане), а
ax
,
bx
,
cx
и
dx
са имената на регистри на микропроцесора, в които има
операнди и резултати. Първият ред означава да се събере съдържанието на регистъри с
имена
ax
и
bx
и резултатът да се помести в регистър
ax
.
Действията, които ще извърши микропроцесора под управлението на фрагмента
от горната машинната програма, са следните (предварително конкретните стойности на
величините а, b, c и d са постъпили в регистрите с общо предназначение на процесора
8088 -съответно AX, BX, CX и DX):
Съдържанието на регистъра AX се сумира с това на BX, и резултът се записва на
мястото на операнда AX. Това условно се записва така:
[AX] : =[AX] + [BX].
Това действие се предизвиква от първия ред на машинната програма.
Следващите два реда от програмата задействат операциите:
[ CX ] : = [ CX ] + [ DX ] и
[ AX ] : = [AX ] - [ CX ].
За да бъде “разбран” и изпълнен от компютъра, този текст трябва да се обработи
(транслира). Това прави специална програма, наречена Асемблер, която
транслира (превежда) изходната програма в специален вид, наречен обектен
(машинен) код. При това преобразуване една инструкция в изходната програма
съответства на една инструкция в машинния код. За спестяване на
програмистки труд се използват макроасемблерите, в които се дефинират и
наименоват групи от често изпълнявани инструкции, наречени макроси. При
транслиране на машинен език един макрос се заменя с цяла група машинни
инструкции. Асемблерният език също като машинния е различен за всеки тип
микропроцесор. Сега тези езици се използват главно за създаване на системно
програмно осигуряване.
Процесорът изпълнява поредица от инструкции, откоито е съставена машинната
програма. Програмата може да бъде представена като последователност от инструкции
в паметта. Всяка инструкция определя или стъпка на компютъра за обработка на данни,
или управляващо действие. Тя задава ясно и точно действието на процесора, без да
оставя нищо неопределено. В инструкцията има информация за операцията, която
трябва да извърши компютъра и за това кои операнди (стойности) ще участват в тази
операция. В двоичното представяне на инструкцията могат да се разграничат две части
(полета). Първото поле се нарича код на операцията и съдържа двоичен код, указващ на
процесора коя операция да изпълни. Второто поле указва адресите на операндите
(числата), с които трябва да се извърши операцията. То се нарича адресна част. В
адресната част може да има от еди до три адреса. Някои инструкции не съдържат
адресно поле.
Всяка МИ трябва да посочи две неща:
1.
какво трябва да се свърши: +,- и т.н.;
2. с какво ще се извърши действието.
Действията се прилагат към междинни данни, които са в ОП, а резултатът от тях също
се съхранява в ОП за следващия етап. Т.е посочването на операндите и резултата става
чрез адреси от ОП. Битовете на една МИ се поделят на две части:
КОП (Код на операцията- какво?)
Адресна част (операнди - с какво?)
Машинните инсрукции са два вида
:
1.
Обработващи- за извършване на определени пресмятания : събиране,изваждане
и др.;
2.
Управляващи- за анализиране на възникналите обстоятелства и вземане на
решение.
Адресната част на всяка от тях се поделя на отделни полета,наречени адресни полета.
Тъй като данните,които идентифицират едно адресно поле, са в ОП най-естествено (но
не винаги и най-удобно) е в него да бъде записан пълен адрес от ОП.
АДРЕСНИ ПОЛЕТА
•
В обработващите МИ трябват:
1. адрес за четене на първи операнд;
2. адрес за четене на втори операнд;
3. адрес за запис на получения резултат;
4. адрес на МИ, която ще се изпълни след изпълнение на тази МИ.
•
В управляващите МИ трябват:
1. адрес на проверявана стойност;
2. адрес на МИ, която ще се изпълни при <0;
3. адрес на МИ, която ще се изпълни при =0;
4. адрес на МИ, която ще се изпълни при >0.
АНАЛИЗ НА МИ
КОП
АДРЕСНА ЧАСТ
1операнд
2операнд
резултат
Следваща МИ
8 бита
16 бита 16 бита 16 бита
16 бита
1. 8 бита за КОП осигуряват кодиране на 256 операции (128 при две дължини на
данни)
2. За адрес са необходими най-малко 16 бита,осигуряващи поне 64 КВ ОП.
3.
Съотношението КОП-адресна част е 1:8.
4. ЦП чете МИ от ОП => намаляването на МИ ускорява четенето, т.е и
изпълнението.
5. Полезно е да намалим адресните полета-
Елиминиране 1
Предмет: | Компютърни системи и технологии, Информатика, ИТ |
Тип: | Уроци |
Брой страници: | 9 |
Брой думи: | 2163 |
Брой символи: | 12481 |