ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Програма-імітатор
         

     

    Інформатика, програмування
    Імітатор роботи процесора

    Введення.

    У своїй роботі я спробував викласти загальну схему роботи процесора і проілюструвати її за допомогою програми-імітатора.

    У першій частині курсової роботи мною викладені основні теоретичні відомості про логічне пристрої мікропроцесора, його призначення і принципи роботи. При цьому я не орієнтувався на конкретний тип процесора.

    У другій частині я розглядаю керівництво користувача до своєї програми-імітаторів. Дана програма написана в середовищі Delphi. При написанні даної програми я орієнтувався на процесор типу PDP, як найбільш відповідного для вивчення і найбільш часто розглядається в підручниках інформатики.

    Мікропроцесор як основа ЕОМ.

    Внутрішня структура мікропроцесора.

    Будь-яка ЕОМ призначена для обробки інформації причому, як правило, здійснює цю обробку опосередковано - представляючи інформацію у вигляді чисел. Для роботи з числами машина має спеціальну найважливішу частину - мікропроцесор. Це універсальне логічне пристрій, який оперує з двійковими числами, здійснюючи найпростіші логічні і математичні операції, і не просто як доведеться, а відповідно до програми, тобто в заданій послідовності. Для зберігання цієї заданої послідовності служать запам'ятовувальні пристрої - ЗУ. ЗУ бувають постійними - ПЗУ, в яких інформація зберігається, не змінюючись як завгодно довго, і оперативними - ОЗУ, інформація в яких може бути змінена в будь-який момент відповідно до результатів її обробки. Процесор спілкується з ОЗУ і ПЗУ через так зване адресний простір, в якому кожна комірка пам'яті має свою адресу.

    МП складається з набору регістрів пам'яті різного призначення, які певним чином пов'язані між собою і обробляються відповідно до деякої системою правил. Реєстр - це пристрій, призначений для зберігання і обробки двійкового коду. До внутрішніх регістрів процесора відносять: лічильник адреси команд, вказівник стеку, регістр станів, регістри загального призначення.

    Наявність лічильника команд було покладено ще в роботах фон Неймана. Роль лічильника полягає в збереженні адреси чергової команди програми й автоматичному обчисленні адреси наступної. Завдяки наявності програмного лічильника в ЕОМ реалізується основний цикл виконання послідовно розташованих команд програми.

    Стек - це особливий спосіб організації пам'яті, при використанні якого достатньо зберігати адреса останньої заповненої комірки ОЗУ. Саме адреса останньої заповненої комірки ОЗУ і зберігається в покажчику стека. Стек використовується процесором для організації механізму переривань, обробки звернення до підпрограм, передачі параметрів і тимчасового зберігання даних.

    У регістрі станів зберігається інформація про поточні режимах роботи процесора. Сюди ж можна відслідковувати результати виконуваних команд, наприклад: чи результат дорівнює нулю, негативний чи він, чи не виникли в ході операції помилки і т.п. Використання та аналіз у цьому регістрі відбувається побітне, кожен біт регістра має самостійне значення.

    Регістри загального призначення (РОН) служать для зберігання поточних оброблюваних даних чи їх адреси в ОЗУ. У деяких процесорів регістри функціонально рівнозначні, в інших призначення регістрів суворо обмовляється. Інформація з одного регістру може віддаватися в іншій.

    Система команд мікропроцесора

    Незважаючи на бурхливу еволюцію обчислювальної техніки, основний набір команд доволі мало змінився. Система команд будь-який ЕОМ обов'язково містить такі групи команд обробки інформації.

    Команди передачі даних (перепис), що копіюють інформацію з одного місця в інше.

    Арифметичні операції, до яких в основному відносять операції додавання і віднімання. Множення і ділення зазвичай реалізується за допомогою спеціальних програм.

    Логічні операції, що дозволяють комп'ютера проводити аналіз одержуваної інформації. Найпростішими прикладами команд даної групи можуть служити порівняння, а також відомі логічні операції і, або, не.

    Зрушення двійкового коду ліворуч і праворуч. У деяких випадках зрушення використовуються для реалізації множення і ділення.

    Команди введення і виведення інформації для обміну з зовнішніми пристроями. В деяких ЕОМ зовнішні пристрої є спеціальними службовими адресами пам'яті, тому введення і вивід здійснюється за допомогою команд перепису.

    Команди керування, що реалізують нелінійні алгоритми. Сюди відносять умовний і безумовний переходи, а також команди звернення до підпрограмі (перехід з поверненням). Часто до цієї групи відносять операції з управління процесором типу зупинка чи ні операції.

    Будь-яка команда ЕОМ зазвичай складається з двох частин - операційної і адресної. Операційна частина що також називається кодом операції вказує, яку дію необхідно виконати з інформацією. Операційна частина є у будь-якої команди. Адресна частина описує, де використовується інформація зберігається і куди помістити результат. У деяких командах керування роботою машини адресна частина може бути відсутніми, наприклад, у команді зупину.

    Код операції можна уявити собі як деякий умовний номер у загальному списку команд. В основному цей список побудований у відповідності з певними внутрішніми закономірностями.

    Адресна частина має значно великою різноманітністю. Основу адресної частини складає операнд. Залежно від кількості можливих операндів команди можуть бути одно-і двоадресного. У двоадресного командах результат записується або в спеціальний регістр (суматор), або замість одного з операндів.

    Способи адресації даних

    Способи (або методи) адресації не що інше, як способи вказівки на ті чи інші комірки пам'яті, з якими повинен маніпулювати оператор. Існує багато різних методів адресації. Кількість їх залежить від типу процесора. Наявність великої кількості способів адресації забезпечує високу гнучкість в побудові програм і є великою перевагою системи команд даного типу ЕОМ. Способи адресації практично однакові для всіх команд, в яких присутні операнди. У цьому розділі я детально розглядаю тільки три основні методи адресації, які застосовуються майже у всіх процесорах.

    Реєстрова адресація. При цьому способі операндом є один з регістрів загального призначення. Число зберігається безпосередньо в реєстрі. Записується як Rn, де n - номер регістра.

    Непряма адресація. При цьому способі адресації в одному з регістрів загального призначення міститься не саме число, з яким потрібно працювати, а його адресу, то є номер комірки пам'яті, в якому число знаходиться. Записується як (Rn), де n - номер регістра.

    автоінкрементним адресація. Цей вид адресації дещо складніше двох попередніх. Крім основного дії (непрямого звернення до комірки пам'яті), при використанні цього методу, відбувається ще зміна адреси цього звернення. У даному випадку збільшується покажчик адреси комірки пам'яті, до якої ми звертаємося, тобто вміст регістра, що служить дороговказом адреси. Дане збільшення відбувається автоматично, без будь-якої команди. Записується ця адресація як (Rn) +. Те, що знак + стоїть після імені регістра, натякає на порядок виконання команди: спочатку відбувається операція з осередком, на яку вказує адреса поміщений у регістр Rn, а потім вже вміст регістра збільшується на 2 (якщо оператор працює зі словом, то перехід до адреси наступного слова), або на 1 (якщо оператор працює з байтом, перехід до адреси наступного байта). Даний спосіб адресації застосовується для роботи з масивами і при використанні стека (наприклад, при використанні підпрограм).

    Існує ще один особливий спосіб адресації, який розглядається окремо. Мова йде про роботу зі стеком. Стек - неявний спосіб адресації даних, при якому інформація записується і зчитується тільки послідовним чином з використанням покажчика стека. Стек завжди має єдиний вхід і вихід інформації - для зберігання його адреси і потрібен покажчик стека. При запису даних у стек процесор виконає наступне:

    зменшить покажчик стека на 2 (ціле число займає в пам'яті 2 байти);

    запише дані за отриманим адресою.

    При отриманні даних з стека процесор проробить сліду шиї:

    вважає дані з стека;

    збільшить покажчик на 2.

    У командах роботи зі стеком адреса ОЗУ не фігурує у явному вигляді. Але при цьому мовчки передбачається, що покажчик стека вже задано. При завданні покажчика треба бути уважним. Якщо покажчик стека визначений неправильно, то запис у стек може зруйнувати корисну інформацію в ОЗУ.

    Таким чином, ми розглянули способи адресації інформації, які існують майже у всіх типах процесора і які я використав у своєму імітаторі.

    Керівництво користувача.

    Опис програми

    викладену вище структуру мікропроцесора я спробував реалізувати у своїй програмі.

    Основну частину програми складає Редактор. Він являє собою місце, де вводиться програма, яку виконує процесор. Кожна команда вводиться в свою допомогу, що має адресу. Розмір адресного простору редактора становить 1Кб. Початкова осередок має адресу 1000, кінцева - 2024. Як операнда в одно-і двоадресного командах виступає один з регістрів загального призначення. Я виділив наступну систему команд.

    одноадресних команди.

    Представлені в наступній формі: Операція операнд ОП1.

    Очистити ОП1-обнуляє значення операнда.

    Збільшити на 1 ОП1 - збільшує значення операнда.

    Зменшити на 1 ОП1 - зменшує значення операнда.

    двоадресного команди.

    Представлені в наступній формі: Операція перший операнд ОП1 другий операнд ОП2.

    Переслати ОП1 в ОП2 - пересилає значення першого операнда в другій операнд.

    Додати ОП1 до ОП2-додає значення першого операнда до другого операнд, результат у другому операнд.

    відняти ОП1 з ОП2 - віднімає значення першого операнда з другого операнда, результат у другому операнд.

    Порівняти ОП1 з ОП2 - порівнює різниця другого і першого операнда з нулем, значення операндів не змінюються, результат впливає на стан регістра станів.

    безадресні команди.

    Повернення з підпрограми - здійснює повернення з підпрограми в клітинку, наступну за командою що викликала цю підпрограму, використовується тільки в підпрограма

    Стоп - команда зупину, ставиться обов'язково в кінці програми, після її виконання ні які команди не виконуються.

    Команди переходу.

    Перехід на К слів - безумовний перехід - здійснює перехід на К слів.

    Виклик підпрограми за адресою - перехід на адресу К з запам'ятовуванням адреси повернення для команди повернення з підпрограми.

    Якщо <> перехід на К слів - перехід на К слів, якщо результат <> 0.

    Якщо = перехід на К слів - перехід на К слів, якщо результат = 0.

    Якщо> = перехід на К слів - перехід на К слів, якщо результат> = 0.

    Якщо> перехід на К слів - перехід на К слів, якщо результат> 0.

    Якщо <перехід на К слів - перехід на К слів, якщо результат <0.

    Якщо <= перехід на К слів - перехід на К слів, якщо результат <= 0.

    Робота команди умовного переходу здійснюється в такий спосіб: якщо аналізованої умова справедливо, то перехід відбувається. В іншому випадку ніяких дій не проводиться, а значить, перехід ігнорується і процесор, як звичайно, вибирає таку команду. Справедливість аналізованого умови визначається станом регістра станів, яке в свою чергу залежить від результату команди порівняння.

    Таким чином, вище викладена операційна частина команд, які виконує мій імітатор. Подивимося, якими способами можуть бути представлені операнди ОП1 і ОП2. Для свого проекту я відібрав три найбільш простих з наявних в реальних процесорах методу адресації. Це регістровий, непрямий і автоматичний способи адресації, детально вони розглядаються в першій частині моєї курсової роботи.

    Не менш важливою частиною програми є частина Регістри, в якій розташовані регістри використовуються в моєму проекті. Для свого імітатора процесора я вирішив використати вісім шістнадцяти розрядних регістрів загального призначення (c R0 по R7) і особливого регістру, в якому відображається поточний стан процесора - регістра станів PS.

    Будь-який з регістрів загального призначення може використовуватися в командах на рівних підставах. Разом з тим є два виділених регістра, вміст яких моя програма використовує для власних потреб. Перш за все це регістр R7, що виконує роль лічильника команд. Іншим виділеним регістром є покажчик стека R6. Решта 6 регістрів, що позначаються R0 - R5, користувач може використовувати на свій розсуд. Доречно зауважити, що виділені регістри програми R6 та R7 можуть використовуватися в будь-якій команді поряд зі звичайними регістрами загального призначення R0 - R5. Як уже згадувалося регістри обшего призначення шістнадцяти розрядні, тобто діапазон значень від -32768 до 32767.

    Регістр станів PS в моєму проекті є двухбітним. Його особливістю є те, що кожен його біт має самостійне значення і може використовуватися процесором окремо від інших. Використовувані біти регістра позначаються N і Z. Керуючі ознаки N (Negative) характеризує наявність знака мінус у результату операцій: якщо число негативний, то N = 1, у разі невід'ємне значення N = 0. Біт Z (Zero) говорить про рівність або нерівність нулю результату: у першому випадку Z = 1, інакше Z = 0. Значення цих бітів залежить від результату операції порівняння і впливає в свою чергу на операцію умовного переходу. Регістр станів управляється тільки програмно і недоступний користувачеві.

    Третю частину програми складає Пам'ять. Ця частина моєї програми реалізована в окремому вікні, яке можна прибрати. Якщо вікно відкрите, то воно завжди знаходиться поверх головного вікна. Вікно Пам'ять призначений для демонстрації роботи процесора з пам'яттю ЕОМ. У пам'яті зберігається програма, яка написана користувачем, представлена в машинних кодах. У моєму проекті коди реалізовані в десятковій системі числення. Також в пам'яті можна зберігати дані в тих осередках, які не відводяться під програму. При використанні непрямої і автоінкрементним адресації звернення йде до даних, які зберігаються саме в пам'яті.

    Такі основні частини моєї програми. Розглянемо тепер склад головного меню програми. Меню складається з трьох пунктів: файл, правка, пуск. Розглянемо кожне з них окремо.

    Пункт меню Файл дозволяє працювати з написаною користувачем програмою як з окремим файлом і включає наступні підпункти:

    Новий - створює новий файл, очищаючи редактор і регістри.

    Відкрити - відкриває файл.

    Зберегти - зберігає у файл з розширенням pdp і поточним ім'ям.

    Зберегти як - зберігає у файл з розширенням pdp і новим ім'ям.

    Вихід - вихід з імітатора.

    Пункт меню Правка включає пункти підменю, які дозволяють редагувати текст програми написаної користувачем. У ньому є такі підпункти:

    Очистити - повністю видаляє вміст або тільки редактора, або тільки регістрів, або редактора і реєстрів одночасно. Назва файлу при цьому не змінюється (у цьому відмінність від пункту меню Новий).

    Вставити - вставляє в редакторі порожній рядок перед поточним.

    Видалити - видаляє поточний рядок в редакторі.

    Пункт меню Пуск призначений для виконання написаної користувачем програми. Включає наступні підпункти:

    Пуск - запускає написану користувачем програму.

    За кроків - дозволяє виконувати кожну команду окремо.

    Стоп - здійснює переривання запущеної програми.

    Пауза - дозволяє зробити паузу під час виконання запущеної програми

    Продовжити - продовжує виконання програми, після натискання паузи.

    Деякі підпункти цього пункту доступні тільки при виконанні програми.

    Деякі пункти головного меню винесені як кнопки. Також ви можете побачити кнопку Пам'ять, при натисканні на яку з'являється вікно Пам'ять.

    Отже, ви познайомилися зі структурою мого імітатора. Тепер можна приступити до написання програми.

    Написання програми

    Основна програма, як уже було сказано вище, пишеться в редакторі, який за структурою нагадує таблицю. При запуску імітатора редактор порожній і курсор знаходиться на початку першого стовпця редактора. Переміщатися по редактору можна за допомогою клавіш управління курсору, або за допомогою миші. Вибір команди здійснюється тільки,?? оли курсор знаходиться в першому чи четвертому стовпці. При натисканні клавіші Enter або натисканні лівої кнопки миші з'явиться список команд, з якого ви можете вибрати необхідну команду. Всі команди пишуться в першому стовпці редактора. Подальші ваші дії залежать від того, яку команду ви обрали.

    Якщо ви вибрали двоадресного команду, то в другому і четвертому стовпці з'являться операнди, які будуть у команди за замовчуванням. Якщо ви хочете поставити свої операнди, то необхідно переміститься в те місце редактора, де знаходиться потрібний вам операнд. Переміщення здійснюється за допомогою клавіш управління курсором, або за допомогою миші. Для вибору необхідного вам операнда слід натиснути клавішу Enter або натиснути ліву кнопку миші. При натисненні з'являється список доступних операндів, з якого ви вибираєте необхідний.

    Якщо ви вибрали одноадресних команду, то операнди з'являться тільки в другому стовпці редактора. Вибір потрібного вам операнда здійснюється також як для двох адресної команди.

    Якщо ви вибрали команду переходу, то в другому стовпці редактора з'явиться кількість слів, на яку здійснюється перехід (за умовчанням 0). Для того щоб поставити свою кількість кроків необхідно переміститься в те місце редактора, де знаходиться значення переходу, натиснути Enter або кнопку миші, і ввести своє значення. При виборі команди "Виклик підпрограми" в нижній частині з'явиться друга частина цієї команди - "за адресою 0". У другому стовпці цього рядка необхідно вказати адресу підпрограми.

    При виборі безадресних команд з'явиться тільки команда в першому стовпці.

    При заповненні редактора або зміну програми в пам'яті відбуваються зміни. У відповідній клітинці з'являється код нової команди. У комірки, що не містять програму, заносяться нулі.

    Коли ви написали всі команди потрібно приступити до заповнення регістрів. Для заповнення регістрів необхідно перевести покажчик миші на частину Регістри і натиснути ліву кнопку миші, або натиснути клавішу Tab. При заповненні регістрів варто згадати, що максимальне число, яке може зберігатися в реєстрі, так само 32767, а мінімальне -32768. Тому якщо ви спробуєте ввести число більше максимального або менше мінімального, то цифра розряду, яку ви ввели, буде дорівнювати максимальній цифрі, яка може знаходиться в даному розряді числа. Аналогічно при виконанні програми, якщо число заносимість в регістр буде менше мінімального або більше максимального, то значення відповідного регістра буде мінімальним, або максимальним. Також необхідно пам'ятати що, реєстр R7 є лічильником команди, тому туди необхідно занести адресу комірки початку програми. При використанні підпрограми в регістр R6 необхідно занести адресу початку стека.

    В останню чергу при написанні програми необхідно занести дані в пам'ять. Але це необхідно зробити, тільки якщо ви використовуйте в своїй програмі непрямі чи автоматичний спосіб адресації. Для занесення даних в пам'ять необхідно активізувати вікно Пам'ять. Це можна зробити, натиснувши кнопку Пам'ять (якщо вікна Пам'ять немає), або надіславши курсор миші на вікно Пам'ять натиснути ліву кнопку миші. Слід пам'ятати, що в ті комірки пам'яті, які відведені під програму, дані заносити не можна.

    Таким чином, дотримуючись вищевикладеним рекомендацій, ви зможете написати свою програму. Раджу написану програму зберегти, використовуючи пункти меню Зберегти і Зберегти як.

    Виконання програми

    Тепер розглянемо, як написана вами програма виконується. Тут я торкнуся лише загальні моменти виконання вашої програми. Конкретно виконання кожної команди можна подивитися в розділі опису.

    Виконання будь-якої програми починається з натискання клавіші F9 або пункт меню Пуск. Спочатку зчитується значення регістра R7 (лічильника команд). Значення R7 збільшується на 2. Виповнюється команда, що знаходиться за адресою, лічені з лічильника команд. Ці три операції повторюються поки не зустрінеться команда Стоп або поки не виникне помилка виконання. Виконання може бути зупинене самим користувачем (кнопка Стоп або пункт меню Стоп). Також користувач може призупинити виконання (кнопка Пауза або пункт меню Пауза) і потім продовжити припинене виконання (кнопка Продовжити або пункт меню Продовжити).

    Виконати можна також тільки одну команду. При натисканні клавіші F8 виконується команда, що знаходиться за адресою, вказаною в R7, при цьому значення лічильника команд збільшується на 2.

    При виконанні вашої програми можуть виникнути такі помилки:

    Неправильне значення лічильника команд - значення регістра R7 не потрапляє в діапазон 1000 ... 2024.

    Порожній рядок, не можу виконати - немає команди в комірці, адреса якої вказана в R7, або ні команди Стоп наприкінці програми.

    Невірний адреса - адресу, вказану в регістрі, при використанні непрямої адресації не потрапляє в діапазон 1000 ... 2024.

    Дані заносяться на адресу, відведений під програму - при використанні непрямої адресації дані заносяться в пам'ять за адресою, що використовується програмою.

    Дані не повинні містити букв - в пам'яті зберігаються дані, які містять сторонні символи (не цифри).

    Переповнення діапазону чисел - число, збережене в пам'яті дуже велике.

    Невірний адреса переходу - значення адреси переходу не належить діапазону 1000 ... 2024.

    Невірні символи в команді переходу - адреса переходу в команді переходу містить сторонні символи (не цифри).

    Ні адреси підпрограми - команда Виклик підпрограми за адресою не містить адреси початку підпрограми.

    Невірний адреса підпрограми - адреса початку підпрограми не належить діапазону 1000 ... 2024, або адреса підпрограми містить сторонні символи (не цифри).

    Невірний адреса повернення - адреса повернення не належить діапазону 1000 ... 2024.

    При виконанні можуть виникнути й інші помилки, які мені не вдалося передбачити.

    Особливу увагу слід приділити виконанню програми з підпрограмою (див. приклад програми з підпрограмою). При виконанні команд звернення до підпрограмі та повернення з підпрограми відбувається звернення до стеку, адреса початку якого зберігається в регістрі R6. Принцип роботи стека викладено в першій частині курсової, в розділі способи адресації.

    Приклади програм

    Проста програма, що використовує реєстрову адресацію.

    Знайти суму всіх чисел від А до В.

    Число А зберігається в R0, число В в R1, сума в R3. Нехай А = 1, В = 5.

    Регістри

    Редактор

    R0 = 00001

    1000 Переслати R0 в R2

    R1 = 00005

    1002 Порівняти R2 c R1

    R2 = 00000

    1004 Перехід на 3 слів

    R3 = 00000

    1006 Додати R2 до R3

    R7 = 01000

    1008 Збільшити на 1 R2

    1010 Перехід на -5 слів

    1012 Стоп

    У даній програмі не використовуються регістри R4, R5, R6.

    Програма, що використовує непряму адресацію.

    Знайти суму всіх чисел від А до В.

    Число А зберігається в комірці 1016, число В в комірці 1018, результат у клітинці 1020. Регістр R0 зберігає адресу першого числа, R1 - другого числа, R3 - результату.

    Регістри

    Редактор

    Пам'ять

    R0 = 01016

    1000 Переслати (R0) в R2

    1016 1

    R1 = 01018

    1002 Порівняти R2 c (R1)

    1018 5

    R2 = 00000

    1004 Перехід на 3 слів

    1020 0

    R3 = 01020

    1006 Додати до R2 (R3)

    R7 = 01000

    1008 Збільшити на 1 R2

    1010 Перехід на -5 слів

    1012 Стоп

    Програма роботи з масивом даних.

    Порахувати число позитивних елементів масиву і занести його в R5.

    У R0 зберігається адреса початку масиву 1030. У R1 - адреса кінця масиву 1036.

    Регістри

    Редактор

    Пам'ять

    R0 = 01016

    1000 Порівняти (R0) + c R3

    1030 -1

    R1 = 01018

    1002 Якщо <перехід на 1 слів

    1032 2

    R5 = 00000

    1004 Збільшити на 1 R5

    1034 3

    R7 = 01000

    1006 Порівняти R0 з R1

    1036 -4

    1008 Якщо <= перехід на -5 слів

    1010 Cтоп

    Програма з підпрограмою.

    Дано два масиви однакової розмірності. Провести обмін максимальними елементами. В якості підпрограми оформити знаходження максимального елемента масиву.

    Адреса початку першого масиву 1050 зберігається в R0. Адреса кінця першого масиву 1060 в R1. Адреса початку другого масиву 1070 в R2. Адреса кінця другого масиву 1080 в R3. Початок стека 1200 в R6.

    Регістри

    Редактор

    Пам'ять

    R0 = 01050

    1000 Виклик підпрограми

    1050 1

    R1 = 01060

    1002 за адресою 1022

    1052 2

    R2 = 01070

    1004 Переслати R2 в R0

    1054 3

    R3 = 01080

    1006 Переслати R3 в R1

    1056 -2

    R6 = 01200

    1008 Переслати R4 в R2

    1058 4

    R7 = 01000

    1010 Переслати R5 в R3

    1060 1

    1012 Виклик підпрограми

    ...

    1014 за адресою 1022

    1070 -2

    1016 Переслати R2 в (R5)

    1072 5

    1018 Переслати R4 в (R3)

    1074 6

    1020 Стоп

    1076 -3

    1022 Очистити R4

    1078 7

    1024 Переслати R0 в R5

    1080 -7

    1026 Переслати (R0) + в R4

    1028 Порівняти (R0) з R4

    1030 Якщо <перехід на 2 слів

    1032 Переслати R0 в R5

    1034 Переслати (R0) в R4

    1036 Збільшити на 1 R0

    1038 Збільшити на 1 R0

    1040 Порівняти R0 з R1

    1042 Якщо <= перехід на -8 слів

    1044 Повернення

    У даній програмі регістри R4 і R5 використовуються як допоміжні.

    Висновок.

    Розроблена програма-імітатор дозволяє наочно ілюструвати логічну структуру процесора і показати як він виконує програми написані користувачем. Фактично мій імітатор багато в чому повторює написану для ПЕОМ "Yamaha" програму-імітатор PDP.

    Програма призначена для вивчення основних принципів пристрої ЕОМ, а саме, пристрої мікропроцесора як основної частини практично будь-який ЕОМ. Даний імітатор дозволяє користувачеві написати свою програму, використовуючи дану систему команд, і простежити, як процесор виконує задану програму. У систему команд імітатора були відібрані найбільш важливі інструкції, призначені для обробки цілих чисел.

    Як вже було сказано дана програма написана в середовищі Delphi і зберігається на диску у файлі pdp.exe. Приклади запропоновані в тексті курсової роботи ви також зможете знайти на диску в файлах test1.pdp, test2.pdp, test3.pdp, test4.pdp. Програма призначена для роботи на компьтеров PC AT 486 і вище. На комп'ютері також необхідна наявність операційної системи WINDOWS'95/98. Рекомендується також мінімальна роздільна здатність екрану 800 на 600.

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status