Introduction to


Version 1.3


In 1980 Intel has introduced the 8051 as the first member of the MCS-51 family of microcontrollers. Today hundreds of cheap 8051 derivatives are available from dozens of manufacturers. This makes the MCS-51 architecture so interesting for professionals and hobbyists.
Intel had also defined an 8051 assembly language with bells and whistles for all the subtle peculiarities of the MCS-51 core, and offered a well-designed 8051 assembler, the legendary ASM51. Unfortunately, Intel obsoleted all its MCS-51 development tools in December 1993. The original (and IMHO best) 8051 assembler was gone and no longer available.
At this time, I began to write my own 8051 assembler with Turbo-Pascal on a 286 under MS-DOS. In summer 1994 I felt that it was ready to use now, and good enough to give it away. I named it ASEM-51 and tried to publish version 1.0 in the UseNet, but failed miserably.   (smile)
Through the years I improved my skills in distributing software. Since December 1999 ASEM-51 is distributed over the web, which is certainly the best way in the 21st century.


ASEM-51 is a two-pass macro assembler for the Intel MCS-51 family of microcontrollers. It is running on the PC under MS-DOS, Windows and Linux. The ASEM-51 assembly language is a rich subset of the Intel standard that guarantees maximum compatibility with existing 8051 assembler sources. ASEM-51 can generate two sorts of object files: Intel-HEX format, which is directly accepted by most EPROM programmers, and absolute OMF-51 format, which is required for many simulators, emulators and target debuggers. Thus ASEM-51 is suitable for small and medium MCS-51-based microcontroller projects in hobby, education and business. However, ASEM-51 has been designed to process also very large programs! Its most important features are:

  • fast, compact, reliable, easy to use, and well-documented
  • easy installation, almost no configuration required
  • command line operation, batch and networking capability
  • DOS (RM and PM), Win32 and Linux binaries available
  • Intel-compatible syntax
  • five location counters, one for each of the MCS-51 address spaces
  • assembly-time evaluation of arithmetic and logical expressions
  • segment type checking for instruction operands
  • automatic code optimization of generic jumps and calls
  • macro processing (that really works)
  • nested include file processing
  • nested conditional assembly
  • absolute OMF-51 module output (with debug information)
  • Intel-HEX file output
  • hex-to-binary conversion utility
  • built-in symbols for 8051 special function registers (can be disabled)
  • direct support for more than two hundred 8051 derivatives
  • support of user-defined 8051 derivatives
  • special support for the Philips P83C75x family
  • 8051 register bank support
  • detailed assembler listing with symbol table or cross reference
  • further fancy printing facilities   (smile)
  • documentation in ASCII and HTML format
  • bootstrap program for testing on the MCS-51 target board
  • support for easy integration into the popular Borland IDE (for DOS)
  • limited update service by the author

System Requirements

The DOS real-mode assembler ASEM.EXE requires only 256 kB of free DOS memory and MS-DOS 3.0 (or higher).
The protected-mode assembler ASEMX.EXE requires a 286 CPU (or better), and at least 512 kB of free XMS memory.
The Win32 console-mode assembler ASEMW.EXE requires a 386 CPU (or better) and Windows 95, 98, NT, 2000, XP, Vista, or 7.
The Linux assembler asem requires an x86-based Linux system.
The HTML documentation set requires a web browser conforming to HTML 4.01.


The ASEM-51 software package has been developed with:

Borland-Pascal mit Objekten 7.0 © Borland International 1992
Delphi 2.0 Client/Server Suite © Borland International 1996
FreePascal 1.0.6 © Florian Klämpfl 2002

Copyright © 1994, 1996, 2002, 2008   by   W.W. Heinz

Last revised:   July 31, 2012