Разделы


Рекомендуем
Автоматическая электрика  Автоматика радиоустройств 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 [ 126 ] 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270

ции и адресная часть. Такое действие с командами называется преобразованием (модификацией) команд.

Приведем простой пример преобразования команд.

Составим программу для перемножения ста чисел хи х2, ..., xI00. Эти числа можно разместить, например, в ячейках 0245-0410 соответственно. Для решения этой задачи можно составить прямую программу, содержащую 100 команд, В табл. 24-15 приведена прямая программа перемножения ста чисел. Отсюда следует, что прямая программа, требует 200 ячеек памяти (100 для программы и 100 для чисел).

Используя операцию преобразования команд, можно данную программу значительно сократить. Легко заметить, что все команды, кроме первой, отличаются друг от друга лишь адресной частью, причем каждый последующий адрес можно получить из предыдущего путем прибавления единицы к младшему разряду одной части команды в режиме фиксированной запятой.

Таблица 24-15

Условный адрес команды

Условное обозначение команд

Адрес коман -ды

Код операции

Адресная часть

Х±-*С

0101

0245

(с) Xxs

0102

0246

к+3 .

(с)ХХз

0103

0247

к+144

(c)Xxim

0244

0410

Стоп или

переход к

другим опе-

рациям

Обозначим постоянное число, предназначенное для изменения команды, через а и поместим его в ячейку 0411. Тогда программа перемножения 100 чисел с использованием преобразования команд будет иметь вид, приведенный в табл. 24-16.

Таблица 24-16

Э о ш Чи.

Условное обозначение команд

Команда

к+2 к+3 к+4 к+5 к+6 к+7 к 10

>(С)ХХ2

(с)-+Ро (к+2)->с

(с)+а (с)->к+2 (РоНс -БЩк-г-2)

Адрес ко манды

операции

адресная часть .

0101

0245

0102

0246

0103

0412

0104

0102

0105

0411

0106

0102

0107

0412

0102

Программа состоит всего из восьми команд. В конце программы стоит команда безусловного перехода и данный цикл будет выполняться до тех пор, пока машина не будет остановлена с пульта -управления оператором.

Для выполнения вполне определенного количества циклов и автоматической остановки машины необходимо ввести счетчик * циклов.

В конечном виде программа представлена в табл. 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.

После преобразования математических зависимостей с учетом масштабов составля-




1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 [ 126 ] 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270

Яндекс.Метрика
© 2010 KinteRun.ru автоматическая электрика
Копирование материалов разрешено при наличии активной ссылки.