2012-01-27 13 views
1

我一直負責做一些彙編工作。一切都很順利,直到我不得不將一個程序從使用int轉換爲float。我可能錯過了一些簡單的嘗試,但是有沒有人有建議?我將提供可用的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); 
} 
+3

我們怎麼用花車來幫助,如果你發佈INT版本? – 2012-01-27 16:30:22

+0

我只是想要一些指針,如果我將不得不在使用浮動時更改任何條件操作碼。 – Ryan 2012-01-27 16:34:43

+3

如果您的浮點數都是非負數,則查找最大(單精度)浮點數和查找最大(32位)整數的程序集應該是相同的。 – 2012-01-27 16:37:19

回答

2

您將需要重寫大部分解決方案。如果您是新手,想要使用x87,here是一個很好的閱讀指南。

要測試浮動,你需要這樣的條件跳轉:

fld  <float to compare> 
fcom <maximum value> 
fnstsw ax 
test ah,$1 
jnz  <notbigger> 
相關問題