In my developinp system there has no external ram. So if i want to define a data array more than 128 bytes, how should i do? How can i access 80h-0ffh inchip ram of 89c52 in c code?
The 8051 architecture can only access internal RAM from 80H - FFH indirectly. (Direct access to those addresses goes to the SFR space instead.) So, you must put those variables into "idata". The C compiler will let you declare "idata" variables larger than 128 bytes. They'll just take up some of your "data" space as well.
Read the section "Internal Data Memory" in the manual.