Вычисление суммы ряда чисел |
Главная / ЭКВМ / Программы / Примеры |
Программа предназначена для подсчёта суммы ряда чисел. Подобные задачи встречаются на практике повсеместно. Рассчитать сумму нескольких чисел можно и в режиме автоматической работы калькулятора. Но вывод подсказки в строку комментариев позволяет уменьшить количество ошибок при вводе. Запуск программы выполняется командами "В/О", "С/П". После запуска в строке комментариев выводится текст "Слагаемое 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 (многоканальный) |