assemblyhardware-port

Use "inb" ASM with register as first arg


I would like to use it that way :

inb %cl, %al

But I get :

idt_asm.S:43: Error: operand type mismatch for `in'

Is it even possible ?


Solution

  • No, the instruction is not that general.

    See this reference page for the supported argument forms.

    Basically, for bytes (inb) there are two forms:

    1. inb imm8, al
    2. inb dx, al

    So the destination is always al, and the source is either immediate or taken from dx.