堆栈中的PUSH操作

时间:2019-08-14 16:42:18

标签: assembly

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

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

其中CL = 34H,AL = 34H

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

对于上面的代码,CL将变为0,如果是,我可以将其压入堆栈吗?这会影响堆栈指针吗?

1 个答案:

答案 0 :(得分:0)

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

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


按下时,SP会减少。您推送的寄存器保持不变。