intel 系 チップでも、 Linux の gas と DOS の MASM では
割り込み番号は全く違うのですか?
BIOS レベルでは何等変わらないと思ってるのですが・・

後、MASM というか MS-Cのインライン asm では

asm push ds
asm mov ax, 0x80
asm mov ds, ax
asm mov ah, ds:0x00
asm pop ds

こういう書き方ができたのですが、gcc 用に

__asm__("push %eax
push %ds
xor %eax, %eax
mov $0x40, %ax
mov %ax, %ds
xor %ah, %ah
mov 0x96(%ds), %ah
pop %ds
movb $0x10, %ah
xor %al, %al
int $0x16
pop %eax
ret" );
}

こういうのを書くと

Error: `0x96(%ds)' is not a valid 32 bit base/index expression

こうなってしまいます。どうすれば %ds番地 + 0x96番地の中身を
%ah レジスタに mov できるのでしょうか。