我的任务是做一些装配工作。一切都很顺利,直到我不得不将程序从使用int转换为浮点数。我可能在尝试中遗漏了一些简单的东西,但是有人有建议吗?我将提供有效的int版本。
#include <stdio.h>
int n;
int i;
int arr[50];
int output;
int main(void)
{
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
__asm
{
jmp start
switching:
mov eax, ebx
jmp looping
looping:
mov ebx, arr[ecx*4]
inc ecx
cmp ebx, eax
jg switching
cmp ecx, n
jl looping
ret
start:
mov ecx, 0
mov eax, 0
call looping
mov output, eax
}
printf("%d", output);
scanf("%d", &n);
}
答案 0 :(得分:2)
您需要重写大部分解决方案。如果您不熟悉浮点数并希望使用x87,here是一个很好的阅读指南。
要测试浮动,你需要像这样的条件跳转:
fld <float to compare>
fcom <maximum value>
fnstsw ax
test ah,$1
jnz <notbigger>