当前位置: 代码迷 >> 汇编语言 >> MS Virtual-PC中通过CALL指令进行任务转换的有关问题
  详细解决方案

MS Virtual-PC中通过CALL指令进行任务转换的有关问题

热度:3362   发布时间:2013-02-26 00:00:00.0
MS Virtual-PC中通过CALL指令进行任务转换的问题。
主机:Windows 7。使用WINDOWS VIRTUAL PC软件,创建一个祼机,在祼机上编写软件执行任务切换。
发现,使用CALL指令进行任务切换,可以成功运行。但是,用以下指令检测EFLAGS寄存器的NT位,发现是“0”。于是,导致使用IRETD指令返回到上一个任务时出错:

PUSHFD
POP EDX
;(显示EDX寄存器的内容)

但是,使用BOCHS和VBOX都没有这个问题,程序运行正常。
怀疑这是个缺陷,但想了想,不应该是个缺陷,毕竟这是最基本的东西。大家说说,到底是什么原因。

------解决方案--------------------------------------------------------
为什么使用CALL切换任务呢?
万一哪个程序死循环了,你的系统也就这样死了
------解决方案--------------------------------------------------------
pm下,在call之后,NT是一定要置位的,如果没发生就很可能是bug。
还有就是任务切换都发生在中断里面,现在的pc机上的os都是硬件抢断式。
  相关解决方案