Online x86 / x64 Assembler and Disassembler

Convert between x86/x64 assembly language and machine code with this powerful online tool. Features real-time processing, dark mode, instruction explanations, and a comprehensive reference guide. Perfect for developers, security researchers, and students learning assembly programming. No installation required - runs entirely in your browser.

Documentation & Help

Usage Guide
Instruction Reference
Example Code
History

How to Use This Tool

This tool allows you to convert between assembly language and machine code for x86 and x64 architectures.

Assemble Mode

In Assemble mode, you can type assembly instructions and convert them to machine code:

  1. Enter assembly instructions using Intel syntax, one per line.
  2. Select the target architecture (32-bit or 64-bit).
  3. Click "Process" or toggle "Real-time" for immediate results.
  4. The output will show the hexadecimal representation of each instruction.

Example: mov eax, 1 will be assembled to b801000000

Disassemble Mode

In Disassemble mode, you can convert machine code back to assembly:

  1. Enter a hexadecimal string (e.g., b801000000).
  2. Select the target architecture (32-bit or 64-bit).
  3. Click "Process" or use "Real-time" mode.
  4. The output will show the disassembled instructions with their memory offsets.

The tool automatically removes "0x" prefixes and spaces from your input.

Additional Features
  • Real-time processing: Toggle to see results as you type.
  • Examples: Load pre-configured examples to learn common patterns.
  • Copy Output: Quickly copy the result to your clipboard.
  • Save/Load: Save your work and load it later.
  • Instruction Explanation: Get explanations for what each instruction does.
  • Dark Mode: Toggle between light and dark themes.

Data Movement Instructions

InstructionDescriptionExample
MOVMove data between registers or load immediate datamov eax, ebx
PUSHPush data onto the stackpush eax
POPPop data from the stackpop eax
LEALoad effective addresslea eax, [ebx+8]

Arithmetic Instructions

InstructionDescriptionExample
ADDAdd two operandsadd eax, 5
SUBSubtract second operand from firstsub ebx, eax
MULUnsigned multiplymul ebx
DIVUnsigned dividediv ecx
INCIncrement by 1inc eax
DECDecrement by 1dec eax

Logical Instructions

InstructionDescriptionExample
ANDBitwise ANDand eax, 0xFF
ORBitwise ORor edx, ebx
XORBitwise exclusive ORxor eax, eax
NOTBitwise NOTnot eax

Control Flow Instructions

InstructionDescriptionExample
JMPUnconditional jumpjmp label
JE/JZJump if equal/zeroje label
JNE/JNZJump if not equal/not zerojne label
CALLCall procedurecall procedure
RETReturn from procedureret

Click on any example to load it into the editor:

Hello World (32-bit)
mov eax, 4 ; write mov ebx, 1 ; stdout mov ecx, msg ; buffer mov edx, len ; length int 0x80 ; syscall
Hello World (64-bit)
mov rax, 1 ; write mov rdi, 1 ; stdout mov rsi, msg ; buffer mov rdx, len ; length syscall
Simple Loop (32-bit)
mov ecx, 10 ; counter loop_start: dec ecx jnz loop_start ; repeat until zero
Arithmetic (64-bit)
mov rax, 100 add rax, 50 sub rax, 25 imul rax, 2
Function Example (32-bit)
push ebp ; save base pointer mov ebp, esp ; create stack frame sub esp, 8 ; allocate local variables mov eax, [ebp+8] ; get first parameter add eax, [ebp+12] ; add second parameter mov esp, ebp ; restore stack pointer pop ebp ; restore base pointer ret ; return
Branching (64-bit)
mov rax, 10 cmp rax, 5 jg greater ; jump if greater mov rbx, 0 jmp end greater: mov rbx, 1 end: mov rcx, rbx

Your recent operations will be saved here for quick reference:

No history yet. Process some code to create history entries.