我尝试用循环组装代码,但我是这种语言的新手,我找不到如何实现它。
所以我想要的代码是关于Fibonacci序列。
问题是我想要为许多用户输入重复循环 (他想要打印多少斐波纳契数字),但我找不到如何做。
代码适用于x86架构。
答案 0 :(得分:0)
我没有长时间触摸x86汇编程序,但以下内容应该可以正常工作
label:
movl $3, %ecx // put 3 into ecx register
// your code
decl %ecx // decrement value in ecx register
jnz label // loop back to label if ecx register is not zero
显然,您将用户输入的数量存储在ecx寄存器中而不是3 另外我假设你已经有了获取用户输入的代码,否则需要更多的汇编代码
答案 1 :(得分:0)
如果我对你的问题的理解没有错,它会问“如何写一个循环?”
所以,这是一个基本循环的框架,它迭代n
次...
假设您已从用户接受n
并将其存储到-4(%ebp)
...
movl $0, -8(%ebp) # Let's say index i is at -8(%ebp)
jmp condition # unconditional jump for entry-control loop.
for: # Body of the loop
# Your cool code here...
addl $1, -8(%ebp) # i++
condition:
movl -4(%ebp), %eax # Move n into eax
cmpl %eax, -8(%ebp) # Compare i with eax
jl for # if i < n jump to the label `for`
它等同于C中的以下for循环:
for (i = 0; i < n; i++) {
// Your cool code here
}
如果你想要类似循环,你只需删除无条件跳转语句,使它成为一个退出控制循环。