假设我必须在Assembly中执行以下指令:(x86)
**PUSH AL
SUB CL,AL
PUSH CL**
其中CL = 34H,AL = 34H
如果是,我可以将CL推入堆栈吗? 如果执行以上指令,ESP会减少吗? 会设置零标志吗?
对于上面的代码,CL将变为0,如果是,我可以将其压入堆栈吗?这会影响堆栈指针吗?
答案 0 :(得分:0)
AL
和CL
的值与是否可以将它们压入堆栈无关。重要的只是堆栈段SS
和堆栈指针SP
(或ESP
或RSP
,取决于操作模式)。如果堆栈指针指向堆栈内部,并且寄存器的大小在堆栈指针和堆栈限制之间,则可以压入寄存器。
也就是说,x86中没有实际的指令来压入8位寄存器。
按下时,SP
会减少。您推送的寄存器保持不变。