Лекція №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 Блок-схема неструктурованої програми