Калабеков Б.А. Микропроцессоры и их применение в системах передачи и обработки сигналов (1988) (1092085), страница 23
Текст из файла (страница 23)
Такая символьная константа называется также лите- ралом. Переменная. Это величина, снабженная именем и в процессе выпол- нения программы могущая принимать различные значения. Имя пере- менной выбирается программистом в виде произвольной последова- тельиости букв и цифр, начинающейся обязательно с буквы и имеющей длину ие более 31 символа. Символ !З при трансляции игнорируется, ои может включаться в имя для разделения его иа части, облегчающие чтение имени. Примеры имен переменных; 1, Т1МЕ, А(.РНА, А, Х, т', Х.
Каждая переменная должна быть описана в операторе РЕС(.АКЕ (операторе объявления). В описании переменной обязательно указывается ее тип и могут приводиться некоторые другие ее характеристики. В типе переменной программист определяет длину переменной, а именно: число ячеек ОП с разрядностью в ! байт, необходимых для хранения значения переменной. Допускается использование только двух типов переменных: ВУТЕ, означающий длину в 1 байт, и АРРКЕЯЬ, означающий длину в 2 байта. Например, РЕС(.АВЕ Х! Вт'ТЕ, Т1МЕ АРРКЕ88; Здесь переменная с именем Х 1 объявлена как однобайтовая, переменная с именем Т1МŠ— двухбайтовая. Слова ВУТЕ и АРРКЕБЬ в операторе РЕС).АКЕ могут выноситься за скобки, например, РЕС(.АКЕ (Х, У, ЧА).) ВУТЕ, (Т!МЕ, Х) АРР)тЕ88; Здесь переменные Х, т', ЧА(.
объявлены типа ВУТЕ, переменные Т1МЕ, Х вЂ” типа АРРКЕЮ. Значения переменных, так же как и числовые константы, при выполнении операций рассматриваются целыми без знака. Массив. Под массивом переменных понимают группу переменных, имеющих одно и то же имя. Это имя и является именем массива. Входя'щие в массив переменные различаются значениями индексов и называются переменными с индексами. Например, пусть массив МАТй содержит три переменных.
Тогда зти переменные запишутся так: МАТВ (О), МАТК (!), МАТИ (2). Особенность записи переменных с индексом состоит в том, что вслед за именем массива, в который входит переменная, записывается индекс, заключенный в круглые скобки (в отличие от принятого в обычной математике способа записи индексов ниже строки). Индекс может представляться любым выражением. Например, Х (2чА+!). Здесь индексом переменной служит значение выражения 2чА+!. Для каждого массива в операторе РЕС).АВЕ должна быть объявлена размерность, т. е. количество переменных в массиве. Размерность казывается заключенным в скобки числом вслед за именем массива.
апример, РЕС(.АКЕ А (128) ВУТЕ, (Х, А) РНА) (!00) АРРКЕЗЗ; 1зз Массив А содержит 128 однобайтовых переменных. При этом первая переменная массива имеет индекс О, последняя — индекс !27. Таким образом, переменные массива А: А (0), А (1), ..., А (!27). Каждый из массивов Х и А(.РНА содержит по !00 двухбайтовых переменных. Имя массива в программе не должно использоваться в качестве простой переменной (переменной без индекса). Лля представления двухмерных массивов (матрнц), в которых переменные имеют два индекса, используется так называемая структура. Например, объявленная структура 0ЕС(.А((Е Х (100) 5Т(!()СТ()ВЕ (У (50) ВУТЕ); может быть использована для описания матрицы с размерностью 100 Х 50. Здесь каждый из 100 элементов массива Х есть в свою очередь массив нз 50 однобайтовых элементов У. Примерами обращения к элементам такого двухмерного массива являются Х (5).
У (10), Х (0). У (6), ... Таким образом, переменные с двумя индексами представляются двумя именами; первое имя Х вЂ” имя массива строк матрицы, второе имя У вЂ” имя массива переменных в строке. Первая из приведенных выше записей соответствует обращению к переменной, расположенной в 5-й строке и в !О-м столбце; вторая запись — обращению к переменной в нулевой строке и 6-м столбце. Арифметические выражения. Строятся с использованием следующих знаков операций: + (сложение без использования содержимого триггера переноса Тс регистра признаков микропроцессора), — (вычитание без использования содержимого триггера Тс), * (умножение), !(деление), МОР (определение положительного остатка от деления), РШВ (сложение с прибавлением в младший разряд содержимого триггера Тс), М1Х(Б (вычитание, при котором из полученной разности вычитается содержимое триггера Тс).
Рассмотрим некоторые особенности выполнения операций, связанные с использованием беззнаковой целочисленной арифметики по модулю 2' = 256 или модулю 2" =- 65536 в зависимости от типа результата (ВУТЕ или АРРВЕ$5). Пусть переменная Х типа ВУТЕ имеет значение 255. Тогда Х + ! приводит к значению О, Х + 2 приводит к значению!. Пусть переменная Х типа ВУТЕ имеет значение 1.
Тогда Х вЂ” 1 приводит к значению О, Х вЂ” 2 приводит к значению 255. Таким образом, при выполнении операций +, —, Р(.()5 и М15)()Ь к результату прибавляется или из него вычитается число 256 (в случае типа А00)1ЕВВ прибавляется илн вычитается 65536) так, чтобы образовалось положительное число заданного типа.
Допускается одноместная операция « — э. Например, — Х имеет то же значение, что и результат операции 0 — Х. Если хотя бы один из операндов имеет тип АРРКЕ55, то этот тии будет иметь и результат операции; в противном случае результат имеет тип ВУТЕ. Операции умножения и деления выполняются в предположении, что операнды — целые без знака, тип результата всегда АРРКЕ55.
Если результат умножения не может быть представлен двухбайтовым числом, то он оказывается ошибочным. Деление выполняется нацело с сохранением целого частного; положительный остаток отбрасывается. При выполнении операции МОР отбрасывается частное от деления и сохраняется положительный остаток. Порядок, в котором выполняются арифметические операции, определяется присвоенными операциям уровнями приоритета: 1-й уровень: одноместная операция — , 2-й уровень: «, /,МОР, 3-й уровень: +, †, Р1Л)5, М!й)()5. При вычислении значения выражения вначале выполняются все операции 1-го уровня, затем операции 2-го уровня и в последнюю очереди — операции 3-го уровня. Операции с одним уровнем приоритета выполняются в том порядке, в каком они встречаются в выражении при его просмотре слева направо.
Если необходимо нарушить указанную последовательность выполнения операций, то используются круглые скобки, как и в обычной математике. При присвоении вычисленного значения выражения некоторой переменной это значение преобразуется к типу переменной. Преобразование вида АРРКЕ55 — ВУТЕ выполняется добавлением слева к значению выражения нулевого байта; при преобразовании вида ВУТŠ— АРРКЕ55 отбрасывается левый байт значения. Пример 3.4.
Рассмотрим порядок вычислений выражения в следующей программе: РЕСЕАКЕ Щ Х, У, Е) ВУТЕ; () = Х вЂ” У/Е «2; Пусть Х = 60Н (96Р); У -- ОАЗН (!63Р); 2 =: ОЗН. Операция У/Х, выполняемая первой, приводит к двухбайтовому значению 0036Н (54Р); выполняемая затем операция умножения иа 2 дает результат 006СН (108 Р); наконец, выполняется операция вычитания 60Н вЂ” 006СН = 0060Н вЂ” 006СН. Так как образуется отрицательный двухбайтовый результат, то к нему прибавляется число 2г« = ОЕЕГЕН-~ 1. Следовательно, 0060Н+(ОГРАНЕН+! — 006СН)= «= 0060Н+ОРГ94Н = ОГГР4Н. Полученное двухбайтовое значение выражения должно быть присвоено однобайтовой переменной Х. При этом происходит преобразование типа ВУТŠ— АРРКЕ55 н Х = ОЕ4Н.
!яд Логическое выражение. Строится с использованием операций отношения: = (равно), < (меньше), > (больше), < (меньше или равно), > = (больше илн равно), <> (не равно). Результатом операции отношения является логическая величина, имеющая тнп ВУТЕ н равная ОРРН (в случае выполнения условия) либо ООН (при невыполнении условия). Логические выражения могут содержать логические операции г)ОТ (инверсия НЕ), А)ч0 (конъюнкция И), Ой (дизъюнкция ИЛИ), ХОй (исключающее ИЛИ), выполняемые над логическими величинами.
Логические операции выполняются над операндами поразрядно. Порядок их выполнения в выражении определяется следующими уровнями приоритета: 1-й уровень . 'й!ОТ, 2-й уровень: Аг)Р, 3-й уровень: ОК, ХОК, В выражении, содержащем арифметические операции, операции отношения и логические операции, выполняются вначале все арифметические операции, далее все операции отношения и затем логические операции. Пример 3.5.
Рассмотрим пример вычисления логического выражения в следующей программе: РЕС(.АКЕ В АОВКЕ55, (Х, А) ВУТЕ; Х =100; А=-200; В=ЮТ Х вЂ” 22< = — — А Аг)Р Х -1-20> (50 — А)/3; Ей!О; При вычислении выражения операции выполняются в следующей последовательности: Ч 111 1Ч Ч! 11 1Х Ч Ч11 1 1Н КОТ Х вЂ” 22 < =,— А Ай!В Х+20 > (50 — А)!3; 1: 50 — А =ь 50 — 200 = 256 — 150 = 106; Н: — А =ь 256 — 200 = 56; !П: (50 — А)/3 =ь 0035 (результат деления — двухбайтовое значение); ! У: Х вЂ” 22 =ь ! 00 — 22 = 78; Ч: Х + 20 =~- 100 + 20 = 120; Ч1: Х вЂ” 22 < = — А =ь 78 < =.
56 =~- ООН; ЧП: Х +20>(50 — А))3 ~ ОРРН (результат операции отношения †однобайтов величина) ЧШ:НОТ Х вЂ” 22<= — А =~-5)ОТООН =>- ОРРН; 1Х: В= ООРРН (однобайтовое значение ОРРН преобразуется в двухбайтовое ООРРН). 126 ОПИСАНИЕ РАЗВЕТВЛЯЮШИХСЯ ВЫЧИСЛИТЕЛЬНЪ|Х ПРО11ЕССОВ Для описания разветвлений используется оператор !г.
Этот оператор имеет две формы. Первая форма оператора: 1Г выражение ТНЕ!и' оператор 1; оператор 2; Этому разветвляющемуся процессу соответствует схема алгоритма, представленная на рис. 3.18. В вычисленном значении двоичного представления выражения проверяется младший разряд. Если он равен 1, то выполняются оператор 1 и затем оператор 2, ...; в противном случае оператор 1 не выполняется и происходит переход непосредственно к выполнению оператора 2.
Пример 3.6. Описать вычисление уа = ха))х, где х — переменная, представленная графиком на рис. 3.19, а. На рис. 3.19, б показана а) Рис. 3.18, Схема алгоритма, соответствующая первой форме оператора разветвления ! Г Рпс. 3.19. Пример разветвляющегося процесса: н) сигнал; 6) слева алгоритма, оннсыааююего сигнал 127 схема алгоритма вычислений. Ей соответствует следующее описание на языке Р1./М: Х=А; 1Р Т)ТО ТНЕУ Х =В; У = ХоХ/К; Вторая форма оператора; !Р выражение ТНЕУ оператор 1; Е15Е оператор 2; оператор 3; Описываемому этим оператором разветвлению соответствует схема алгоритма на рис.