岑小岑 发表于 2013-12-28 21:08:28

王爽汇编语言 监测点10.5,好难理解


为什么(ds:)=11h?执行call word ptr ds:后,为什么是往下直接执行inc ax???

sokou001 发表于 2013-12-28 21:12:55

{:5_90:} 只学到第3章的我建议你反汇编看一下把

岑小岑 发表于 2013-12-28 23:46:31

ryan0632 发表于 2013-12-28 22:29 static/image/common/back.gif
你的推算是怎么来的?

执行call word ptr ds:后,我就不知道ds:中的值为多少,图片上推算的那个是答案.我没看明白

小燕双飞GO 发表于 2013-12-28 23:54:43

这个问题不难理解,我第一次做这题也没有遇到什么难处,首先我们要清楚的是代码中的栈段也是数据段,两段合一了。当执行CALL WORD PTRDS:时,IP(IP=INC AX)这条指令的偏移地址压进栈中的SS:处,然后,转移到DS:处执行指令,因为,SS:=DS:=压进栈的IP=要转移的目标IP,所以是执行inc ax

我是牛牛,双号 发表于 2013-12-28 23:56:08

call far ptr 才会把cs也入栈吧

执行call word ptr
相当于
1. push ip
2.jmp XXX

0eh正好指着栈中刚入栈的ip,然后jmp到这个ip 相当于没有跳转一样
页: [1]
查看完整版本: 王爽汇编语言 监测点10.5,好难理解