in-gcc内联汇编的操作数类型不匹配

时间:2017-11-30 17:48:53

标签: c gcc inline-assembly

我有一些在内联汇编中使用inb指令的C代码。我听说inb采用大小为8位的操作数。 AL和DL是8位,所以为什么不能做这项工作?

__asm__ __volatile__("inb %al, %dl");

它表示"操作数类型不匹配"。如果重要,我有" .code16gcc"在顶部。 感谢所有帮助。

1 个答案:

答案 0 :(得分:1)

两件事:在AT& T风格的汇编中,目标操作数是最后一个,即使数据是8位,端口号也是16位。所以:

    inb %dx, %al