Найти минимальное положительное число в последовательности чисел (n=14) - Assembler/CompModel

Узнай цену своей работы

Формулировка задачи:

Вот есть код, не могу разобраться в чем ошибка.
RD #40
WR 37
RD #14
WR 38
M3: RD @37
JS M1
WR 60
RD 37
WR 61
RD 38
WR 62
M2: RD @61
JS M4
SUB 60
JNS M2
RD @61
WR 60
M4: RD 61
ADD #1
WR 61
RD 62
SUB #1
WR 62
JNZ M2
M1: RD 37
ADD #1
WR 37
RD 38
SUB #1
WR 38 
JNZ M3 
WR 60 
OUT 
HLT

Решение задачи: «Найти минимальное положительное число в последовательности чисел (n=14)»

textual
Листинг программы
RD #0
WR 39
RD #40
WR R0
M1: RD @R0+
JS M3
JZ M3
WR 38
RD 39
JZ M2
SUB 38
JS M3
M2: RD 38
WR 39
OUT
M3: RD R0
SUB #54
JNZ M1
HLT

Объяснение кода листинга программы

  1. Считывание данных с прямого адреса 0, запись результата в регистратор 39.
  2. Считывание данных с прямого адреса 40, запись результата в регистр 0.
  3. Переход к блоку M1.
  4. Считывание данных с регистра 0, увеличение значения на 1.
  5. Проверка условия: результат сравнения меньше 0.
  6. Переход к блоку M2.
  7. Считывание данных с регистра 38, запись результата в регистр 39.
  8. Проверка условия: значение регистра 39 равно 0.
  9. Переход к блоку M3.
  10. Считывание данных с регистра 0, уменьшение значения на 54.
  11. Проверка условия: результат сравнения меньше 0.
  12. Переход к блоку M1.
  13. Переход к блоку M3.
  14. Считывание данных с регистра 0, запись результата в регистр 38.
  15. Переход к блоку M2.
  16. Считывание данных с регистра 38, запись результата в регистр 39.
  17. Переход к блоку M1.
  18. Переход к блоку M3.
  19. Считывание данных с регистра 0, уменьшение значения на 1.
  20. Переход к блоку M1.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.636 из 5
Похожие ответы