Техника - молодёжи 1985-06, страница 42

Техника - молодёжи 1985-06, страница 42

трудно. Скажем, появление на индикаторе нуля означает: «Корней нет», появление единицы — «Имеется один корень» и т. д. Часто так и поступают. Однако у этого метода есть существенный недостаток: можно спутать шифрованное сообщение с результатом вычислений. К счастью, есть и другой путь.

Мы уже знаем, что в микрокалькуляторе используются и такие символы для записи шестнадцатиричных чисел, которые не спутаешь ни с одной десятичной цифрой. Оказывается, есть возможность, формально выполняя некоторые «противозаконные» операции, получать на индикаторе и запоминать в адресуемых регистрах комбинации этих символов с обычными цифровыми. Их-то и удобно использовать в качестве сообщений; как их получать, скажем позже, а пока договоримся использовать следующие шифры: Е00 — «Корней нет», Е01 — «Один корень», Е02 — «Два действительных корня» И Г. — «Корни комплексные». Для хранения шифров тоже нужны регистры. Поэтому в дополнение к предварительному распределению памяти запишем: Е00->0, Е02-^4, E0W3, Г. (Цифрами 0, 3, 4, 5, как и раньше, обозначены номера адресуемых регистров.)

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

Остановимся на такой структуре ввода-вывода: коэффициенты вводятся в естественной последовательности — а, Ь, с; окончанием каждого ввода является нажатие клавиши С/П; после останова на индикаторе появляется шифрованное сообщение о характере результата, затем, после нажима С/П и следующего останова, высвечивается один корень, а после нажима клавиши

ХУ — второй (если он есть).

ч-

Все технические требования к программе изложены, можно приступать непосредственно к ее составлению. Рекомендуем записывать программу так, как показано на рисунке, — указывать, кроме самих команд, их

адресов и кодов, еще и содержимое регистров стека, хотя бы тех, которые могут понадобиться в дальнейшем Желательно оставить еще одну колонку для кратких примечаний. Они помогут ориентироваться в программе — иной раз легче написать новую, чем разобраться в старой. Мы же в первом примере используем подробные примечания.

«Ввод а». Эта операция выполняется перед пуском программы. Величина а набирается на клавиатуре. Набор заканчивается нажимом клавиши С/П.

00. Запись а в адресуемый регистр А.

01. Останов для ввода Ь. Набираем значение коэффициента на клавиатуре и снова нажимаем С/П.

02. Подготовка стека для приема значения с.

03. Введен третий параметр уравнения, коэффициент с. Ввод закончен. Теперь клавиша С/П запускает программу на счет.

04. Вычисляем Ci = —с.

(Внимание: задавать с в экспоненциальном виде нельзя; в этом случае команда 04 изменит знак не мантиссы, а показателя.)

05. Проще всего вызвать а из «собственного» регистра А.

06—07. В стеке ничего не меняется. Мы лишь проверили, равно ли нулю содержимое регистра X. Если да, то есть если уравнение вырожденное, будем выполнять команду по адресу 08 (ветвь Ai—Bj). Если нет — перейдем к команде, записанной по адресу 23 (ветвь А2—В2).

08—09. Две команды использованы только для того, чтобы вернуть в регистр X значение Ь. Казалось бы, можно обойтись и одной — ИП В. Но нужно «помнить о будущем» — скоро придется делить Ci на Ь, а при таком распределении чисел в стеке, как теперь, для этого все подготовлено.

10—11. Если Ь=0, то перейдем к команде по адресу 19 (на ветвь 5— 6), иначе — по адресу 12.

12—18. Вычисления по ветви 3—4.

АДРЕС

команда

код

с

X

ее

к

адрес

.on

с

т

E

к

X

У

т

XI

пипмпдо

i мщ

X

V

г

т

XI

00

ПА

4-

а

31

ИПА

6-

а

&

d

01

с/п

50

е

а

32

Ч-

13

&

d

а

02

t

6

6

а

33

/-/

0L

Ха

d

а

03

%

50

с

6

а

34

m

41

Хг

d

а

04

/-/

0L

<-<

6

а

35

ж

14

d

Хя

05

ИПА

6-

а

с,

е

36

Fx<0

06

Гх-о

37

48

48

07

23

23

38

/-/

0l

-d

Хч

а

08

FO

25

с,

в

а

39

FV

21

}f=a

X,

а

09

~уТ

14

б

С,

40

ипа

6-

а

\R

ха

10

Fx*o

57

,41

-т-

13

W

х,

11

19

19

42

ип5

65

г.

xim

X,

12

-4-

13

f-

43

%

50

13

ипз

63

Е01

x,

44

Fo

25

x-im

X-Ij

14

%

50

45

с/п

50

15

XV

14

х,

Е01

46

БП

51

16

%

50

47

59

59

17

БП

51

48

Г\Г

21

Vd

а

18

59

59

49

ИПА

6-

а

Vd

19

ипо

60

E0Q

6

50

-г-

13

#

X,

20

%

50

51

10

v/d а

21

БП

51

52

ИП1

61

X,

x,

22

59

59

53

FBx

0

ж

а

хя

х,

23

x

12

ас,

в

а

54

-

11

vjtt

2 4

Ж

14

6

ас,

а

55

ИП4

64

Б02

x2

х,

25

2

02

2

в

ас,

а

56

с/п

50

26

ч-

13

н

ас,

а

57

Fo

25

Хг

x,

27

пв

4L

В

ас,

а

58

%

50

28

22

В2

ас,

а

59

БП

51

29

+

10

вЦ

а

60

00

00

30

ипв^

6L

в

<*

а 1

40