. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  关于实验3越界的一个疑问  [待解决] 回复[ 1次 ]   点击[ 573次 ]  
scandy24
[帖 主]   [ 发表时间:2007-12-19 21:46 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:2
注册日期:2007-12-10 14:26
实验三今天搞过了
开始的时候老是报告CPU遇到无效指令,就把
add sp,4
改称
add sp,10
实验得以顺利进行。

后来发现一个问题:
原代码:
assume cs:codesg
codesg segment
  mov ax,2000h
  mov ss,ax
  mov sp,0
  add sp,4
  pop ax //此处栈中还没有push自己的内容呢,就开始pop,不是发生越界的行为了么?这是怎么回事啊,哪位老兄指点一下。
。。。。。。。
mouse
[第1楼]   [ 回复时间:2007-12-20 08:47 ]   [引用]   [回复]   [ top ] 
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34
这里没有push就pop了,程序也不会报错,不过是pop出的数据不能确定,得到的数据也没有什么用处。这样理解的话也应该是“越界”了。

我觉得越界是人为规定的概念,我们设置了一个栈,申请了一段栈空间,如果数据操作出了这个空间就应该叫“溢出”,如果得到的数据不是我想要的,也应该是广义的溢出吧。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved