Вычисление суммы ряда чисел |
Главная / ЭКВМ / Программы / Примеры |
|
Программа предназначена для подсчёта суммы ряда чисел. Подобные задачи встречаются на практике повсеместно. Рассчитать сумму нескольких чисел можно и в режиме автоматической работы калькулятора. Но вывод подсказки в строку комментариев позволяет уменьшить количество ошибок при вводе. Запуск программы выполняется командами "В/О", "С/П". После запуска в строке комментариев выводится текст "Слагаемое 1". Очередное слагаемое вводится в регистр стека RX с клавиатуры. Для суммирования нажимается клавиша "С/П". В строке комментариев появляется подсказка с номером следующего слагаемого, которое следует ввести. В регистре стека RY - текущее значение суммы. После окончания ввода всех слагаемых следует нажать кнопки "ШГ->" и "С/П". В регистр стека RX при этом выводится значение суммы, а в строке комментариев - соответствующий текст. Для обнуления суммы и повторного запуска нажать "С/П".
.CHARSET 1251
; Работа со строкой комментариев
; Формирование строки символов в памяти данных
; Вывод строки символов из памяти данных
STRB .EQU 1000 ; Указатель на строку символов
.ORG 0
CX ; Очистка регистра X и флага ввода
MA ; Обнуление суммы
M4 ; Обнуление номера слагаемого
A1: PP M 9030 ; Индексный регистр 0 буфера
PP M 9031 ; Индексный регистр 1 буфера
KRM4 ; Инкремент номера слагаемого
RM4 ; Номер очередного слагаемого
PP M 9035 ; Преобразовать в текст (регистр 0)
.NUMD STRB ; Указатель на строку в памяти данных
M5 ; Записать в R5
A2: PP RM 9034 ; Содержимое буфера (регистр 1 с автоинкрементом)
KM5 ; Записать в строку STRB
K NOT ; Преобразовать 255 в 0
F X=0 A2 ; Проверка на 0, переход на A2 если не конец строки
.NUML STRM ; Адрес строки STRM ("Слагаемое ")
PP M 9026 ; Вывести STRM в строку комментариев
1 EE 3 ; 1000 - адрес cтроки в памяти данных (содержит номер)
PP M 9027 ; Дописать к строке комментариев
CX ENT ; Очистить RT и RZ при выводе
RMA ; RY - сумма
0 ; Очистить RX для ввода слагаемого (команда "0" поднимает стек)
R/S ; Останов для ввода очередного слагаемого
GOTO A3 ; Переход на A3 (Одновременно команда "К НОП" после "ШГ->" )
.NUML STRM1 ; Адрес строки STRM1 ("Сумма")
PP M 9026 ; Вывести STRM1 в строку комментариев
CX ENT ; Очистить RT, RZ и RY при выводе
RMA ; В RX - сумма
R/S ; Останов для показа суммы
GOTO 0 ; Перейти на начало программы
A3: RMA + MA ; Добавить очередное слагаемое к сумме
CX ; Очистить RX для заполнения индексных регистров
GOTO A1
STRM: .TEXT "\rСлагаемое \0" ; Пробел после слова отделяет его от номера
STRM1: .TEXT "\rСумма\0"
.ENDP
Программа является примером поочерёдного вывода строк из памяти программ и данных, а также демонстрирует способ вывода числа в строку комментариев. Для перехода от одной части программы к другой использован способ пропуска команды при останове, часто применявшийся в советских ПМК. При выполнении "ШГ->" после останова при последующем запуске выполняется не команда "БП 54", а команда, соответствующая коду "54" (адресу в двухбайтовой команде безусловного перехода) - то есть "К НОП" ("нет операции"). Очевидно, что работе программы эта команда не мешает.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
НПП "СЕМИКО" (383) 271-01-25 (многоканальный) |