Суммировать целые числа от 1 до 100 без инструкций увеличения или уменьшения (и без использования формулы Гаусса)? - PullRequest
0 голосов
/ 14 апреля 2020

Напишите программу на языке ассемблера для микропроцессора Intel 8085 для вычисления суммы N натуральных чисел, то есть ΣN = 1 + 2 + 3 +… + (N-1) + N.

Выполните как множество ограничений:

  1. Не используется формула N * (N + 1) / 2
  2. Не используются никакие инструкции увеличения и уменьшения, такие как INR, DCR, INX и DCX
  3. Не использовать адрес памяти для чтения данных и записи результатов вывода (предположим, что регистр аккумулятора одинаков)

Мой код:

START: LDA 3000H
MOV B, A
INR A
MOV C, A
MVI A, 00H

LOOP1: ADD B
DCR C
JNZ LOOP1

MVI C, 02H
MVI B, 00H

LOOP2: INR B
SUB C
JNZ LOOP2

MOV A,B
STA 3001H
HLT

У меня есть попробовал и сделал программу, но с использованием всех этих ограничений, в то время как вопрос просит их не использовать. Поэтому я сомневаюсь, можно ли создать программу, не используя их.

1 Ответ

1 голос
/ 16 апреля 2020

Я думаю, что следующий код удовлетворяет всем условиям:

START:LDA 3000H
MVI B, 00H
MVI C, 00H
MVI L, 01H

LOOP:MOV H, A
MOV A, C
ADD L
MOV C, A
MOV A, B
ADD C
MOV B, A
MOV A, H
SUB L
JNZ LOOP

MOV A, B
HLT

Он не использует формулу guass вместо того, чтобы добавлять одно за другим, и вместо использования инструкций приращения приращения, он использует инструкции add и sub. Результат сохраняется в регистре аккумулятора.

...