Skip to content
This repository was archived by the owner on May 24, 2026. It is now read-only.

polletfa/QuickASM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Vintage 16-bit x86 Assembler

QuickASM is a simplistic, yet fully functional 16-bit x86 assembler that outputs flat binary files.

I wrote this entire program in 2001 when I was 16 years old. It was my first really serious project, about 3 years after I started programming (not counting a little Locomotive BASIC in elementary school).

Preservation Notice

This repository is published "as-is" for historical and nostalgic purposes. I have deliberately chosen not to refactor, modernize, or clean up the code. It is exactly as it was written over 20 years ago by a 16-year-old without academic training.

The comments, some of the function/variable names, and the documentation are in French, because back then I had not started coding in English yet.

Features

  • Flat binaries.
  • Intel-style ASM syntax.
  • Core 16-bit instruction set (no native support for 32-bit registers or extensions like MMX).
  • The 32-bit Prefix Hack: While the parser is strictly 16-bit, it supports raw data emission directives (.octet/.mot) which I later used to manually inject 32-bit override prefixes (0x66) to trick the CPU into 32-bit mode!
  • Compiler-specific directives (labels, data declaration...).
  • Simple disassembler.

How to Compile With Modern GCC

If you try to compile this on a modern Linux system, the build will fail, as I used some non-standard features (er... or actual mistakes) that were tolerated by my compiler at the time.

I don't want to fix the Makefile or the code, but I managed to compile it with GNU Make 4.4 and GCC 15 using:

mkdir -p bin/linux
cd src
make -f Makefile.linux CFLAGS="-fcommon -c -Dlinux -Wno-implicit-function-declaration"

Documentation & Examples

  • Full documentation (in French), including an Assembler tutorial and documentation of the Intel instruction set.
  • MBRLoader — A multi-language bootloader and partitioning tool written entirely with QuickASM.

About

Vintage 16-bit x86 Assembler

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages