КАТЕГОРИИ:


Астрономия- (809) Биология- (7483) Биотехнологии- (1457) Военное дело- (14632) Высокие технологии- (1363) География- (913) Геология- (1438) Государство- (451) Демография- (1065) Дом- (47672) Журналистика и СМИ- (912) Изобретательство- (14524) Иностранные языки- (4268) Информатика- (17799) Искусство- (1338) История- (13644) Компьютеры- (11121) Косметика- (55) Кулинария- (373) Культура- (8427) Лингвистика- (374) Литература- (1642) Маркетинг- (23702) Математика- (16968) Машиностроение- (1700) Медицина- (12668) Менеджмент- (24684) Механика- (15423) Науковедение- (506) Образование- (11852) Охрана труда- (3308) Педагогика- (5571) П Архитектура- (3434) Астрономия- (809) Биология- (7483) Биотехнологии- (1457) Война- (14632) Високи технологии- (1363) География- (913) Геология- (1438) 1065) House- (47672) Журналистика и масови медии- (912) Изобретения- (14524) Чужди езици- (4268) Компютри- (17799) Изкуство- (1338) История- (13644) Компютри- (11121 ) Художествена литература (373) Култура- (8427) Лингвистика- (374 ) Медицина- (12668 ) Naukovedenie- (506) Образование- (11852) Защита на труда- ( 3308) Педагогика- (5571) P Политика- (7869) Право- (5454) Приборостроение- (1369) Программирование- (2801) Производство- (97182) Промышленность- (8706) Психология- (18388) Религия- (3217) Связь- (10668) Сельское хозяйство- (299) Социология- (6455) Спорт- (42831) Строительство- (4793) Торговля- (5050) Транспорт- (2929) Туризм- (1568) Физика- (3942) Философия- (17015) Финансы- (26596) Химия- (22929) Экология- (12095) Экономика- (9961) Электроника- (8441) Электротехника- (4623) Энергетика- (12629) Юриспруденция- (1492) Ядерная техника- (1748) Олимпиада- (1312) Политика- (7869) Право- (5454) Инструменти- ( 1369) Програмиране- (2801) Производство- (97182) Промишленост- (8706) Психология- (18388) Земеделие- (299) Социология- (6455) Спорт- (42831) Строителство- (4793) Търговия- (5050) Транспорт- (2929) Туризъм- (1568) Физика- (3942) ) Химия- (22929 ) Екология- (12095) Икономика- (9961) Електроника- (8441) Електротехника- (4623) Енергетика- (12629 )

Настройка на задачите. Фигурата показва раздела на RAM, зоните, заети от програмата и подпрограмата, се маркират, екипите, които играят роля в процеса на повикване и последващите

Вижте също:
  1. Развъждане, задачи и основни насоки
  2. I Целите и целите на стратегическото управление на иновациите.
  3. I Цели, цели и правила на комуникационната политика
  4. I. Определяне на ценовите цели
  5. V. Цели на урока
  6. V. Цели на урока
  7. V. Цели на урока
  8. V. Цели на урока
  9. V. Цели на урока
  10. А. Основните задачи на външната политика на Русия през втората половина на XVIII век.
  11. Алгоритъмът на метода на Lagrange множителите за решаване на проблема (4.3.1), (4.3.2)
  12. Алгоритъм за решаване на транспортния проблем чрез метода на потенциала

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

В програмата CALL, #Adr - команда за преходно обаждане

Където #Adr е адреса на подпрограмата, определен от метода за директно адресиране

K 2 е командата в програмата непосредствено след командата CALL.

AB е адреса за връщане или адреса на командата в програмата след CALL.

K 1 - първата команда на подпрограмата

Adr - адреса на подпрограмата, който също се нарича "адрес на обаждането" или "адрес на прехода".

RET - връщане команда от подпрограма

Сега нека разгледаме какви действия са необходими при обаждане и връщане.

1) Когато се обаждате, ще трябва да преминете от изпълнението на командата CALL към изпълнението на командата K1 (означена със стрелка). Заключаваме: алгоритъмът на командата CALL трябва да осигури зареждането на адреса на подпрограмата adr в брояча на програмата.

2) Когато се връщаме с командата RET, трябва да отидем на екзекуция, не просто не същата команда, с която оставихме подпрограмата (за да получим безкраен цикъл), за да изпълним командата непосредствено след програмата след командата CALL. Нейният адрес - "връщането адрес" ще трябва да бъдат заредени в програмата брояч (PC) по време на изпълнение на RET.

Откъде командата RET "разбере" какво е "връщащия адрес"? Много проста: дори при изпълнение на командата CALL с командата CALL процесорът трябва:

А) Изчислете адреса за връщане;

Б) Запомнете го в системния стек.

След това по време на изпълнението на командата RET, в командата RET, процесорът просто прочита адреса за връщане от системния стек и го записва в брояча на програмата.

Още не всички. Когато се върнем от подпрограмата, трябва да намерим процесора в същото състояние, в същия режим на работа, както в момента на подпрограмата. Казват, че "трябва да възстанови състоянието на процесора". Вече сме проучили преди това - режимът на работа на процесора се определя от специален RF регистър (флаг регистър). Ето защо командата CALL ще трябва да "помни състоянието на процесора", а именно да запази старата стойност на RF регистъра в системния стек, тогава командата RET ще може да "възстанови старата стойност на RF регистъра" - да прочете старата стойност от регистъра и да я въведе в RF.

Какво е интересно: вече вече знаете всичко, от което имате нужда - да напишете свои собствени алгоритми за командите и CALL #adr и RET. Настройката на задачите, необходимите конкретни действия са описани в този раздел. В раздел [3.6.2] разгледахме общи "стандартни" микро-операции. На същото място се обмисля как се изчислява адреса на следната команда.



Трябва ли да работим със системния стек? Какви микро-операции са предвидени за писане и четене в системния пакет - разгледахме също в раздели [3.10.3], [3.10.4]. Очевидно ще са необходими едни и същи микро операции по време на изпълнението на CALL и RET, за да се запази / възстанови обратния адрес и RF.

Опитайте се да напишете себе си, без да търсите в следващата страница на курса .. Това е за вас - като много полезно упражнение и малък тест. Ако можете да напишете правилно алгоритмите (без указания), вече сте разбрали как процесора работи и успешно усвои курса.


3.11.3 Алгоритъм CALL #Adr

Проверете работата си. Тук е алгоритъмът CALL #Adr:

RC ß [PC]
декодиране
[SP] ß RF
SP ß SP + L R
PC ß PC + L K
[SP] ß PC
SP ß SP + L R
PC ß #Adr

Микро-операции 1, 2: стандартни. Вижте [3.6.2]

Микрооперации 3, 4: Да съхранявате RF в стека. Вижте същите действия, описани в раздел [3.10.3] "Алгоритъм на PUSH Command" микро операции 3, 4 на този алгоритъм.

Микро-операция 5: Увеличаване на брояча на стека - по дължината на командата CALL. Ние изчисляваме адреса за връщане. След като микро-операцията приключи, обратният адрес е в брояча на програмата. Вижте [3.6.2]

Микро-операция 6: Попълнете, сега връщащия адрес към системния стек. Отново - същите действия, описани в раздел [3.10.3] "Алгоритъм на командата PUSH", операции 3, 4 на този алгоритъм.

В това отношение - подготовката за прехода приключи, сега:

Микро-операция 7: Всъщност преход. Преходният адрес от командното атрибутно поле се въвежда в компютъра. Сега следващата команда ще бъде първата команда на подпрограмата.


Забележки:

1) Не беше грешка, ако самостоятелно сте написали този алгоритъм - първо изчислихте и запазихте адреса за връщане в системния стек и само тогава запазихте RF. Редът не е важен. Някои процесори могат да се запазят в една, а друга - в друга. Важно е само командата RET да прочете регистри, съхранени в стека, в обратен ред на заповед за запаметяване.

2) при извикване на командата CALL, стандартната операция INT не се изпълнява. Това е разбираемо: появата на INT означава искане от външно устройство да премине към друга програма, "програма за обработка на външни събития" или "програма за прекъсване на обработката". Би било странно - просто започнете един преход веднага да започнете втори. Това ще доведе само до объркване на данните, поставени в системния стек. Ето защо процесорът дори не проверява кога изпълнява преходна команда - има ли INT сигнал.

<== предишна лекция | следващата лекция ==>
| Настройка на задачите. Фигурата показва раздела на RAM, зоните, заети от програмата и подпрограмата, се маркират, екипите, които играят роля в процеса на повикване и последващите

; Дата на добавяне: 2014-01-04 ; ; Изгледи: 69 ; Нарушение на авторски права? ;


Вашето мнение е важно за нас! Дали публикуваният материал е полезен? Да | не



ТЪРСЕНЕ ПО САЙТА:


Препоръчителни страници:

Вижте също:



ailback.ru - Edu Doc (2013 - 2018) година. Всички материали, представени на сайта само с цел запознаване с читателите и не извършват търговски цели или нарушаване на авторски права! Последно добавяне на IP: 11.45.9.156
Повторно генериране на страницата: 0.003 сек.