LmCast :: Stay tuned in

8086 Microcode Browser

Recorded: Dec. 4, 2025, 3:05 a.m.

Original Summarized

8086 Microcode Browser - Small things retro
Small things retro
MenuHomeGuides8086 Microcode Browsernand2marioDecember 04, 2025Since releasing 486Tang, I’ve been working on recreating the 8086 with a design that stays as faithful as possible to the original chip. That exploration naturally led me deep into the original 8086 microcode — extracted and disassembled by Andrew Jenner in 2020.Like all microcoded CPUs, the 8086 hides a lot of subtle behavior below the assembly layer. While studying it I kept extensive notes, and those eventually evolved into something more useful: an interactive browser for the entire 8086 microcode ROM.So here it is: the online 8086 microcode browser.
Every 21-bit micro-instruction is decoded into readable fields. Hover over any field and you’ll get a tooltip explaining what it does. All jump targets are clickable — the 8086 μcode uses a surprising number of indirect jumps, calls, and short branches.One handy feature is Browse by Instruction.
Click the button and you’ll get a list of ~300 documented 8086 instructions. Select any one, and the viewer jumps directly to its μcode entry point. Internally there are only about 60 unique μcode entry routines, and this feature makes navigating them effortless.A few fun tidbits about 8086 μcodeRegister IDs change meaning depending on context.
For example, 10100 refers to SIGMA (the ALU result) when used as a source, but to tmpaL (the low 8 bits of a temporary ALU register) when used as a destination.N and R are the same physical register.
Meanwhile, SI is called IJ internally — naming inside the chip is extremely inconsistent and reflects its evolutionary design process.IP (PC) does not point to the next instruction.
It actually points to the next prefetch address. The μcode uses a dedicated micro-operation called CORR to rewind IP back to the true next-instruction boundary when handling branches and interrupts.Almost all arithmetic instructions share the same 4 μinstructions (008–00B).
The heavy lifting is done by a single micro-operation named XI, which performs different arithmetic behaviors depending on opcode or ModRM bits. The amount of reuse here is elegant — and very 1978 Intel.« Previous486Tang - 486 on a credit-card-sized FPGA boardPlease enable JavaScript to view the comments powered by Disqus.comments powered by Disqus© 2025 Small things retro.
Generated with Hugo and Mainroad theme.

The 8086 Microcode Browser, developed by Small things retro, represents a detailed exploration of the foundational microcode underpinning the Intel 8086 microprocessor. This interactive browser, born from extensive notes originally taken during the analysis of microcode extracted and disassembled by Andrew Jenner in 2020, provides a granular view into the complex operational mechanisms underlying the processor’s behavior. The core functionality of the browser revolves around the dissection of the 8086’s microcode ROM, presenting each 21-bit micro-instruction in a readable format accompanied by detailed tooltips. This layered approach allows users to readily understand the purpose of each instruction. A key feature is the “Browse by Instruction” option, which facilitates navigation through the approximately 300 documented 8086 instructions. Selecting an instruction within this list instantly directs the user to its corresponding microcode entry point, utilizing a database of approximately 60 unique microcode routines.

The browser's revelations highlight the intricate and often counter-intuitive nature of the 8086's design. Several key observations emerge regarding register usage and internal naming conventions, underscoring the legacy of its evolutionary development. For instance, the same physical register ID, such as ‘10100’, can represent different values depending on whether it serves as a source or a destination, illustrating a nuanced contextual interpretation within the microcode. Similarly, ‘N’ and ‘R’ are identified as the same physical register, reflecting the processor’s design. Furthermore, the internal naming within the chip exhibits a significant degree of inconsistency, particularly concerning the designation of ‘SI’ as ‘IJ’, a consequence of the 8086’s design process.

The browser’s analysis exposes critical details about the processor’s operation, notably concerning the instruction pointer (IP), which functions as the program counter (PC), but instead of directly pointing to the next instruction, it designates the subsequent prefetch address. To ensure accurate execution, especially when dealing with branching or interrupt handling, the microcode employs a dedicated micro-operation called ‘CORR,’ which meticulously rewinds the IP value to definitively capture the boundary of the next instruction.

This intricate system is exemplified by the widespread reuse of micro-instructions for arithmetic functionalities. Almost all arithmetic instructions are predicated on a core set of four micro-instructions (008-00B), where the bulk of the processing is handled by a single micro-operation termed ‘XI.’ This operation demonstrates remarkable versatility, exhibiting varied arithmetic behaviors determined by both the opcode and the ModRM bits within the instruction. The significant degree of reutilization constitutes a functional elegance, reflective of the design constraints and priorities prevalent during the 8086’s conception in 1978. The “Browse by Instruction” function, combined with the detailed tooltips, allows a user to gain a fundamental understanding of the internal working conditions of the 8086 microprocessor.