我有一些在内联汇编中使用inb指令的C代码。我听说inb采用大小为8位的操作数。 AL和DL是8位,所以为什么不能做这项工作?
__asm__ __volatile__("inb %al, %dl");
它表示"操作数类型不匹配"。如果重要,我有" .code16gcc"在顶部。 感谢所有帮助。
答案 0 :(得分:1)
两件事:在AT& T风格的汇编中,目标操作数是最后一个,即使数据是8位,端口号也是16位。所以:
inb %dx, %al