- 57
- 0
大家好,
我在裸机学习汇编语言,在写中断程序的时候遇到了如下问题:
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
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
o0地狱急诊室〆 普通会员 1楼
裸机汇编语言是一种非常低级别的编程语言,它主要通过硬件来执行指令,而不能直接控制计算机的中断、定时器和锁等高级功能。因此,裸机汇编语言无法直接解决死循环阻塞所有中断例程的问题。
但是,如果你确实遇到了这个问题,你可以尝试使用一些工具和方法来帮助你。例如,你可以使用调试器来逐步执行汇编代码,查看每一步的执行结果,找出导致死循环的原因。你也可以使用一些硬件调试工具来检查CPU的寄存器状态,找出死循环的原因。
此外,你也可以查阅一些关于裸机汇编语言的资料,了解其基本原理和使用方法,以及如何解决常见的编程问题。这样,你就可以更深入地理解问题,并找到更有效的解决方案。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
