2014-04-15 4 views
-4

У меня есть следующий код сборкиассемблер отладка

entry: ; initialization 
ldi r1, n ; first we load n into a register 
ldi r2, 3 
ldi r3, 0 

rjmp solve 

solve: ; solving routine 
cpi r1, 0 
brmi answer 
sub r1, r2 
inc r3 
rjmp solve 

answer: 
out PORTD, r3 ; return the answer 
rjmp answer 

ли ошибка, что нет ничего, прежде rjmp не решить? Я предполагаю, что именно поэтому он идет в постоянном цикле

+0

Какая ошибка _is_? Что происходит? Что должно произойти? – PMF

+0

Что заставляет вас думать, что там вообще есть ошибка? Если вы не знаете, что должен делать этот код, откуда вы знаете, что он этого не делает? –

+0

Наведите указатель мыши на стрелки вниз. Вы получаете downvoted, потому что неясно, каков ваш вопрос. –

ответ

0
cpi r1, 0 
brmi answer 

Я думаю ри - 0 никогда не дает отрицательный результат в «CPi r1,0».

Возможно, вам стоит попробовать поставить «brmi» после «sub r1, r2» и , чтобы немного изменить структуру вашего кода. Под-операция должна соответствующим образом установить флаги . Регистр r1 не может иметь отрицательное значение, даже если «под-операция» может переполняться.

Это кажется грубым делением на 3 программы.

Смежные вопросы