• Где ошибка в коде?

    @AlexandrBrown
    И такс начнем:

    В строках 0x300E, 0x300F и 0x3010 программа использует сложение и отрицание для проверки остатка. Вместо этого попробуй использовать команду MOD или корректную операцию для деления, чтобы проще вычислять остаток.
    Убедсь, что после вычитания в R4 действительно остаётся 0, если число делится без остатка.
    Условия выхода из цикла:
    В строке 0x3014 (команда ADD R4, R1, R3) происходит проверка делителя на превышение корня числа R1. Здесь может возникнуть ошибка: после увеличения R2, R3 следует проверить, не достиг ли он значения, превышающего половину R1. Если это так, программа должна выйти из цикла.

    Использование метки для выхода:

    Команда BR LOOP_START (строка 0x3015) ведёт обратно в начало цикла, даже если число уже определено как простое или составное. Чтобы выйти из цикла в случае определения, что число не простое, замени её на условный переход к меткам PRIME или NOT_PRIME.
    Ответ написан
    Комментировать