. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->汇编语言学习交流区
主题 : :  [讨论]第四章就开始接触的“中断”问题  [待解决] 回复[ 3次 ]   点击[ 1000次 ]  
mess
[帖 主] [ 发表时间:2008-03-26 10:09 ] 
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48
下面是一个博客的帖子,说的是在做实验5.6的时候碰到的中断问题。其实关于中断问题从第四章第一个程序就开始了(虽然第一个程序实dos下运行没有问题)。根据汇编书前言提到的“知识屏蔽”,我们没必要深入了解中断问题,但是简单了解还是很有必要的:-)
http://www.asmedu.net/blog/user/postcontent.jsp?neighborId=8327&kindLevel=1&kindId=9631&postId=13172

下面是这篇博文主人的疑惑,大家讨论啊~~
(我觉得这三个问题感觉很绕口,不过根据经验越是绕口的问题解决后越能把知识理解清晰。:)
由此我产生疑问: 
1>是不是在DEBUG 中 -G 也是中断指令啊,会用到堆栈段. 
如果-G 不算中断指令,那么SS段的数据被改写了,像是运行了-T指令后的效果.为什么? 
2>若程序中只设置SS段地址而不初始SP的值,SS段能做为一个数据段来使用,即:DEBUG中-T指令运行的数据不保存在堆栈SS段中.为什么? 
3>若程序中只设置SS段地址而不初始SP的值,那么DEBUG 中T 指令运行后,保存的数据在哪个存储空间?是堆栈SS吗?
crazyman
[第1楼] [ 回复时间:2008-03-26 16:15 ] 
荣誉值:152
信誉值:3
注册日期:2008-01-24 21:26
1>是不是在DEBUG 中 -G 也是中断指令啊,会用到堆栈段
================
我觉得从根本上来说G命令应该算不上中断命令吧。但是G命令运行到设置的断点的时候,却会调用其他的中断程序,可能是这个造成了栈空间数据被更改了。

2>若程序中只设置SS段地址而不初始SP的值,SS段能做为一个数据段来使用,即:DEBUG中-T指令运行的数据不保存在堆栈SS段中.为什么?
=====
我觉得这句话理由有问题。即使不设置sp,也存在栈空间啊,因为默认的ss,sp就是当前栈,T命令执行过程中必然会用到这个栈空间来存放数据。不过,当sp=0的时候,你默认的栈空间是ss指向的那个64K的内存空间。楼主可以根据sp的推算,然后去debug查看。

3>若程序中只设置SS段地址而不初始SP的值,那么DEBUG 中T 指令运行后,保存的数据在哪个存储空间?是堆栈SS吗?
--------------
不设置sp,就是将当前默认的sp与ss指向的当前栈空间的栈顶下一个字节。栈是任何时候都存在的。因为你的ss,sp必然都会有一个值。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved