题目
假定(SS)=2000H,(SP)=0100H,(AX)=2107H,执行指令PUSH AX后,存放数据 21H的物理地址是( )。A. 20102HB. 20101HC. 200FEHD. 200FFH
假定(SS)=2000H,(SP)=0100H,(AX)=2107H,执行指令PUSH AX后,存放数据 21H的物理地址是( )。
A. 20102H
B. 20101H
C. 200FEH
D. 200FFH
题目解答
答案
D. 200FFH
解析
本题考查堆栈操作中PUSH指令的执行过程及物理地址的计算。关键点在于:
- 堆栈段寄存器(SS)和堆栈指针(SP)的使用;
- 小端存储方式下数据的存储顺序;
PUSH指令执行时SP的变化规律。
步骤1:确定初始状态
- SS = 2000H(堆栈段地址)
- SP = 0100H(堆栈指针初始值)
- AX = 2107H(待压入堆栈的值)
步骤2:分解AX的值
AX的值2107H分解为两个字节:- 高字节:
21H - 低字节:
07H
- 高字节:
步骤3:执行PUSH AX指令
- 小端存储:低字节先存入当前
SP指向的地址,高字节存入SP-1地址。- 低字节
07H存入SS:SP = 2000H:0100H,对应物理地址:
$2000H \times 16 + 0100H = 20100H$ - 高字节
21H存入SS:00FFH(SP-1),对应物理地址:
$2000H \times 16 + 00FFH = 200FFH$
- 低字节
- 更新SP:
SP减2,变为00FEH。
步骤4:确定存放21H的物理地址
- 高字节
21H存放在SS:00FFH,对应物理地址为200FFH。