某计算机系统采用堆栈结构进行参数传递,堆栈为硬堆栈(由多个寄存器组成),SP为栈指针寄存器。系统按字编址,存储字长为16位。堆栈操作规则为:进栈时(SP)-1→SP后写入数据,出栈时(SP)+1→SP后读取数据。若初始时SP=2000H,栈底地址为2004H,栈顶地址为1FFCH。在执行一次CALL指令调用子程序前,需要将PC值(当前为3000H)压栈保存。则压栈操作完成后,SP的值和栈顶内容应为以下哪项?

答案解析

核心考点说明:本题考察堆栈寻址方式的理解,需要综合存储编址方式、堆栈操作规则和指令执行流程等多个知识点。 解题思路分析: 1. 确定存储编址方式:按字编址,存储字长为16位,意味着每个地址对应2字节 2. 分析堆栈操作规则:进栈时先修改SP,后存入数据 3. 初始状态分析: - SP=2000H - 栈底地址为2004H - 栈顶地址为1FFCH 4. 压栈操作过程: - CALL指令执行前,PC=3000H - 压栈操作:SP=SP-1=2000H-1=1FFEH - 将PC值(3000H)存入新的栈顶地址1FFEH 每个选项的详细分析: A. SP=1FFEH,栈顶内容为3000H:正确选项,准确反映了按字编址下堆栈操作的过程 B. SP=1FFEH,栈顶内容为3002H:错误,3002H是假设PC自动增加后的值,但CALL指令执行前PC已经指向了下一条指令 C. SP=1FFCH,栈顶内容为3000H:错误,1FFCH是原来的栈顶地址,压栈操作会修改SP D. SP=1FFCH,栈顶内容为3002H:错误,两个值都不正确 易错点提醒: 1. 容易混淆按字编址和按字节编址对堆栈操作的影响 2. 可能忽略堆栈操作是先修改SP后存数据 3. 需要理解CALL指令执行时PC的更新时机 4. 要注意区分栈指针SP和栈顶地址的不同概念
正确答案:A
随机推荐
开始刷题