The first lecture is a basic approach to the memory layout of a program and the way the stack works:
Some basic slides on the procedure call protocol:
How the IA32/Linux procedure system works
The next three lectures explain in detail how the IA32/Linux procedure system works using the stack. I extract the key slides:
Very interesting the example explaining the passing to the callee function of a pointer to a local variable (of the caller function).
Finally, I link the two lectures where the procedure call system is explained in detail:
x86-64 Procedures and Stacks
In the x86-64 architecture, the procedure call system is quite different. I extract some overview slides:
I link the lecture for more detail: x86-64 Procedures and Stacks - Video lecture - YouTube.