You might be able to use the programmer sketch I wrote a while back (it runs on a Uno). You need an SD card interface so it can read the .hex file for programming. See: http://www.gammon.com.au/uploader
You connect things up roughly like this (Atmega328P shown, your wiring would be different at the target chip side):

You would need to modify the sketch to add the details for the AT89S52. As far as I can make out from the datasheet:
- Signature: 0x1E 0x52 0x06
- PROGMEM: 8k bytes
- RAM: 256 bytes
- Pinouts: Depending on the chip package. You need to identify MOSI/MISO/SCK/RESET along with Vcc and Gnd.
- Fuses: None that I can see
- Flash page size: 256 bytes
Thus you could modify the table of chips to add that one, along these lines:
// see Atmega datasheets
const signatureType signatures [] PROGMEM =
{
// signature description flash size bootloader flash fuse
// size page to
// size change
// AT89S52
{ { 0x1E, 0x52, 0x06 }, "AT89S52", 8 * kb, 0, 256, NO_FUSE },
// ... other ones here ...
I haven't got an AT89S52 to test it on, so I can't say for sure I got those parameters right. I am assuming that the programming instructions for ICSP programming are the same as for the other chips in their range.