任务切换时老是出现异常导致虚拟机重启,请高手帮忙解答,谢谢了.
代码在附件里.连编译连接工具都打包好了
解压后在\pm目录下,双击makePM.bat就可以直接对pm.asm进行编译连接. 如果没有错误的话会生成可执行文件PM.exe, 把它直接放到虚拟机的DOS模式下运行就可以了.
pm.asm文件中关键的一处是从任务Tss0切换到任务Tss1,代码见文尾贴上的三行. 这三行都是用来跳到Code1代码段的,只是一个是用任务选择子,一个是任务门,一个是直接用调用门.
问题现象: 当选用调用门"CALL32 SelGateCode1,0 "这一句转到Code1时,运行正常,屏幕上显示"123"字样.
当用任务或任务门选择子这两句进行跳转时,会出现错误,提示"An internal Virtual Machine error (13) has occurred,the Virtual Machine will reset now." , 感觉是和TSS设置有关,但就是不知道问题出在哪里,请高手帮忙解答,谢谢了.
;=============================
......
;切换到任务TSS1
CALL32 SelTss1,0 ;直接用TSS选择子跳转,出现异常,HELP!!
;CALL32 SelGateTss1,0 ;用任务门选择子跳转,出现异常,HELP!!
;CALL32 SelGateCode1,0 ;用调用门而不是任务或任务门则OK
jmp $
......
;=============================
pm.rar
(103.91 KB)