> For the complete documentation index, see [llms.txt](https://mentebinaria.gitbook.io/assembly/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mentebinaria.gitbook.io/assembly/apendices/codigo-de-maquina/immediate.md).

# Immediate

O campo *immediate* (valor "imediato") pode ter 1, 2, ou 4 bytes de tamanho. Ele é o operando numérico presente em algumas instruções. Exemplo:

```nasm
mov eax, 0x11223344
```

Essa instrução em código de máquina fica: `B8 44 33 22 11`

Onde `B8` é o *opcode* da instrução e `44 33 22 11` o valor imediato (`0x11223344`). Lembrando que a arquitetura x86 é *little-endian*, portanto o valor imediato fica em *little-endian* na instrução.

O tamanho desse campo é definido pelo atributo **operand-size**, portanto ao usar o prefixo `66` o seu tamanho pode alternar na instrução entre 16-bit e 32-bit. Sobre instruções com operandos de 8-bit, como `mov al, 123`, existem *opcodes* específicos para operandos nesse tamanho portanto o prefixo não é usado nessas instruções. E obrigatoriamente o *immediate* terá 8-bit de tamanho.

Outros dois exemplos seriam `mov ax, 0x1122` e `mov al, 0x11`. Onde o primeiro tem o código de máquina `66 B8 22 11` em modo de 32-bit, e em modo de 16-bit fica igual só que sem o prefixo `66`.

Já a segunda instrução terá o código de máquina `B0 11` em qualquer modo de operação, já que ela independe do **operand-size**.
