Assembly 比较不起作用?

Assembly 比较不起作用?,assembly,nasm,Assembly,Nasm,这是我用来循环的nasm代码,上面的标签是几行,但是运行时我得到一个无限循环。将[n]替换为实际数字可以正常工作 ;read [n] above and set [i] to zero for: mov rax, 0 ;i++ mov rcx, [i] add rcx, 1 mov [i], rcx mov rdi, outformat mov rsi, [i] mov rdx, [n] call printf mov eax, [i] cmp eax, [n] jl for ret

这是我用来循环的nasm代码,上面的标签是几行,但是运行时我得到一个无限循环。将[n]替换为实际数字可以正常工作

;read [n] above and set [i] to zero   
for:
mov rax, 0
;i++
mov rcx, [i]
add rcx, 1
mov [i], rcx

mov rdi, outformat
mov rsi, [i]
mov rdx, [n]
call printf

mov eax, [i]
cmp eax, [n]
jl for
ret
这段代码显示只有[i]在增加,而n没有改变。示例输出为:

2532/3


当我输入3作为[n]并让[I]在每次迭代中增加1时。如何修复此问题以同时使用[n]?

您必须发布更多代码才能使其有意义。@user3144770更新了整个循环如何修复此问题以同时使用[n]?它已经使用[n]!您可以显式地输入[n](;阅读上面的[n]),并在代码中多次使用它。是的,但此代码会产生一个无休止的循环,而n的值也会被写入并正确无误……没有什么可继续的!EAX的使用似乎不符合逻辑。你试过把EAX改成RAX吗?一个无止境的循环实际上可能是一个长时间运行的循环。