设CS=1000H,DS=2000H,ES=3000H,SS=4000H,IP=100H,SP=200H,BX=300H,BP=400H,SI=500H下一条待执行指令地址?当前栈顶得物理地址?[BX]代表的存储单元的物理地址?ES:[BX+SI]代表的存储单元的物理地址?
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/22 19:12:59
设CS=1000H,DS=2000H,ES=3000H,SS=4000H,IP=100H,SP=200H,BX=300H,BP=400H,SI=500H下一条待执行指令地址?当前栈顶得物理地址?[BX]代表的存储单元的物理地址?ES:[BX+SI]代表的存储单元的物理地址?
设CS=1000H,DS=2000H,ES=3000H,SS=4000H,IP=100H,SP=200H,BX=300H,BP=400H,SI=500H下一条待执行指令地址?
当前栈顶得物理地址?[BX]代表的存储单元的物理地址?ES:[BX+SI]代表的存储单元的物理地址?
设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 = 40300h;
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跳过几个内存单元).