Калабеков Б.А. Микропроцессоры и их применение в системах передачи и обработки сигналов (1988) (1092085), страница 24
Текст из файла (страница 24)
3.20. Вгичисляется выражение и проверяется значение младшего разряда полученного результата. Если оно равно 1, то выполняется оператор ! и затем оператор 3; если младший разряд выражении содержит О, то выполняется оператор 2 и затем оператор 3. Рассмотренный выше пример с использованием данной формы оператора разветвления решается представленной на рис. 3.21 схемой алгоритма н следующим описанием алгоритма на языке РЕ М: 1Р Т) ТО ТНЕУ Х = В; ЕЕ5Е Х =. А; У вЂ” — ХвХ1К; Пример 3.7. Рассмотрим пример, представленный на рис.
3.22, а. Его решение в форме схемы алгоритма показано на рис. 3.22, б. Особенность этой схемы алгоритма в том, что каждая ветвь разветвлений содержит не один, а два оператора. Зто требует при записи оператора разветвления указания о том, что при каждом исходе проверки условия должна выполняться группа из нескольких '(в данном примере из двух) операторов. Объединение операторов в группу производится путем их заключения в так называемые операторные скобки; 00; оператор 1; оператор 2;...; ЕМ0; группа ооаратаров Здесь 00 — открывающая скобка, ЕН0 - — закрывающая скобка образуют так называемую простую 00-группу. Таким образом, оператор разветвления для примера на рис.
3.22, б примет следующий вид: 1Р Т)ТО ТНЕ1) 00: Х-=В; У=-С; ЕХ0; ЕЕ5Е 00; Х -. А; У -.=0; ЕН0; г -.1Х.Х 1 У.У),К; Рис. 3.21, Схема алгоритма разветвляющего процесса Пример 3.8. Требуется выполнить операцию алгебраического сложения однобайтовых чисел Х и Рис. 3.20. Схе~~ алгорит~~, соотзет. у, если старший разряд чисел— ствующего второй форме оператора знаковый и числа представлены в разветвления 1~ прямом коде.
На рис. 3.23 приведена схема алгоритма рассматриваемого вычисления. В ней предусматривается получение дополнительных кодов Х! и т'! исходных чисел Х и т', сложение дополнительных кодов чисел и преобразование суммы в прямой код. Рассмотрим формирование дополнительного кода Х! числа Х. Дополнительный код положительного числа совпадает с прямым кодом висла.
Преобразование требуется в случае отрицательного числа, т. е. а) тряс. 3.22. Использование простой 1ЗОугруппы: '41 арнмею б) схема алгоратма Заа. азо Рис, 3.23. Схема алгорятма алгебраического сложения чисел если знаковый разряд числа содержит ! . Знак числа может быть выявлен проверкой условия Х ( 80Н. Число 80Н в двоичном представлении равно 1000000В, т.' е. содержит 1 в старшем разряде н нули в остальных разрядах.
Так как при выполнении операций в языке Р1!М числа рассматриваются как положительные, то неравенство окажется выполненным, если Х будет содержать 0 в старшем разряде, т. е. будет представлять положительное число. В случае, если Х вЂ” отрицательное число, т. е. неравенство Х ( 80Н окажется невыполненным, дополнительный код числа может быть получен оператором Х1 = = !Х Хок 7РН! + Число 7РН = 011111!1В и выполнение операции поразрядного исключающего ИЛИ Х ХОЙ 7РН приведет к тому, что старший !знаковый) разряд Х останется неизменным, значения остальных разрядов числа Х будут инвертированы. Таким образом получается обратный код, а прибавление 1 приводит к дополнительному коду. Теперь нетрудно написать программу алгебраического суммирования чисел: 130 РЕС1,АВЕ (Х; Х1, 1'1, У, Х) ВУТЕ; 1Р Х(80Н ТНЕ(Ч Х1=Х Е18Е Х 1 =- (Х ХОР 7РН) + 1; 1Р У(80Н ТНЕ)Ч У1=У; ЕЕВЕ У1=(У ХОР 7РН)+ 1; Е=Х1+У1; 1Р Х ..
80Н ТНЕУ; Е1.8Е Х=(Х ХОР 7РН)+ 1; В последнем операторе 1Р после ТНЕ(Ч оператор отсутствует (в этом случае говорят, что присутствует пустой оператор) и не выполняется никаких действий. ОПИСАНИЕ ЦИКЛИЧЕСКИХ ВЫЧИСЛИТЕЛЬНЫХ ПРОЦЕССОВ Для описания циклических процессов используется оператор Т!О. Ранее был рассмотрен простой ПО-оператор при объединении нескольких операторов в группу. Для организации циклов используются три других типа оператора РО: 00-%Н!(.Е-оператор, итеративный 00- оператор и 00-САВЕ-оператор. 1)О-ЮН11.Е.оператор. Форма оператора ОО %НИ.Е выражение; 1; оператор тело цикла оператор л; ЕМЭ; Такая запись вызываетмногократное исполнение группы операторов тела цикла: оператор 1;...; оператор и;, пока, младший разряд результата вычисления выражения в двоичном представлении содержит 1 (нечетный результат).
При этом выражение вычисляется при первом вхождении в блок до выполнения оператора ! и каждый раз при достижении оператора ЕМЭ. Если при очередном вычислении выражения результат окажется четным, управление передается следующему за Е(ЧО оператору. Этот процесс будем представлять схемой алгоритма, показанной на рис. 3.24.
!3! Пример 3.8. Вычислить значение з(п х при О ( х ( ! суммирова. пнем ряда Маклорена 1 ! к ' з(пх=-к — — х'+ — ха —...= "~ ( — 1)! — ' 3! 51 (2! — 1)! Суммирование будем продолжать, пока модуль очередного члена не окажется меньше допустимой погрешности е. Пусть а!, а!„— модули соответствующих членов ряда. Они определяются выражениями х 2! — ! к 2 !г+!) — ! а! — — —, а!+! = (21-!)1 ' ' (2 (!+!) — !)! Выразим значение а!, через значение а;: ла а!+! =а! 21 (2!+ 1) Знак члена определяется следующим условием: 1-й член положителен, если ! иечетно.
Приведенная на рис. 3.25 схема алгоритма описывает процесс суммирования членов ряда. В блоке 1 значению первого члена присваивается а и сумме членов 3, после чего происходит вхождение в цикл. Пока выполняется условие а) и (т. е. пока не достигнута требуемая точность), в блоке 8 вычисляется модуль очередного члена, в блоке 4— его индекс; далее в блоке 5 выявляется, нечетно или четно значение (. Рис. 3.24. Схема алгоритма, соответств)то!чего циклическому оператору РО-ФНП.Е Рис.
3.25. Схема алгоритма вычис- лении а!и к 132 При нечетном 1 выполняется оператор б, при четном / — оператор 7. После достижения требуемой точности происходит выход из цикла. Программа на языке Р(./М: РЕС(.АКЕ (1, А, Х, ЕР5, 5) ВУТЕ; 1=1; А==Х; 5=Х; РО %Н11.Е А) ЕР5; А = А»Х/256»Х/256/(2»1)/(2»1+ 1); 1=1+1; 1Е 1 ТНЕЬ) 5=5+А; ЕЕ5Е 5=5 — А; ЕМЭ; По смыслу переменные А, Х, 5, ЕР5 являются величинами, меньшими единицы. Поэтому их значения в программе следует рассматривать как дробные части чисел. В операторе, вычисляющем значение А, предусмотрено дважды деление на 256.
Введение этой операции связано с необходимостью исключения переполнения разрядной сетки в процессе выполнения операций (деление на 256 может быть заменено выНолнением так называемой встроенной процедуры выделения старшего байта, которая будет рассмотрена в дальнейшем). Итеративный РО-оператор. Форма оператора: РО /=а ТО Ь ВУ с; оператор 1; тело цикла оператор л; ЕЬ)Р; Здесь / — простая переменная, называемая индексом цикла; :а, Ь, с — выражения, определяющие соответственно начальное Значение, конечное значение и шаг изменения индекса цикла. Выполнение оператора происходит в следующем порядке.
Индексу '..цикла 1 присваивается значение выражения а, вычисляется выражение Ь и его значение сравнивается с 1. Если / ) Ь, то управление передает'ся следующему за ЕЬ)Р оператору; в противном случае выполняются операторы тела цикла, после чего вычисляются вновь выражения Ь и с, индексу цикла присваивается значение / = ~ + с и вновь проверяется неравенство 1) Ь и т, д. Часть ВУ с может быть опущена, В этом случае шаг изменения индекса цикла принимается равным единице. Таким образом, итеративный РО-оператор позволяет повторять выполнение некоторой группы операторов фиксированное число раз. 333 На рис.
3.26 показано представление итеративного 1)О-оператора в схеме алгоритма. Пример 3.9. В массиве А из 100 однобайтовых переменных найти переменную, имеющую наибольшее значение. Пусть х — искомое наибольшее значение переменных в массиве А. На рис. 3.27 приведена схема алгоритма решения сформулированной задачи. Алгоритм описывает циклический процесс. В каждом повторении тела цикла производится сравнение значения очередной выбранной в массиве А переменной а, с максимальным из значений переменных, просмотренных в предыдущих повторениях тела цикла.
Если неравенство а; ~ х выполняется, то х присваивается значение ао После 100-кратного повторения тела цикла происходит выход из цикла, при этом значение х есть искомое решение задачи. Программа решения рассмотренной задачи на языке Р1/М имеет следующий вид: РЕС1.АКЕ (Х, 1, А (100)) В т'ТЕ; Х=О; 1)О 1=0 ТО 99; 1Г А(1)) Х ТНЕУ Х=А(1); ЕМЭ; Пример 3.!О. Решить такую же задачу поиска максимального значения переменных в двухмерном массиве М размерностью 1ООХ50. Представленная на рис. 3.28 схема алгоритма решения данной задачи содержит два вложенных цикла: внешний цикл, в котором ведется Рис.