裸机汇编语言死循环阻塞所有中断例程求解?

0 0 assembly C
背着98K的男人
背着98K的男人

声望值:306 0人

2018-09-25 15:48:06 提问

关注 0关注

收藏 0收藏, 139浏览

大家好,
我在裸机学习汇编语言,在写中断程序的时候遇到了如下问题:
1.我学习的是x86的汇编语言,在写好中断程序的之后,中断例程有两个,一个是timer定时器,定时在屏幕上print一行文字,然后中断程序返回。
注册送白菜网像这样:
timer.c:

printf;
return;

另一个是打印键盘输入的字符的例程:
keyboard.c:

printf(char c);
return;

2.main函数内初始化完变量之后,进入一个while(1)的死循环。这个情况下,我能看到尽管main程序是死循环,timer和keyboard中断程序还是能不断的执行。
3.问题:一般来说,进入中断要先cli 关中断,然后中断完成后sti开启中断。现在我想做中断嵌套,在timer.c中间加了如下注册送白菜网:
timer.c:

printf;
sti;    //开中断
while(1);    //想让timer中断先等会,看看keyboard中断能不能执行
return;

结果是程序不断在这个while里执行,bochs调试的时候看到另一个中断例程从来得不到执行。并且此时看到eflag寄存器IF位是置1的,然而中断还是无法发生,不知道这个问题该如何解决?

请先 登录 后评论

0个回答

注册送白菜38

悬赏追问
10
  • 10
  • 20
  • 50
  • 100
  • 200
  • 输入数值
发布追问