Witajcie, otóż mam problem z zadaniem na wartość maksymalną.
W c++ posiadam main-a a funkcję napisana jest w assemblerze. Wysyłam tablicę i mam znaleźć największą wartość spośród wszystkich elementów. Kompilować kompiluje, ale wynikiem jest "3", czyli ostatni element z tablicy. Problem z tym, że nie wiem - dlaczego.
Oto kod z c++
#include <iostream>
using namespace std;
extern "C" int iloraz(int*,int);
int main()
{
int wynik;
int tab[]={2,2,7,2,3};
wynik = iloraz(tab,5);
cout << wynik;
return 0;
}
A tu assembler :
section .data
section .text
global max
max:
mov rax, 0
mov rbx, 0
mov rdx, [rdi]
porownaj:
cmp rbx, rsi
je end
mov rcx, [rdi + rbx*4]
cmp rcx, rdx
ja przypisz
dodaj:
inc rbx
jmp porownaj
przypisz:
mov rdx, rcx
jmp dodaj
end:
mov rax, rdx
ret
Z gory dzieki za pomoc ;-)