If I am correct, an assembly language uses the program stack to store data.

Is it correct that the program stack is partitioned to frames, each of which is for a call to a procedure? So there is no part of the program stack, which is not associated with a procedure?

If an assembly program doesn't call any procedure, is it by default a procedure itself? Does it occupy a frame in the program stack?

Thanks.