问答题
从80186开始,PUSH指令的操作数可以是立即数。什么情况下这很有用?请举例说明。
【正确答案】在调用通过堆栈传递入口参数的子程序时,把立即数直接压入堆栈的操作能方便地把常量作为参数传递给子程序。
例如:PUSH 0F0000H ;压入立即数
PUSH 0000 :压入立即数
PUSH ECHOBD ;调用子程序
ADD SP,4 ;平衡堆栈
有一点要注意,当用PUSH指令把堆栈指针SP或ESP压入堆栈时,80386/80286的处理方式不同于8086/8088。8086/8088是将SP减2后的值进栈,而80386/80286是将进栈操作前的SP(或ESP)中的值进栈。
【答案解析】