__asm
{
mov dx3,fah
mov al,10000000b
out dx,al
}

上記のようなアセンブルプログラムをGCCに移植したいのですが
エラーが出て困っています。GCC版のプロラムは

asm("movb %%dx,$0x3fah");
asm("movb %%al,$10000000b");
asm("out %%dx,%%al");

エラーメッセージは「bad register name '%%dx'」「bad register name '%%al'」
です。GCC版のプログラムに誤りがあると思うのですがどこが間違っているのでしょうか?