|
主题 : : 第3章的一道选择题 [待解决] |
回复[ 7次 ]
点击[ 537次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2009-08-05 18:40 ]
[引用]
[回复]
[ top ] | |
荣誉值:9
信誉值:1
注册日期:2009-05-09 14:55 |
刚看到http://www.asmedu.net/bbs/pasteinfo.jsp?part=1&level=book&kind=1004&qkSg=2&qID=9687&readSg=1已经有网友讨论了,但好像这个问题还是没有讨论清楚。
下列说法正确的是:____
1、 数据段和代码段的段地址不能相同。
我的理解:错误。mov ax,cs mov ds,ax 就可以使数据段和代码段的段地址相同。在内存中,数据和代码并没有区别,都是以数据的形式存储的,CS:IP指向的就是代码了。
2、 指令mov ax,bx执行完后bx中的值为零。
我的理解:错误。此处不知道bx中存储的数据是多少,所以无法判断执行完后bx中的值是多少。猜测此题大致想说bx中的值赋给ax后,bx中就没有了,就成为0了。
3、 一个栈段的大小可以设为任意值。
我的理解:错误。栈顶范围0~ffffh,所以栈段的容量最大为64KB
4、 当SP=0时,再次压栈将发生栈顶超界,但压栈操作有效。
我的理解:最初的想法是,空栈时SP也可以为0(第二版,P68问题3.11),压栈后根本不会出现栈顶超界的问题,此选项错误。但再一看题目,“再次压栈”,表明之前已经进行过压栈操作了,所以栈不会是空的,所以再次压栈就会造成栈顶超界,但我不明白为什么“但压栈操作有效”,望高人指教。
我还没过第3章,估计这题的答案可能是选项4.
我觉得这题出的挺偏,颇有咬文嚼字之感,让我想起了高中应试下的枯燥题海。个人很讨厌此类题型,第2章也发现有此类偏题,小失望,希望题库也能不断更新和升级,能够配得上王爽老师的教材! | | |
|
|
|
|
[第1楼]
[ 回复时间:2009-08-06 00:24 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-08-03 09:48 |
我是这样认为的:
SP=0000H,这时SP指向当前段的内存地址最小值,并且SS没有改变,这时压栈的话只能覆盖当前栈段的最后两个内存地址里的信息,所以操作还是算有效的。 | | |
|
|
|
|
[第2楼]
[ 回复时间:2009-08-06 07:32 ]
[引用]
[回复]
[ top ] | |
荣誉值:35
信誉值:44
注册日期:2008-09-03 21:36 |
当然有效果。你看看什么时候push ax 这种指令不能执行?
呵呵,后半句的意思就是 push指令的执行与 堆栈大小 无关;不会出现什么 no command 那样的提示 | | |
|
|
|
|
[第3楼]
[ 回复时间:2009-10-02 12:21 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2009-07-06 18:18 |
栈本来就是编程的一种规划而已。
并不是真的有个什么东西在限制。 | | |
|
|
|
|
[第4楼]
[ 回复时间:2009-10-02 15:10 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:8
注册日期:2009-09-30 22:35 |
1、 数据段和代码段的段地址不能相同。
我的理解:错误。mov ax,cs mov ds,ax 就可以使数据段和代码段的段地址相同。在内存中,数据和代码并没有区别,都是以数据的形式存储的,CS:IP指向的就是代码了。
我觉得数据段包含代码段,这样它们当然就可以相同了。
另外,第四个问题,它的sp=0,那么入栈一个为fffeh,再入一个fffch,这样必须要把这么多的压入,才会有超界的情况。 | | |
|
|
|
|
[第5楼]
[ 回复时间:2009-10-14 16:49 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-10-14 16:10 |
|
|
|
|
|
[第6楼]
[ 回复时间:2009-10-15 11:56 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:4
注册日期:2009-09-28 22:40 |
|
|
|
|
|
[第7楼]
[ 回复时间:2009-11-24 22:20 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-11-17 18:18 |
楼上正解,而SS不变 SP改变会造成 栈顶超出部分覆盖“栈底”的数据。 成环状了,对不对啊 楼下的? | | |