Assembly 汇编代码调试

Assembly 汇编代码调试,assembly,Assembly,我有下面的汇编代码 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解决之

我有下面的汇编代码

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解决之前没有任何内容的错误?我猜这就是为什么它会不断循环

cpi r1, 0
brmi answer
我猜ri-0在“cpi r1,0”中不会给出负结果

也许你应该试着把'brmi'放在'sub r1,r2'后面,然后 重新构造代码以使其适合。子操作应设置标志 适当地。即使“子”操作可能下溢,寄存器r1也不能有负值


这似乎是一个粗略的3除程序。

错误是什么?会发生什么?会发生什么?是什么让你认为那里有错误?如果你不知道这段代码应该做什么,你怎么知道它没有做呢?将鼠标悬停在向下箭头上。你被否决了,因为不清楚你的问题是什么。@MikeW我认为rjmp解决方案是为什么它是一个常量循环。我应该在它之前添加一个brmi答案吗?@PMF我相信这是一个简单的错误,因为rjmp解决方案…但我如何才能摆脱循环?rjmp回答?