Wiele kompilatorów podchodzi inaczej do wstawek asemblera, stąd ciężko tutaj o jednoznaczną odpowiedź. Porównaj np. kompilator g++ i MSVC++.
Zazwyczaj zmienne lokalne powinny leżeć na adresach niższych niż wartość w rejestrze EBP, natomiast kompilatory potrafią optymalizować kod np. używając do adresowania rejestru ESP. Ogólnie ciężko powiedzieć, jak to będzie tak w ogólnym przypadku. (Może to mi jest poprostu ciężko, bo nie lubię wstawek bezpośrednio w kodzie C/C++.)
Moim zdaniem najprostrzym sposobem tworzenia wstawek jest oddzielna kompilacja kodu C/C++ oraz kodu asm do plików obiektowych, a następnie zlinkowanie ich razem.
Jeżeli samemu piszesz całą funkcję, to zazwyczaj zmienne lokalne będziesz trzymać w ramce stosu właśnie na adresach niższych, niż wartość w rejestrze EBP. Przykładowe odwołanie do zmiennej lokalnej powinno wyglądać np. tak:
mov eax, [ebp - 8]