Навчальні моделі комп’ютера
Отже, у попередніх розділах ми познайомилися з найбільш загальними принципами роботи мікропроцесорів незалежно від їхньої моделі. Настав час подивитися, як ці принципи реалізуються в конкретному МП.
Як приклад процесора, що найбільш підходить для вивчення, найзручніше взяти процесор серії машин під назвою PDP. У нашій країні аналогічні процесори використовувалися у сімействах "ДВК", "БК", а також у типовому шкільному комп'ютерному класі "УКНЦ". При подальшому викладі все це велике сімейство для стислості називати загальним збірним терміном процесор PDP. Саме цей тип МП був запропонований вивчення родоначальником вітчизняної шкільної інформатики А. П. Єршовим [9,10].
Причина такого вибору полягає в тому, що система команд цього процесора побудована на простих та наочних принципах, вивчивши та запам'ятавши які вже можна складати нескладні програми. У той же час система команд інших процесорів, наприклад широко поширених представників сімейства INTEL, влаштована значно складніше і менш логічно, вимагає запам'ятовування великої кількості довідкових даних. В якості підтвердження сказаного достатньо вказати, що в команді процесора PDP може бути використаний будь-який з внутрішніх регістрів, тоді як багато команди процесорів INTEL оперують з фіксованими регістрів, не допускаючи альтернативного розташування даних і результатів.
Отже, перейдемо до вивчення процесорів машин серії PDP. З погляду програміста він складається з восьми 16-розрядних регістрів загального призначення (РОН) та особливого регістру, в якому відображається поточний стан процесора (в іноземній літературі його прийнято позначати PSW – Processor Status Word).
Будь-який із регістрів загального призначення може використовуватисьу командах на рівних підставах. Разом з тим є два виділені регістри, вміст яких процесор використовує для власних потреб. Насамперед слід назвати регістр R7, що виконує рольлічильника команд(згадайте основний цикл роботи процесора - п.1.5). Іншим виділеним регістром єпокажчик стекаR6; призначення покажчика стека докладно пояснювалося у п.2.4.
Інші 6 регістрів, що позначаються R0-R5, програміст може повністю використовувати на власний розсуд. Є лише одне непринципове виняток: у широкій системі команд PDP існує лише єдина, і те досить екзотична команда - MARK, що з регістром R5.
Регістр стану процесора PSW як і всі РОН є 16-бітовим. Його особливістю є те, що кожен його біт має самостійне значення і може використовуватися процесором окремо від інших. У керуючих бітах регістру постійно відображається інформація про результати виконуваних операцій (негативність, рівність нулю тощо), а також стан процесора в даний момент (наприклад, один з бітів дозволяє дозволяти або забороняти обробку переривань). Не всі 16 бітів регістру стану задіяні; з тих, що використовуються, найбільшої популярності здобули два; їх прийнято позначати N і Z. Керуючий ознака N (Negative) характеризує наявність знака мінус результату операцій: якщо число негативне, то N=1, у разі неотрицательного значення N=0. Біт Z (Zero) говорить про рівність чи нерівність нулю результату: у першому випадку Z=1, інакше Z=0. Шляхом нескладних міркувань читач може переконатися, що з 6 відомих математичних співвідношень (більше, менше, рівно і т.д.) 4 можуть бути проаналізовані за однією з ознак, а 2 вимагаютьспільного аналізу бітів N і Z. Описані ознаки, що управляють, широко використовуються для реалізації розгалужень програми в залежності від отриманих результатів.
Є ще один важливий керуючий біт, що позначається C (від англійського Carry - перенесення). Він активно використовується при багаторозрядних обчисленнях та деяких корисних варіантах зрушень, що дозволяє суттєво спростити багато програм аналізу двійкового коду. Тим не менш, у найпростіших випадках без нього цілком вдається обходитися і ми його вивчати поки що не будемо.
Приклади деяких найважливіших операцій наводяться в таблиці.
По-друге, переходи поділяються на безумовні та умовні. Безумовні, як випливає із назви, відбуваються завжди. При виконанні умовного переходу аналізуються керуючі біти: перехід відбувається лише у тому випадку, коли ознаки мають необхідні значення; інакше перехід ігнорується і виконується наступна його команда. Зазначимо, що команди BEQ та BNE перевіряють значення керуючого біта Z, а BPL та BMI - N.
Найчастіше умовному переходу передує команда порівняння, що "підготовляє" керуючі ознаки для аналізу.
Декілька найпростіших і найчастіше застосовуваних способів вказівки операндів у команді наводиться нижче у вигляді таблиці.
Як ілюстрацію розберемо виконання команди
Завершуючи обговорення основних принципів програмування процесора PDP, наведемо приклади лінійного, розгалужуваного та циклічного фрагмента програми.
1. Програма обчислення за формулами: R1:=R2+R3; R4:=R3-R2.MOV R2, R1 ;відразу складати не можна, т.к. сума замінює ADD R3, R1 ; другий операнд MOV R3, R4 SUB R2, R4 HLT
2. У R1 та R2 зберігаються деякі числа. Помістити більше їх у R5, а менше - в R0.
| CMP R1, R2 | ;порівняти R1 і R2 |
| BPL L1 | ;перехід при R1>=R2 |
| ; якщо R2>R1 | |
| MOV R1, R0 | |
| MOV R2, R5 | |
| BR L2 | |
| ;якщо R1>=R2 | |
| L1: | MOV R1, R5 |
| MOV R2, R0 | |
| L2: | HLT |
Примітка. У програмі використовується той факт, що команда DEC автоматично порівнює результат із 0 - це робить непотрібною спеціальну команду порівняння CMP.