- Run an 8086 program in DOSBox. Install DOSBox, NASM, and DEBUG.EXE. Write the "add two numbers" example, assemble, link, run. Then load it in DEBUG and step instruction by instruction; watch AX, BX, FLAGS change. Nothing teaches the fetch-decode-execute cycle like watching IP advance and registers update.
- Buy an 8051 dev board. $20 from any electronics retailer, often with the AT89S51 or AT89C52 chip. Wire an LED, a button, a 16×2 LCD. Blink, read, print. Use Keil µVision (free for small projects) or SDCC (open-source).
- Buy an STM32 Nucleo or Discovery board. 30, includes built-in ST-Link debugger. Set up STM32CubeIDE (free) or PlatformIO. Blink LED. Then: UART debug printing. Then: ADC reading a potentiometer. Then: PWM controlling a servo. Then: a small RTOS (FreeRTOS or Zephyr).
- Try a PIC. Buy a PIC16F877A or a more modern PIC18F or PIC32. Use MPLAB X IDE (free) and PICkit programmer. Write the same blink in C. Compare to the STM32 experience.
- Disassemble a real 8086 binary. Get any DOS .EXE (the DOS install disks are free online), use
ndisasm -b 16 file.exe | less, and read what early DOS programs were actually doing. - Voltage-glitch a chip. ChipWhisperer is an open-source platform for hardware-security experimentation. Buy the Lite ($300), follow their tutorials, glitch a target into bypassing a password check. This is the practical introduction to fault injection.
section 12 of 132 min read