错误:“in”
的操作数类型不匹配生成此行的行是: inb %% eax,%% edx
我试过这个: inb %% eax,$ 0x00000064 和 inb %% eax,$ 0x64
没有改变输出。我也试过'in'而不是'inb'但是我现在正在黑暗中拍摄。
有什么想法吗?
答案 0 :(得分:1)
"在的 B'/强>"表示您执行助记符命令""在大小字节(8位)的操作数上。 inw用于字(16位),inl用于长字(32位),inq用于quad(在64位机器上)。 %eax寄存器为32位,由%ax(16位)组成。 %ax寄存器又由高8位(%ah)和低8位(%al)组成。因此,如果你要使用" inb",你应该使用%al或%ah,例如,
inb %%al, %%dl # from source %%al 8-bit to destination %%dl 8-bit.
使用""使用%eax,您需要附加" l"命令(或省略字母,因为一些编译器可以推断出类型)。也就是说,
inl %%eax, %%edx
应该没问题。