Не проходит сдаточный тест 791402.
Зацикливается при выполнении
Код:mov #77777,R5 mul #100000,R5
Не проходит сдаточный тест 791402.
Зацикливается при выполнении
Код:mov #77777,R5 mul #100000,R5
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Согласно Wikipedia (на примере 8-битных чисел), это -128: https://ru.wikipedia.org/wiki/Дополнительный_код
Последний раз редактировалось Manwe; 07.02.2020 в 09:17.
manwe.pdp-11.ru
Так, чтобы не происходило зацикливания, вот ваш код:
причина зацикливания в строке 307, команда ASR R2, потому что если на входе в R2 попадётся отрицательное число, то R2 никогда не станет 0 и условие выхода из цикла не выполнится.Код:305 CLR R1 306 CLR R0 ; R0_R1 = R4_R5 * R2 307 3: ASR R2 ; main loop 308 BEQ 6 309 BCC 5 310 4: ADD R5,R1 311 ADC R0 312 ADD R4,R0 313 5: ASL R5 314 ROL R4 315 BR 3 ; end of main loop 316 6: BCC 7 317 ADD R5,R1 318 ADC R0 319 ADD R4,R0 320 321 7: TST R0 ; high 16 bit
Её надо заменить на CLC ROR R2. А в целях оптимизации CLC можно пропустить, т.к. при входе в цикл бит С обнуляется командой CLR R0 в строке 306, а внутри цикла команда ROL R4 в строке 314 всегда вытесняет в бит C число 0.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)