mov的指令后缀无效?

我有这段内联汇编代码,应该以文本模式打印4:

    void print(){
        asm volatile(
            "mov ax,0xb800\n"
            "mov ds,ax\n" /*<-as complains about this*/
            "movb 0,'A'\n"
    ); 
} 

但是,当我尝试使用gcc(带有-m32和-masm = intel)进行编译时:

./source/kernel.c: Assembler messages:
./source/kernel.c:4: Error: invalid instruction suffix for `mov'

顺便说一句,这段代码来自我操作系统的内核,所以我不能使用stdio.h或类似的东西。