'How does the EBP register get saved?

I couldn't find much information or specification that suits me, so I have no choice but to ask here.
When we call some function with the call instruction and then save the previous stack frame with push ebp, how is EBP saved just before it? Does it save automatically when call instruction was invoked or how? What is the value stored in this register; what do we push?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source