80386汇编中PUSH和PUSHA有关问题

80386汇编中PUSH和PUSHA问题
我看的是杨季文的80386汇编,书中有几个地方我不理解(下面是书中的原文)
1、在调用通过堆栈传递入口参数的子程序时,把立即数直接压入堆栈操作能方便地把常量作为参数传递给子程序。
  PUSH 0F000H ;压入立即数
  PUSH 0 ;压入立即数
  CALL ECHOBD ;调用子程序
  ADD SP, 4 ;平衡堆栈

  这个最后一行的把SP加4平衡堆栈是什么意思

2、当用PUSH指令把堆栈指针SP或ESP压入堆栈时,80386/80286的处理方式不同于8086/8088.8086/8088是将SP减2后的值进栈,而80386/80286是将进栈操作前的SP(ESP)值入栈。

  这句话什么意思

望高手帮帮菜鸟我,谢谢各位

------解决方案--------------------
探讨
我看的是杨季文的80386汇编,书中有几个地方我不理解(下面是书中的原文)
1、在调用通过堆栈传递入口参数的子程序时,把立即数直接压入堆栈操作能方便地把常量作为参数传递给子程序。
PUSH 0F000H ;压入立即数
PUSH 0 ;压入立即数
CALL ECHOBD ;调用子程序
ADD SP, 4 ;平衡堆栈

这个最后一行的把SP加4平衡堆栈是什么意思

……

------解决方案--------------------
2个参数,2个word = 16*2 = 32 ,所以是add 4,相当于push 2次