Почему в микроконтроллере Atmel 89C2051 не работает инструкция "acall"?

Я попробовал это с Keil-µVision и Asem-51, но они все еще подключают, что это синтаксическая ошибка. Вот мой код:

acall subroutine1
.
.
.

subroutine1:
.
.
.
ret

2 ответа

Решение

Часть AT89C2051 определенно поддерживает инструкцию ACALL (поэтому требует спецификацию, и я успешно использовал ее сам).

Какую именно ошибку вы видите в каждом ассемблере? Остальная часть вашего исходного кода компилируется нормально?

Можете ли вы опубликовать точный источник, который дает ошибку (или привести небольшой пример, демонстрирующий проблему, если сам код является конфиденциальным)?

Я просто понял это. Определение подпрограммы должно идти первым перед вызовом:

   org 0
   sjmp start

subroutine1:
   .
   .
   .
   ret

start:
  .
  .
  .
  acall subroutine1

Спасибо psmears за подтверждение того, что инструкция "acall" действительно работает для AT89C2051.

@ Все, вы можете проголосовать за этот ответ, если это вам помогло. Благодарю.

Другие вопросы по тегам