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
如果没有看到所有的代码,很难说出错。顺便说一句,我不确定所有寄存器都正确保存/恢复。 –
对不起,也许我应该早点写。问题解决了。这只是打印字符的麻烦。不过谢谢。 – Roman