# Disassemble x86

Disassembly is the process of translating machine language into assembly language. This operation supports 64-bit, 32-bit and 16-bit code written for Intel or AMD x86 processors. It is particularly useful for reverse engineering shellcode. Disassemble x86 lives in the **Others** category of the `fx` menu.

## Parameters

| Parameter                 | Type    | Required | Default                 | Description                                                                                                   |
| ------------------------- | ------- | -------- | ----------------------- | ------------------------------------------------------------------------------------------------------------- |
| Input                     | string  | yes      | —                       | Value to transform. Previous step output or a literal.                                                        |
| Bit mode                  | string  | no       | `64`                    | Choose one of: `64`, `32`, `16`.                                                                              |
| Compatibility             | string  | no       | `Full x86 architecture` | Choose one of: `Full x86 architecture`, `Knights Corner`, `Larrabee`, `Cyrix`, `Geode`, `Centaur`, `X86/486`. |
| Code Segment (CS)         | number  | no       | `16`                    | Numeric value. Default `16`.                                                                                  |
| Offset (IP)               | number  | no       | `0`                     | Numeric value. Default `0`.                                                                                   |
| Show instruction hex      | boolean | no       | `true`                  | Enabled by default.                                                                                           |
| Show instruction position | boolean | no       | `true`                  | Enabled by default.                                                                                           |

`Input` is the primary value (previous step output or a literal).

## Returned value

| Type     | Description                                   |
| -------- | --------------------------------------------- |
| `string` | Result of the Disassemble x86 transformation. |

## Example

<details>
<summary>Run Disassemble x86</summary>

Disassembly is the process of translating machine language into assembly language. Adjust optional parameters when the defaults do not match your payload.

1. Set **Input** to the value to transform (previous step output or a literal).

2. Review **Bit mode**, **Compatibility**, **Code Segment (CS)**, **Offset (IP)**, **Show instruction hex**, and other options and keep defaults unless your format requires otherwise.

3. Confirm **Output value** shows the transformed result.

</details>
