Assembly 无法切换任务。似乎只有最后一次远征才有效
我正在试着写一个程序来切换任务。似乎一切正常,但有一件事:Assembly 无法切换任务。似乎只有最后一次远征才有效,assembly,x86,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
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