0

我有一个任务 - 计算函数的 6 个结果 (Y = (20 * x) /(5 * x2 – 8,5)) x - 从 1 开始,每次计算必须增加 4 (1, 5, 9 .. )。

我写了一些代码,但我不明白如何制作循环并将数据放入数组。所有操作都必须在 asm 上 - 循环并放入数组,1 次迭代 - 数组中的 1 个元素

有我的代码:

int main()
{
float REZ[6];
int x = 1;
int A =5;
int B=20;
float C = 8.5;
int D =2000;
int increment = 4;
float part;
float val;

_asm{
finit   
fild x
fimul x
fimul A
fsub C
fstp part
fild D
fimul x
fdiv part
fstp val
}

}

4

1 回答 1

1

我的组装时间早已一去不复返了,但我会努力的。汇编中的循环是通过定义一个标签并跳转到该标签来完成的。根据循环,它是一个条件跳转(经过一些比较):

伪汇编

label1:
    ...
    cmp x, 6
    jlt label1

有关详细信息,请查看X86 组装/控制流程

或无条件跳转:

label1:
    ...
    jmp label1

了解汇编的另一种方法是查看编译器输出。参见例如:

int x, y;
for (x = 0; x < 6; ++x)
    y = (20 * x) / (5 * x2 – 8,5);

告诉 gcc 在程序集输出处停止:

gcc -S 循环.c

并寻找结果loop.s

于 2012-11-03T16:39:07.010 回答