A simulator is a program which runs on the development system (i.e. your PC) and imitates the architecture of the target processor. For example an 8051 simulator will contain simulated registers, RAM and other stuff on your PC screen. You can run your program in this simulator and verify the functionality. You can single step your program, run it upto a certain address, add breakpoints etc.

Some simulators have small separate window which can be used to simulate the serial port as well. Some are able to simulate LCDs, LEDs, Keypads, ADCs etc. Note that it is usually not possible to debug time dependent bugs using a simulator since the simulator does not run your program at full speed, the speed at which your 8051 would run it.

Simulators usually simulate the standard 12-clock '51 so its usage for the non-standard instruction cycle clones might be somewhat limited.

Simulators are often quite cheap (certainly cheaper than full-blown emulators) and often come as an accessory to a programming language/IDE. There are also free simulators around (some of them DOS only, and with limited or no support).

To be added here:
list of simulators incl. links
- price, demoversion (what are the limits)
- linked to monitors or ICEs
- extra features (external peripherals, non-12-clock), minuses
- any for Linux?