I tried it with Keil-µVision and Asem-51 but they still plugging that it is an syntax error. Here is my code:
acall subroutine1
.
.
.
subroutine1:
.
.
.
ret
The AT89C2051 part definitely supports the ACALL instruction (so claims the data sheet and I've successfully used it myself).
What is the exact error that you are seeing in each assembler? Does the rest of your source compile OK?
Can you post the exact source that is giving an error (or make a small example that demonstrates the issue if the code itself is confidential)?