НавигацияВход для пользователейМетки20 лет
25 лет
9860
add-ins
Atmega16
CAS
Casio
casio 9860
Casio fx-570
Casio fx-9750
CITIZEN
ClassPad 330
COM-порт
FA-124
HP
HP-35S
HP-48
HP-50
HP 15C LE
HP 50g
IDE
iOS
mk.exe
mkl2mkp
SPI
TI
TI-89 Titanium
Unix
Андроид
Анонсы
Дополнительные вопросы по SPI-интерфейсу.
Игры
Импульсная характеристика
История
КЭИ
Комбинаторика
Комплексные числа
Конкурсы
Криптография
Куплю БРП Москва
Лунолёт
Лунолёты
МК-52
МК-161
Математика
Мысли
ПМК
ПО
Поломка
Пробел в знаниях
Программные метки в МК-1хх
Программы
Прогрессия
Простые числа
Разложение
Регламент
Самоделки
Секундомер
Сервис
События
Справочное пособие
Стыковка
Факторизация
Физика
Фото
ЭКВМ
Юмор
ЯВУ
браузер
версия
внешний модуль
гибкий
гипербола
дети
калькулятор
книги
компилятор
кривые второго порядка
матрицы
методичка
мк-61
парабола
подзатыльник
практическое руководство
преобразоване координат
программируемый
прошивка
ротор
рынок
справочник
среда разработки
текст
точность вычислений
тригонометрия
учебник
цветы жизни
цифровая обработка сигналов
читалка
шахматы
эллипс
Новости других сайтов |
Определение процентного вклада величин в общую сумму (34, 61, 152)Предположим, что у нас имеется ряд чисел, и требуется найти, какую часть составляет каждое в процентах от общей суммы. Приведенная программа разработана московским инженером А.Б. Бойко и была опубликована в [1] и в одном из номеров журнала "Наука и Жизнь". x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 0x Cx ПD ПС ИПD С/П В↑ Fπ - Fx≠0 25 1x ↔ KПD ИПС + ПС 1 1 ИПD 1 + 2x ПD - F√ БП 03 ИПС 2 F 10x ÷ ПС 3x ИПD 1 - ПD КИПD ИПС КПD ИПD Fx=0 30 4x Fπ С/П Для работы с программой следует нажать "В/О", "С/П". После этого ввести очередное число и нажать клавишу "С/П". Количество введённых чисел выводится в RX перед вводом очередного числа. Для окончания ввода следует набрать число "πи": Fπ, С/П. После окончания расчёта на индикатор также выводится это число. Процентный вклад чисел находится в регистрах от R0 до RC. В связи с ограниченным числом регистров памяти в микрокалькуляторах МК-61, МК-52 (далее - ПМК), для которых была разработана приведенная программа, обработать в ней можно не более 11 чисел. Хотя для решения большинства практических задач и этого достаточно. В адресах 00-04 происходит очистка регистров RC и RD и вывод счетчика в RX. В адресах 05-09 введённое число сравнивается с π. В случае равенства происходит переход к адресу 25. В 10-14 введенное число косвенно через счётчик RD заносится в регистр памяти от R0 до RB. Сумма введённых чисел накапливается в RC. В 15-24 происходит увеличение счётчика на единицу и сравнение его с числом 11. В случае превышения допустимого количества введённых чисел возникает ошибка при вычислении квадратного корня от отрицательного значения. Иначе программа переходит к адресу 03 для ввода очередного числа. В адресах 25-29 накопленная сумма делится на 100 для получения долей в процентах. В 30-39 происходит пересчет содержимого регистров в доли. Цикл организован при помощи уменьшения счётчика на единицу и последующего сравнения с нулём. В 40-41 вывод числа π и останов. Эта программа будет корректно исполняться на ПМК и в большинстве случаев на МК-152 (далее - ЭВМ). Но при вводе двенадцатого числа, не равного "пи", на ЭВМ программа будет работать не так, как задумал автор. В программе для обработки этой ситуации использована особенность работы ПМК. После аварийного останова в результате выполнения некорректной операции выполнение программы продолжается не с того места, в котором она была остановлена. Один шаг программы пропускается. Поэтому в ПМК после вывода сообщения "ERROR" по адресу 22 исполнение будет продолжено с адреса 24. При этом в стек заносится число 3 (код этой команды 03h соответствует адресу перехода). Это число не влияет на выполнение дальнейшей части программы по адресам 25-41. В ЭВМ программа продолжает выполнение со следующей команды без каких-либо пропусков. Что, вообще говоря, гораздо правильнее. Но это приведёт к тому, что в программе переход на адрес 03 будет выполнен в любом случае и счетчик в регистре RD будет увеличен на единицу. В дальнейшем это вызовет ошибки, независимо от того, будет ввод чисел продолжен далее или завершён. Для устранения различия с ПМК на ЭВМ после останова с выдачей сообщения "ERROR" следует нажать клавишу "ШГ вправо". Это вызовет пропуск одного шага программы, что и требуется. К таким эффектам, к сожалению, может привести использование в программе недокументированных возможностей в погоне за избыточной оптимизацией. Вполне уместное решение в программе ПМК, которое делает эту программу короткой, красивой и лаконичной, вызвает проблемы при переносе на другую совместимую модель. x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 0x 1 П0 Сх РП 99 Cx B↑ B↑ ИП0 С/П 1x F≥0 28 РКП 00 РИП 99 + РП 99 ИП0 2x 1 + П0 4 8 - F≥0 05 КИП0 ИП0 3x Fx≠0 05 РП 98 РИП 99 2 F10x ÷ РП 4x 99 РКИП 00 РИП 99 ÷ ПП 77 ↔ РКП 5x 50 КИП0 ИП0 Fx=0 41 1 П0 ПП 77 Cx 6x ИП0 РКИП 00 РКИП 50 С/П ИП0 1 + П0 7x РИП 98 - Fx≥0 57 БП 00 ИП0 5 0 8x + РП 50 Для работы с программой следует нажать клавиши "В/О", "С/П". После этого поочерёдно вводить числа и нажимать клавишу "С/П". Номер вводимого числа выводится в RX. После ввода сорок седьмого по счёту или отрицательного числа происходит расчёт долей. После расчёта на каждое нажатие "С/П" на индикатор выводится: в RZ - номер числа, в RY - введённое значение и в RX - доля в процентах. Можно и не пролистывать всю память, а считать нужные значения прямо из регистров, что более удобно делать в режиме просмотра из главного меню ЭВМ. Для накопления суммы используются регистр памяти R99. Регистр R0 выполняет роль счетчика. В регистрах R1-R47 сохраняются введённые значения. В R51-R97 вычисленные значения долей в процентах. Регистры R50 и R98 служат для временного хранения значений счетчика. В этой программе нетрудно увеличить количество чисел примерно до пяти сотен, а с использованием электронного блокнота ЭВМ и до десятков тысяч. Но на практике такие задачи встречаются достаточно редко и обрабатывать такие объемы информации имеет смысл при помощи компьютера, для этого он и предназначен. Источник: http://mk.semico.ru/dr_info5.htm
|