Лекція №12 Підпрограми та циклічні програми. Конструювання Команда виклику підпрограми CALL Addr змішана адресація {SP-1} ( PCH {SP-2} ( PCL SP ( SP –2 PC ( Addr Значення лічильника команд РС передається в стек, а в лічильник команд записується адреса підпрограми. Умовний виклик підпрограм 1. CC Addr змішана адресація call on carry якщо Cy=1, то 1,2,3,4 якщо Cy=0, то PC ( PC + 3 2. CNC Addr змішана адресація call on not carry якщо Cy=0, то 1,2,3,4 якщо Cy=1, то PC ( PC + 3 3. CZ Addr змішана адресація call on zero якщо Z=1, то 1,2,3,4 якщо Z=0, то PC ( PC + 3 4. CZ Addr змішана адресація call on not zero якщо Z=0, то 1,2,3,4 якщо Z=1, то PC ( PC + 3 5. CP Addr змішана адресація call on plus якщо S=0, то 1,2,3,4 якщо S=1, то PC ( PC + 3 6. CM Addr змішана адресація call on minus якщо Z=1, то 1,2,3,4 якщо Z=0, то PC ( PC + 3 7. CPE Addr змішана адресація call on parity якщо P=1, то 1,2,3,4 якщо P=0, то PC ( PC + 3 8. CPO Addr змішана адресація call on not parity якщо P=0, то 1,2,3,4 якщо P=1, то PC ( PC + 3 Команда повернення із підпрограми 9. RET змішана адресація return PCL ( {(SP)} PCH ( {(SP) + 1} SP ( SP + 2 стек 2202
2203 01
2204 20
2205
PCL=01H PCH=20H PC=2001H SP=2205H Повернення за умовою (Conditional return) 10. RC, якщо Сy=1, то PCL ( {(SP)} PCH ( {(SP) + 1} SP ( SP + 2 якщо Cy=0, то PC ( PC +1, тобто наступна команда. 11. RNC Cy=0 (то PCL ( {(SP)} PCH ( {(SP) + 1} SP ( SP + 2 якщо навпаки, то PC ( PC +1) 12. RZ Z=1 (то PCL ( {(SP)} PCH ( {(SP) + 1} SP ( SP + 2 якщо навпаки, то PC ( PC +1) 13. RNZ Z=0 (то PCL ( {(SP)} PCH ( {(SP) + 1} SP ( SP + 2 якщо навпаки, то PC ( PC +1) 14. RP S=0 (то PCL ( {(SP)} PCH ( {(SP) + 1} SP ( SP + 2 якщо навпаки, то PC ( PC +1) 15. RM S=1 (то PCL ( {(SP)} PCH ( {(SP) + 1} SP ( SP + 2 якщо навпаки, то PC ( PC +1) 16. RPE P=1 (то PCL ( {(SP)} PCH ( {(SP) + 1} SP ( SP + 2 якщо навпаки, то PC ( PC +1) 17. RPO P=0 (то PCL ( {(SP)} PCH ( {(SP) + 1} SP ( SP + 2 якщо навпаки, то PC ( PC +1) 18. RST N (Re-start) повторний пуск 0 <= N <= 7 N – вектор переривання {(SP) - 1} ( PCH {(SP) - 2} ( PCL SP ( SP - 2 0 7 PC ( 8 * NNN NNN – 000…111 19. PCHL неявна адресація move H and L to PC PCH ( H PCL ( L 20. SPHL неявна адресація move H and L to SP SP ( HL Традиційно конструювання програми пов’язано з створенням блок-схеми. Але фактично блок-схеми більш корисні при документовані ніж при проектуванні. Блок-схема корисна при описі структури програми та при поясненні її роботи. Тому на етапі проектування більш ефективні нові методи проектування програм. До них відносять: Модульне програмування. Це метод при якому довгі програми розділяють на короткі, які називають модулями та можуть бути спроектовані, закодовані і відлагодженні окремо з застосуванням мінімальних відомостей про інші програми. Проектування донизу. Це метод, при якому задача розділяється спочатку на декілька загальних підзадач, які потім, в свою чергу, деталізуються далі. Цей процес продовжується зверху до низу до тих пір, поки підзадачі не є поставленими в такому вигляді, що їх можна просто реалізувати на ЕОМ. Структурне програмування. У відповідності до цього методу програми пишуть по спеціально розробленим правилам. Ці правила дозволяють використовувати тільки визначені типи програмних операторів. Структурне програмування В структурному програмуванні використовують тільки прості логічні структури. Якобіні довів, що будь-яка програма може бути написана з використанням тільки трьох структур: послідовної, в якій команди або програми виконуються послідовно в тому порядку, в якому вони записані; умовного типу IF-THEN-ELSE, тобто IF A THEN P1 ELSE P2 , де А – логічний вираз, а Р1 та Р2 – програми, що складено з трьох канонічних структур. Приклад IF x?0 THEN y=1/x ELSE y =0 Ця конструкція забезпечує запобігання ділення на нуль та визначення y в тому випадку коли x=0. Рис.12.1 Блок-схема розгалуження 3) циклічного типу DO – WHILE, тобто DO P WHILE A (виконувати Р поки А), де А – логічний вираз, Р – програма, що складається тільки з дозволених структурних елементів. Програма називається структурованою, якщо вона описана з використанням трьох розглянутих структур. Якщо при виконанні програми Р1 рис.13.1 виникає помилка, то буде точно відомо, як ЕОМ попала в цю точку. На рис.13.3 наведено приклад неструктурованої програми. Рис.12.2 Блок-схема циклу Рис.12.3 Блок-схема неструктурованої програми