. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  我总觉这题出的不严密,大家看一看。急哭了都。  [已解决] 回复[ 3次 ]   点击[ 350次 ]  
wsay666
[帖 主]   [ 发表时间:2009-06-29 11:48 ]   [引用]   [回复]   [ top ] 
荣誉值:1
信誉值:8
注册日期:2009-06-27 18:30
下列说法正确的是:__4__  
 1、 数据段和代码段的段地址不能相同。  
 2、 指令mov ax,bx执行完后bx中的值为零。  
 3、 一个栈段的大小可以设为任意值。  
 4、 当SP=0时,再次压栈将发生栈顶超界,但压栈操作有效。 
大家都说答案是4,但我总搞不懂啊。如果栈段设的是64K大小的话,SP为0的话,再次压栈SP=SP+2=fffeh    不就内循了吗?这是可以的呀,并没超界啊?
tsembrace
[第1楼]   [ 回复时间:2009-06-29 12:54 ]   [引用]   [回复]   [ top ] 
荣誉值:31
信誉值:3
注册日期:2009-06-15 19:20
1-2-3错误都比较明显了。。
4、sp=0时候压栈为push操作,先sp=sp-2,再将push操作数存入sp=0的前一字单元。此时已经超界,但操作有效,即前一字单元已经存入指定数。
younggay
[第2楼]   [ 回复时间:2009-06-29 13:23 ]   [引用]   [回复]   [ top ] 
荣誉值:273
信誉值:0
注册日期:2008-01-23 20:23
如果栈段设的是64K大小的话,SP为0的话,再次压栈SP=SP+2=fffeh    不就内循了吗?
==================
对。

这是可以的呀,并没超界啊?
============
超出了你本来正确定义的范畴了,循环虽然不会引发系统错误,但是会覆盖掉一些数据。其实这种行为就是越界行为,只不过没有进行判断,让他回绕了,回绕有可能造成程序的错误。
wsay666
[第3楼]   [ 回复时间:2009-06-29 21:53 ]   [引用]   [回复]   [ top ] 
荣誉值:1
信誉值:8
注册日期:2009-06-27 18:30
此贴由 贴主 于 [ 2009-06-29 21:53 ] 结贴。 结贴原因:问题已解决
得分情况: 2楼(younggay):4分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved