Разделы
Рекомендуем
|
Автоматическая электрика Автоматика радиоустройств ции и адресная часть. Такое действие с командами называется преобразованием (модификацией) команд. Приведем простой пример преобразования команд. Составим программу для перемножения ста чисел хи х2, ..., xI00. Эти числа можно разместить, например, в ячейках 0245-0410 соответственно. Для решения этой задачи можно составить прямую программу, содержащую 100 команд, В табл. 24-15 приведена прямая программа перемножения ста чисел. Отсюда следует, что прямая программа, требует 200 ячеек памяти (100 для программы и 100 для чисел). Используя операцию преобразования команд, можно данную программу значительно сократить. Легко заметить, что все команды, кроме первой, отличаются друг от друга лишь адресной частью, причем каждый последующий адрес можно получить из предыдущего путем прибавления единицы к младшему разряду одной части команды в режиме фиксированной запятой. Таблица 24-15
Обозначим постоянное число, предназначенное для изменения команды, через а и поместим его в ячейку 0411. Тогда программа перемножения 100 чисел с использованием преобразования команд будет иметь вид, приведенный в табл. 24-16. Таблица 24-16 Э о ш Чи. Условное обозначение команд Команда к+2 к+3 к+4 к+5 к+6 к+7 к 10 >(С)ХХ2 (с)-+Ро (к+2)->с (с)+а (с)->к+2 (РоНс -БЩк-г-2)
Программа состоит всего из восьми команд. В конце программы стоит команда безусловного перехода и данный цикл будет выполняться до тех пор, пока машина не будет остановлена с пульта -управления оператором. Для выполнения вполне определенного количества циклов и автоматической остановки машины необходимо ввести счетчик * циклов. В конечном виде программа представлена в табл. 24-17, где программа размещена в ячейках с адресами 0101-0120. Исходные данные размещены в ячейках 0121- 0270. Под рабочие отведены ячейки 0271- 0272 Как следует из программы, после каждого цикла адресная часть команды, находящейся в ячейке fe+4, изменяется на о. Если величина а равна единице младшего разряда команды, то после выполнения 99 циклов команда, содержащаяся в ячейке k+i, будет иметь вид: fe + 4 0265 Таким образом, данную, команду можно использовать в качестве счетчика циклов. В этом случае вместо числа 99, расположенного в ячейке 0270, необходимо хранить команду вида 04 0265. Тогда для окончания процесса вычисления перед командой условного перехода выполняется операция вычитания из текущего значения команды, находящейся в ячейке fe+4, конечного ее значения, хранящегося в ячейке 0270. Если разность равна или больше нуля, управление передается на команду Стоп Процесс вычисления при этом заканчивается. Если цикл, в котором изменяются команды, входит в состав другого цикла, то необходимо измененные команды восстановить. Эта операция производится или путем посылки на места измененных команд их первоначальных значений, которые должны храниться в памяти как вспомогательные числа, или же путем обратного преобразования команд, заключающегося в выполнении операции? вычитания некоторого постоянного числа из измененной команды. Число подбирается так, чтобы после вычитания команда приняла первоначальный вид. Программирование для одноадресной машины с фиксированной запятой. Выше рассматривались основные принципы программирования, которые являются общими как для машин с плавающей запятой, так и для машин с фиксированной запятой. Так как машины с запятой, фиксированной перед старшим двоичным разрядом, оперируют с числами, по абсолютной величине меньшими единицы, необходимо учитывать ряд особенностей при составлении программы. К этим особенностям следует в первую очередь отнести подбор масштабов для исходных чисел решаемой задачи, приводящих все числа к величинам, мень- Таблица 24-17 Услов- ный адрес Условное обозначение команд Адрес команды Команда код операции адресная часть к+2 к+3 к+4 к+5 к+6 к+7 к+10 к+11 к+12 к+13 к+14 к+15 к+16 к+17 к+20 (с)-*А) -у(с)Хх2 (с)-Pi (к+4)-*с (с)+а (сН-я+4 (РоУ*с с+1 (С)-*Ро (с)-99 УП (к+20)-Стоп (Plh*C -БП (к+4) - 0101 0102 0103 0104 0105 0106 0107 ОНО 0111 0112 0113 0114 0115 0116 0117 0120 0121-Xi 0122-х2 0264--00 0265-а 0266-0 0267-1 . 0270-99 0271-Ро 0272-Pi 06 07 06 04 07 06 01 07 06 01 07 02 11 13 06 12 0266 0271 0121 0122 0272 0104 0265 0104 0271 0267 0271 0270 0120 0266 0272 0104 Подготовительная группа команд Вычисление произведения Преобразование команд Счетчцк циклов Команды разветвления вычислительного процесса и подготовка к новому циклу Исходные данные Рабочие ячейки щим единицы. Кроме того, необходимо выбрать масштабы так, чтобы в процессе вычислений все промежуточные результаты не выходили за возможный диапазон представления чисел в машине с фиксированной запятой. Процесс подбора масштабных коэффициентов называется масштабированием. В целях выполнения неравенства х<1 для исходных, промежуточных и конечных величин приходится преобразовывать как сами исходные величины, так и математические зависимости, по которым должны выполняться вычисления. Существует несколько способов преобразования исходных данных. Первый способ состоит в том, что все числа, фигурирующие в решаемой задаче, представляются в виде х = 2ва, где Я- порядок числа; а - мантисса. При этом 0,5<;а<1. В этом случае арифметические операции сводятся к выполнению действий над порядками и мантиссами. Действия над порядками и мантиссами выполняются одним арифметическим устройством. Такой искусственный режим работы с плавающей запятой на машинах с фиксированной запятой возможен потому, что с порядками чисел выполняются только действия сложения и вычитания и не выполняются действия умножения и деления. При решении задач в режиме с плавающей запятой на машине с фиксированной запятой составляются специальные подпрограммы, которые включаются в общую программу. Этот способ программирования существенно увеличивает программу решения, требует большого числа ячеек па-, мяти, а также удлиняет время решения за4 дачи (в 4-5 раз). Поэтому такой метод рещения, задач на машинах с фиксированной запятой, имеющих небольшое быстро* действие, следует считать малоцелесообразным. Метод может быть применен в случае необходимости получения высокой точности вычислений- или в случае, когда трудно определить границы изменения переменных. Второй способ решения задач на машине с фиксированной запятой состоит в том, что все арифметические действия выполни- югся над числами, представленными в ненормализованном виде и по абсолютной величине меньшими единицы. В этом случае множители, учитывающие порядок числа, в операциях непосредственно не участвуют. Примем связь между машинными пе- ременными X и реальными величинами х в виде X = тхх, где X- машинное изображение величины х; тх- масштаб. Масштаб тх есть постоянный коэффициент, имеющий значение, при котором выполняется неравенство 1*1 < 1- Подбор масштабов начинается с анализа исходных уравнений и формул с целью определения экстремальных значений переменных. При этом масштаб выбирается из условия IX макс х Тй (24-106) I * макс где Ммакс=1-2- -абсолютное, максимальное значение машинного изображения числа при п двоичных разрядов в раз- fiHflHoft сетке машины; ~ xj-макс - максимальное значение реальной переменной. Для определения границ изменения переменных пользуются приближенными расчетами при некоторых допущениях в постановке задачи или выбирают граничные значения величин из физических соображений или, наконец, производят пробные решения на машине. При программировании с постоянными масштабами точность результата зависит от искусства подбора масштабных коэффициентов. Для увеличения точности вычислений можно выбрать не постоянные масштабные коэффициенты, а изменяющиеся в процессе решения в зависимости от текущих значений переменных. Подготовку задач к решению на машине с фиксированной запятой и постоянными масштабами можно разделить на следующие основные этапы: 1) анализ математических зависимостей, подлежащих решению, с целью установления пределов изменения переменных; 2) подбор постоянных масштабов; 3) преобразование математических зависимостей с*учетом масштабов; 4) составление программы. Рассмотрим масштабирование задачи на простом примере. Пусть требуется вычислить значения функции Vl + x* 2х (24-107) при значениях х, находящихся в интервале 0,1 х < 9. Определим границы изменения у, для чего воспользуемся первой производной от у по х х* - (1 +.л?) 2х2 У\ + х* 2х* Vk+ & Отсюда следует, что при любом значении х, будет справедливо неравенство у<0. Следовательно, функция у монотонно убывающая, имеет экстремальные значения на концах интервала при Xi=0,l и *2=9 и равна: 2/1 5; уг 0,5. Отсюда следует, что функция у в промежутке 0,1x9 изменяется в пределах 0,5 <{/< 5. На основании (24-106) можно определить: /ял = -- 0,1; Преобразуем исходное выражение функции у. Подставляя в (24-107) значения реальных переменных X У х =-и у =-, получаем: У После очевидных преобразований: myVml + X2 2Х 0,2 j/o,01 + X2 -У =- 0,1 Ко,01 +Ха , (24-108) где Л и У - изображения величин, х и у в машине. 1 В выражении (24-108) все величины, в том числе и Ofil+X2, меньше единицы, так как величина X изменяется в пределах 0,01 <Х< 0,9. Окончательные результаты вычислений у По формуле (24-108) будут получаться в масштабе mv=0,2. Для определения истинного значения у полученные результаты из машины в десятичной системе счисления необходимо разделить на Wj,=0,2. После преобразования математических зависимостей с учетом масштабов составля-
|
© 2010 KinteRun.ru автоматическая электрика
Копирование материалов разрешено при наличии активной ссылки. |