一个汇编语言的问题,大神请进

给定(SP)=0100H,(SS)=0300H,(FLAGS)=0240H,以下存储单元的内容为(00020)=0040H,(00022)=0100H,在段地址为0900... 给定(SP)=0100H,(SS)=0300H,(FLAGS)=0240H,以下存储单元的内容为(00020)=0040H,(00022)=0100H,在段地址为0900及偏移地址为00A0H的单元中有一条中断指令INT8,试问执行INT 8指令后,SP,SS,IP,FLAGS的内容是什么?栈顶的三个字是什么?
答:执行INT 8指令后,(SP)=00FAH,(SS)=0300H,(CS)=0100H,(IP)=0040H,(FLAGS)=0040H
栈顶的三个字是:原(IP)=00A2H,原(CS)=0900H,原(FLAGS)=0240H

其他的都懂为什么FLAGS变成0040H了呢,不懂FLAGS的值是怎么决定的,看资料是各个标志位决定这个值是多少,求详细解释是怎么得出结果的,有图最好,求大神现身
展开
 我来答
百度网友d21f34fe8
2012-12-27 · TA获得超过513个赞
知道小有建树答主
回答量:241
采纳率:0%
帮助的人:79.2万
展开全部

IF (Interrupt enable)——位9,中断许可标志。控制处理器对可屏蔽硬件中断请求的响应。置1 则开启可屏蔽硬件中断响应,置0 则关闭可屏蔽硬件中断响应。

执行int8后,IF标志会由允许中断(EI)变为禁止中断(DI),即由“1”变为“0”。因此,X2XX就变成了X0XX。

CPL、IOPL 和控制寄存器CR4 中的VME 标志决定着IF 标志是否可由CLI、STI、POPF、POPFD 和IRET 指令修改。 

如果想了解其它更详细内容,你可在百度搜索一下“X86标志寄存器,以获得更多有用资料。

希望能对你有所帮助。

(以上部分资料摘自己百度相关文档。)

STCHEY
2012-12-27 · TA获得超过1096个赞
知道小有建树答主
回答量:610
采纳率:50%
帮助的人:337万
展开全部
FLAGS 的 0200H 位IF,是中断允许标志,0表示禁止响应硬件中断,1表示允许硬件中断。

执行CLI指令后,IF=0;执行STI后,IF=1

中断程序遇到IRET指令结束后,包含popf,会恢复之前的FLAGS.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式