There are two major ways to program AT89C51 microcontroller.
But in this particular tutorial, I am going to teach you how to use assembly language to program AT89C51.
Assembly Language and Assembler
Computers or even microcontrollers do not understand the kind of language we speak. Therefore, there is a need to have an interpreter or a translator that will translate or language to the kind of language they will understand. This the work of an Assembler. An assembler is a software that translate the program we write with assembly language to the kind of language the machine will understand (that is the machine language). While an assembly language is just a language that is used to program the microcontroller. this is done, by using a set of abbreviated commands that are available in the instruction set of the microcontroller/microprocessor.
You can download an assembler here (directly from Atmel) or better still, you can Google it'.
To program a microcontroller, you need a device programmer. A programmer is a device that is used to burn the machine code into the chip. There are so many types of programmers ranging from a low cost ones to a very expensive Universal programmers.
You can get a low cost one here Or
To program the chip, just connect the programmer to your computer and follow the instructions provided by the manufacturer of the programmer.
You can get more information on assemly language here.
You can always visit ATMEL's website for the datasheet and more information.