Для реализации алгоритмов, пути в которых зависят от исходных данных, используют команды условной передачи управления. ## Пример В качестве примера (несколько упрощенного по сравнению с заданиями лабораторной работы № 2) рассмотрим программу вычисления функции ```math \begin{cases} (x-11)^2-125\ при\ x ≥ 16, \\ \frac{x^2+72x-6400}{-168}\ при\ x < 16 \end{cases} ``` причем x вводится с устройства ввода IR, результат y выводится на OR. Граф-схема алгоритма решения задачи: ![Граф-схема алгоритма решения задачи](../../Pictures/ЛБ04_01.%20Граф-схема%20алгоритма%20решения%20задачи.png) В данной лабораторной работе используются двухсловные команды с непосредственной адресацией, позволяющие оперировать отрицательными числами и числами по модулю, превышающие 999, в качестве непосредственного операнда. Оценив размер программы примерно в 20-25 команд, отведем для области данных ячейки ОЗУ, начиная с адреса 030. Составленная программа с комментариями представлена в виде таблицы. | Адрес | Мнемокод | Код | Примечание | | ----- | ------------- | -------- | --------------------------------- | | 000 | `IN` | 01 0 000 | Ввод х | | 001 | `WR 30` | 22 0 030 | Размещение х в ОЗУ (ОЗО) | | 002 | `SUB #16` | 24 1 016 | Сравнение с границей - (х-16) | | 003 | `JS 010` | 13 0 010 | Переход по отрицательной разности | | 004 | `RD 30` | 21 0 030 | Вычисления по первой формуле | | 005 | `SUB #11` | 24 1 011 | | | 006 | `WR 31` | 22 0 031 | | | 007 | `MUL 31` | 25 0 031 | | | 008 | `SUB #125` | 24 1 125 | | | 009 | `JMP 020` | 10 0 020 | Переход на вывод результата | | 010 | `RD 30` | 21 0 030 | Вычисления по второй формуле | | 011 | `MUL 30` | 25 0 030 | | | 012 | `WR 31` | 22 0 031 | | | 013 | `RD 30` | 21 0 030 | | | 014 | `MUL #72` | 25 1 072 | | | 015 | `ADD 31` | 23 0 031 | | | 016 | `ADI 106400` | 43 0 000 | | | 017 | | 10 6 400 | | | 018 | `DIVI 100168` | 46 0 000 | | | 019 | | 10 0 168 | | | 020 | `OUT` | 02 0 000 | Вывод результата | | 021 | `HLT` | 09 0 000 | Стоп | ## Задание 1. Разработать программу вычисления и вывода значения функции для вводимого из IR значения аргумента х: ```math \begin{cases} F_i(x)\ при\ x ≥ a, \\ F_j(x)\ при\ x < a \end{cases} ``` 2. Исходя из допустимых пределов изменения аргумента функций и значения параметра a для своего варианта задания выделить на числовой оси Ox области, в которых функция y вычисляется по представленной в п. 1 формуле, и недопустимые значения аргумента. На недопустимых значениях аргумента программа должна выдавать на OR максимальное по модулю отрицательное число: 199 999. 3. Ввести текст программы в окно Текст программы, при этом возможен набор и редактирование текста непосредственно в окне Текст программы или загрузка текста из файла, подготовленного в другом редакторе. 4. Ассемблировать текст программы, при необходимости исправить синтаксические ошибки. 5. Отладить программу. Для этого: - записать в IR значение аргумента x > a (в области допустимых значений); - записать в PC стартовый адрес программы; - проверить правильность выполнения программы (т. е. правильность результата и адреса останова) в автоматическом режиме. В случае наличия ошибки выполнить пп. 5, г и 5, д; иначе перейти к п. 5, е; - записать в PC стартовый адрес программы; - наблюдая выполнение программы в режиме Шаг, найти команду, являющуюся причиной ошибки; исправить ее; выполнить пп. 5, а — 5, в; - записать в IR значение аргумента x < a (в области допустимых значений); выполнить пп. 5, б и 5, в; - записать в IR недопустимое значение аргумента x и выполнить пп. 5, б и 5, в. 6. Для выбранного допустимого значения аргумента x наблюдать выполнение отлаженной программы в режиме Шаг и записать содержимое регистров ЭВМ перед выполнением каждой команды. #### Вариант | Номер варианта | i | j | a | | -------------- | ---------------------------- | ---------------------------- | --- | | 12 | $\frac{8100}{x^2}$; $1≤x≤90$ | $\frac{x+17}{1-x}$; $2≤x≤12$ | 12 |