设CS=1000H,DS=2000H,ES=3000H,SS=4000H,IP=100H,SP=200H,BX=300H,BP=400H,SI=500H下一条待执行指令地址?

当前栈顶得物理地址?[BX]代表的存储单元的物理地址?ES:[BX+SI]代表的存储单元的物理地址?

1. 栈顶物理地址可以通过栈基址SS与栈顶偏移SP得到:
PA = SS * 10h(16d)+ SP = 4000h * 10h + 200h = 40200h;

2. 由于引用[BX]的段寄存器默认为DS,此时存储器指针偏移为BX,因此其物理地址可以通过DS与BX得到:PA = DS * 10h(16d)+ BX = 2000h * 10h + 300h = 20300h;

3. ES:[BX+SI]。此时引用的段寄存器为ES,其存储器指针偏移为BX + SI,因此物理地址可以通过ES和BX与SI之和得到:PA = ES * 10h(16d)+ BX + SI = 3000h * 10h + 300h + 500h = 30800h;

4. 当前指令所在的物理地址通过CS与指令指针IP得到:
PA = CS * 10h(16d)+ IP = 1000h * 10h + 100h = 10100h,则下一条执行指令的地址为10101h(实际上需要根据下一条指令生成的机器码位宽来决定IP跳过几个内存单元)。
温馨提示:答案为网友推荐,仅供参考
相似回答