我在64位w7下用dosbox0.74试过。按书上的设置,在debug中跟踪调试了一遍,与书上所述有出入。结果显示:出栈后,原入栈元素没有如书所说“2266H依然存在”于原来的地址中,而是已经“从内存中消失”。出入栈结果与内存显示完全一致,结果见下面的1——3。接着将sp改为原入栈元素所在地址000eh,执行pop cx,结果cx=0102,内存显示见4-5。不知是不是系统环境不同,没感到书中的“覆盖”问题。
1、执行至入栈前,用d ss:0 f查看栈为:00 00 00 00 00 00 00 00-0C 01 0B 01 83 04 92 01
2、执行入栈后, 用d ss:0 f查看栈为:00 00 00 00 00 00 00 00-0C 01 83 04 92 01 66 22
3、执行出栈后, 用d ss:0 f查看栈为:00 00 00 00 00 00 00 00-0C 01 0D 01 83 04 92 01
4、再执行出栈前,用d ss:0 f查看栈为:00 00 00 00 00 00 00 00-10 01 83 04 92 01 02 01
5、执行出栈后, 用d ss:0 f查看栈为:00 00 00 00 00 00 00 00-10 01 11 01 83 04 92 01 |