ASEM-51, by W.W. Heinz, is a free 8051 macro assembler for MS-DOS, Windows and Linux.
Download ASEM-51 v1.3 and unzip it into a sub-directory.
Issue "ASEMW DEMO.A51" within DOS box will process the source file "DEMO.A51" and generate a output file "DEMO.HEX" in Intel-HEX format and a list file "DEMO.LST" in plain text.
Refer to "ASEM_51.DOC" for detail usage. The example program "DEMO.A51" is very instructive.
ATMEL AT89S51 is an 8051 variant with serial programming interface for its 4KB on-chip flash ROM.
This AVR Programmer is a USB in-circuit programmer for Atmel AVR controllers. It supports AT89S51/52. The programmer uses a firmware-only USB driver, no special USB controller is needed.
With NoICE Remote Debugger, a monitor "MON8051.HEX" is programmed into ROM, which is controlled by "NoICE51.EXE" (running on PC) via RS232 to debug user program loaded into RAM.
NoICE for 8051 V5.0 is capable of single step execution, breakpoint execution, register inspection/modification, memory inspection/modification, assembler/disassembler, and more ...
Source code of "MON8051.HEX" is shipped with NoICE. It can be assembled by PseudoSam 8051 Assembler. Users may customize "MON8051.HEX" to fit their own design.
Winbond W78C438B is an 8051 variant with non-multiplex P0,P2,Address/Data Bus, and extra I/O port in 84-pin PLCC package. However, there is no on-chip ROM
Schematic diagram(pdf) of a W78C438B-based 8051 in-circuit-debugger, designed by Chin-Shiuh Shieh.
Above design, having 16KB ROM at 0000h-3FFFh and 32KB RAM at 4000h-BFFFh, is intended to work with NoICE for 8051 V5.0.
Issue "sdcc --code-loc 0x4000 --xram-loc 0x8000 test.c" within DOS box will generate "test.ihx" in Intel-HEX format, where "--code-loc 0x4000" is an option used to specify starting code address, "--xram-loc 0x8000" is an option used to specify starting address of external data memory.
Refer to "c:\sdcc\share\doc\sdcc\sdccman.pdf" for SDCC Compiler User Guide.