王爽.汇编.第三版.检测点17.1.疑似答案

疑惑
网上有的说答案是“错误”的,是基于int 9h是CPU内部中断,是不可屏蔽中断,所以不受IF影响。而在int 16h过程中,IF是为0的(见备注,进入INT 16h之前IF已经设置为0)。
但是,经查资料,说明键盘中断是可屏蔽的,
这里写图片描述

而且根据目前本书的知识面,在15.2节(Page273),可以断定int 9h确实是可屏蔽中断
这里写图片描述
先做如下分析:
先看int 16的0号的工作过程:
(此时IF=0,TF=0,见备注)
这里写图片描述
请看第(2)步,如果没有则进入第1步,此时如果不打开IF=1,则CPU没有机会处理INT9的按键信息,如此CPU就会在(1)(2)步之间进入死循环,因此第(2)步应该先打开IF=1,然后再进入第(1)步。
如果缓冲区有数据,直接进入步骤(3),继续往下执行,就不需要打开IF=1
备注:
外中断源处理过程:
可屏蔽中断
(1) 取中断码N
(2) 标志寄存器入栈:IF=0,TF=0
(3) CS、IP入栈
(4) (IP)=(N*4),(CS)=(N*4+2)
不可屏蔽外中断(几乎所有由外设引发的中断,都是可屏蔽中断):
(1) 标志寄存器入栈:IF=0,TF=0
(2) CS、IP入栈
(3) (IP)=(N*4),(CS)=(N*4+2) ; (对于8086CPU,N固定为2)

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值