不能切换任务。只有最后一个远程呼叫似乎有效

时间:2012-01-19 17:24:07

标签: assembly x86

我正在尝试编写将切换任务的程序。一切似乎都正常,但有一件事:

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

1 个答案:

答案 0 :(得分:1)

代码实际应该有效。打印字符只是麻烦。