【发布时间】:2013-06-03 06:00:03
【问题描述】:
我有一个大问题困扰了我一个月!
我正在编写汇编代码以通过 call far [es:esi + TCB.addr_tss] 在 bochs 中进行任务切换,如图 1.
现在我进入了新任务,所以我在 bochs 中输入“s”,如图 2:
目前看来一切正常,通用寄存器 CS、SS,控制寄存器 CR0、CR3,LDT 也正常。但是你知道如果我再迈一步会发生什么吗?见下图:
怎么了?! 我不知道。我检查了 DPL,段限制,似乎没有错。 哦,上帝保佑我……
【问题讨论】:
-
你能上传完整的可运行代码吗?
-
准备是多余的,TSS上下文切换后的代码只是一个
mov eax, eax。
标签: assembly operating-system x86 kernel mbr