2012-01-19 92 views
0

我试图编写将切换任务的程序。似乎一切正常,但有一件事:不能切换任务。只有最后一个远程调用似乎工作

IRQ0_handler: 
push eax 


push screen_selector 
pop es 

db 9ah  ; far call TSS_1:00 
dw 00 
dw TSS_4 

db 9ah  ; far call TSS_1:00 
dw 00 
dw TSS_2 

db 9ah  ; far call TSS_1:00 
dw 00 
dw TSS_3 

mov al,20h 
out 20h,al 

pop eax 
iret 

此irq处理程序应该切换任务,但它似乎它只调用最后一个。这里的任务之一的代码(所有的人都几乎相同,不同的任务应该会显示不同的字符)

TaskOne: 

push es 
push screen_selector 
pop es 

mov ah, 1bh 
mov al, '1' 

mov es:[di], ax 
add di, 2 
pop es 
iret 
jmp TaskOne 
+0

如果没有看到所有的代码,很难说出错。顺便说一句,我不确定所有寄存器都正确保存/恢复。 –

+0

对不起,也许我应该早点写。问题解决了。这只是打印字符的麻烦。不过谢谢。 – Roman

回答

1

的代码实际上应该工作。这只是打印字符的麻烦。

相关问题