Я только что понял это. Определение подпрограммы должно идти первым перед вызовом:
org 0
sjmp start
subroutine1:
.
.
.
ret
start:
.
.
.
acall subroutine1
Спасибо psmears за подтверждение того, что инструкция "acall" действительно работает для AT89C2051.
@ Все, вы можете проголосовать за этот ответ, если это вам помогло. Спасибо.