Aha, offenbar passiert der GPF, wenn du zum zweiten Task (der mit den Bs) wechselst, aber schon im Scheduler. Daher kommen wohl auch die Werte für cs und ss und das nicht gesetzte IE-Flag.
Vermutlich vergisst du aber im Interruptstub, ds und es auf 0x10 zu setzen, denn das wird dir nicht von der CPU abgenommen.
Außerdem würde ich mir mit objdump anschauen, was an der Addresse 0x10140e für Code steht, denn dort scheint ja das Problem zu liegen. Wie gesagt, der Quellcode davon (auf pastebin), wäre nicht schlecht.
Unterschiede zwischen GRUB und qemu sollte es eigentlich nicht geben. Ich verwende mittlerweile lieber qemu direkt, weil ich es mir dann sparen kann, ein GRUB-Image zu erstellen.
Gruß,
oern