问题 单项选择题

在32位处理器上,假设栈顶指针寄存器的当前值为0x00FFFFE8,那么在执行完指令“push eax”(eax为32位寄存器)后,栈指针的当前值应为()。

A.0x00FFFFE4

B.0x00FFFFE6

C.0x00FFFFEA

D.0x00FFFFEC

答案

参考答案:A

解析:

[要点解析] 栈是一种先进后出的数据结构,栈有一个存储区和一个栈顶指针。栈顶指针指向堆栈中第一个可用的数据项(被称为栈顶)。用户可以在栈顶上方向栈中加入数据,这个操作被称为压栈(push)。压栈以后,栈顶自动变成新加入数据项的位置,栈顶指针也随之修改。用户也可以从堆栈中取走栈顶,称为弹出栈(pop)。弹出栈后,栈顶下的一个元素变成栈顶,栈顶指针随之修改。

本试题中,由于eax是一个32位寄存器,其值将占用4字节存储空间,因此,执行“push eax”指令后,栈顶指针寄存器的当前值将修改为(0x00FFFFE8-4)=0x00FFFFE4。

问答题 简答题
选择题