робити алгоритми багатобайтові додавання, віднімання та зсуву вліво.
Алгоритм багатобайтові складання наведено на малюнку 4.
В
Рисунок 4 - Алгоритм складання багатобайтові чисел X і Y.
В алгоритмі застосовані наступні позначення:
Tc - ознака переносу;
N - кількість байт в числі;
Xc - з-ий байт числа X;
Yc - з-ий байт числа Y;
С - лічильник байт;
Алгоритми багатобайтові зсуву вліво і віднімання аналогічні алгоритмом на малюнку 4, тільки замість операції додавання використовуються відповідно операції зсуву і віднімання.
Із загальної блок-схеми алгоритму на малюнку 1, а також з блок-схем на малюнках 2 і 3 видно, що алгоритми додавання, віднімання та зсуву застосовуються в програмі кілька разів, тому з метою мінімізації обсягу програми , дані алгоритми будуть реалізовуватися у вигляді підпрограм.
Таким чином, використовуючи розроблені алгоритми можна скласти структурну схему алгоритму програми для мікропроцесора КР580ВМ80.
Структурна схема алгоритму програми наведена в додатку і складається з чотирьох частин.
Перша частина - основна програма, в якій виконуються наступні дії:
У блоці 1.1 виконується ініціалізація покажчика стека;
в блоці 1.2 завантажується число x1 в змінну tmp1, tmp3 і tmp4;
в блоці 1.3 обнуляється п'ятий байт змінних tmp1, tmp3 і tmp4;
в блоці 1.4 завантажується число x2 в змінну tmp2 і обнуляється п'ятий байт змінної tmp2;
в блоці 1.5 викликається підпрограма багатобайтові додавання чисел в змінних tmp4 і tmp2, результат записується в змінну tmp4;
в блоці 1.5 викликається підпрограма множення чисел в змінних tmp1 і tmp2, результат записується в змінну tmp3;
блоки 1.6-1.12 відповідають функціональним алгоритмом на малюнку 2 (множення x1 на 25):
в блоці 1.6 завантажується число зрушень в регістр C і в блоках 1.7-1.9 виконується цикл зсуву на 3 розряду з урахуванням перенесення, зсув на один розряд багатобайтові числа виконується за допомогою підпрограми в блоці 1.7;
в блоці 1.10 виконується складання результату зсуву (у змінній tmp1) і числа x1 (у змінній tmp3), результат зберігається в tmp3;
в блоці 1.11 виконується ще один зсув вліво на один розряд числа в tmp1;
в блоці 1.12 обчислюється остаточний результат множення шляхом додавання чисел в tmp1 і tmp3, результат зберігається в tmp3;
в блоках 1.13-1.22 виконується поділ числа в змінної tmp4 (сума x1 і x2) на число в tmp3 (твір 25 і x1), результат записується в tmp1: у блоці 1.13 обнуляються змінні приватного tmp1 і залишку tmp2, в регістр З завантажується...