首页 > 解决方案 > PUSH 操作入栈

问题描述

假设我必须在汇编中执行以下指令:(x86)

 **PUSH AL
   SUB CL,AL  
   PUSH CL**

其中 CL=34H, AL=34H

如果是这样,我可以将 CL 推入堆栈吗?如果执行上述指令,ESP会减少吗?会设置零标志吗?

上面的代码CL会变成0,如果是这样,我可以把它压入堆栈吗?这会影响堆栈指针吗?

标签: assembly

解决方案


的 和 的值ALCL您是否可以将它们压入堆栈无关。重要的只是堆栈段SS和堆栈指针SP(或ESPRSP,取决于操作模式)。如果堆栈指针指向堆栈内部并且寄存器的大小在堆栈指针和堆栈限制之间,那么您可以压入寄存器。

也就是说,x86 中没有实际指令来推送 8 位寄存器。


当你推动时,SP会减少。您推送的寄存器保持不变。


推荐阅读