Wywołanie procedury napisanej w języku assemblera z poziomu procedury napisanej w języku C
Wywołanie procedury napisanej w języku assemblera z poziomu procedury napisanej w języku C najczęściej występuje wtedy, gdy dana procedura ma wykonać jakieś operacje niskopoziomowe, a umieszczanie tego kodu w linii języka C powodowało by znaczne zmniejszenie czytelności programu.
Aby wywołać procedurę w assemblerze należy ją najpierw zdefiniować w pliku nagłówkowym:
Dzięki temu taką procedurę można wywoływać w standardowy sposób, tak jak zwykłą procedurę napisaną w języku C.
Argument przekazany z poprzedniej procedury zostaje umieszczony na stosie. Aby mieć do niego dostęp wpierw należy zachować wartość rejestru ESP w rejestrze EBP, dzięki czemu możemy używać stosu, bez zmiany wskaźnika do argumentów. W tym wypadku adres pierwszego argumentu to [SS:EBP+8]. Wartość przesunięcia jest wynikiem sumy wielkości adresu powrotu do poprzedniej procedury i wielkością rejestru EBP zachowanego na stosie (dwa słowa po cztery bajty - w sumie osiem bajtów).
Etykieta procedury w assemblerze powinna być symbolem globalnym, dzięki czemu konsolidator jest w stanie odpowiednio połączyć pliki obiektowe. W tym wypadku aby symbol etykiety był globalny należy umieścić dyrektywę GLOBAL load_gdtr w kodzie programu.