|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
书中说到,call指令不可以实现短转移,但如果我call指令转2个字节呢,可以吗?算短转移吗?不是的话,那2是-128~127之间吗?不是吗?他这样表示他的意思行吗?
王爽《汇编语言》第二版习题答案.chm中告诉我这段内容:
题中特别关照别用debug跟踪,跟踪结果不一定正确,但还是忍不住去试试,看是什么结果。
根据单步跟踪发现,执行call word ptr ds:[0eh]指令时,显示ds:[0eh]=065D。
ds:0000~ds:0010不是已设置成stack数据段了嘛,不是应该全都是0的嘛。
于是进行了更详细的单步跟踪,发现初始数据段中数据确实为0,但执行完mov ss,ax;mov sp,16这两条指令后,数据段中数据发生改变。这是为什么呢?中断呗~~~~
程序开始,程序知道栈段在哪,然后自动地把栈段的段地址给ss,是吗?不是的话,你为什么说“发现初始数据段中数据确实为0,但执行完mov ss,ax;mov sp,16这两条指令后,数据段中数据发生改变。”你还没有执行mov ss,ax, ss中的内容是栈段的段地址吗?是的话,你还要执行mov ss,ax干嘛?有个屁用!
王爽《汇编语言》第二版习题答案.chm还告诉我这段内容:
执行call word ptr ds:[0eh]指令时,先cs入栈,再ip=11入栈,最后ip转移到(ds:[0eh])。(ds:[0eh])=11h,执行inc ax……最终ax=3
你鸦的你call word ptr后会将cs推入栈?不是只有call dword ptr和call far ptr才推吗?你怎么都推?书上明明白白写的是只推ip,不推cs,你看了书没有啊!
很久没来拜访这里了,发现这网站搞得越来越不爽了,手机验证,邮箱验证。。。。浪费时间。 |
|