. : : 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吗?
startasm
[第3楼] [ 回复时间:2008-03-26 17:02 ] 
荣誉值:50
信誉值:0
注册日期:2007-11-27 20:05
对与楼主问的第二、三个问题是这样的,中断的保护现场的步骤是一定的(计算机可是很死板的啊:-)),一定会用“栈”保护现场,也就是说必须用到ss、sp。

这里有个初学者的疑问。
当执行指令add ax,3这条指令的时候,ax是否是0?答案是不一定,ax值在执行指令之前是有值的(哪怕它是0),其实也是说ax是一个寄存器,它不可能没有值,只有当ax被其他值覆盖了它才发生变化,否则会一直保存上次被覆盖后的值。

这个和设置不设置ss、sp是一样的,sp总会有个值,那么当发生中断时也总会对ss、sp做操作,保护现场。所以也不存在不保存在“栈”的情况出现。但这里是“栈”而不是“栈段”,栈段是我们规定的,在没和ss联系在一起前是没有意义的,只是内存中的一段空间罢了。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved