Witam. Mam za zadanie napisać w assemblerze program obliczający wartość wielomianu w punkcie z użyciem schematu Hornera.
Dane należy zainicjalizować osobiście wartościami, jakimi się żywnie podoba, nie jest to istotny punkt programu. Wybrałam sobie osobiście tablicę czterolementową int tab[4] = {2, 7, 4, 9} na przechowanie wartości stojących przy x oraz wartość x określiłam jako 3.
Jak powinien wyglądać kod tego programu? Chodzi mi tylko o assemblerowski fragment. Od znajomego, głowiącego się nad tym samym zadaniem dostałam ten kod, jednak ni w grosz nie wiem, jak go doprowadzić do pełnej funkcjonalności.
#include <stdio.h>
int main()
{
int tab[4] = {2, 7, 4, 9}; // zainicjalizowana tablica
int n = 4;
int x = 3; // wartość x-sa
int i;
int wynik;
printf("%d*x3 + %d*x2 + %d*x + %d\n\n",tab[3], tab[2], tab[1], tab[0]);
__asm
{
lea esi, tab
mov ebx, n
mov ecx, n
mov eax, [esi+4*ebx-4]
petla:
mul x
dec ebx
add eax, [esi+4*ebx-4]
dec ecx
jnz petla
mov wynik, eax
}
printf("Wynik wynosi %d\n\n", wynik);
return 0;
}