The problem is with the line S is S + R.. In prolog, one variable cannot take on different values within the body of a clause. Here you expect the value of S to change, but this cannot work (except if R is 0, in which case S stays the same; hence why it already works for single element lists).
You need to use a different variable to store the intermediate result, and only use the output variable for the final result. E.g.:
mult([], _, 0).
mult([X|Xs], A, S):-
mult(Xs, A, R),
Tmp is (X * A),
S is Tmp + R.
I also took the liberty to fix the singleton variable warning you were getting. Although in this case it was harmless, you should never ignore them as they often point to flawed logic.