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

StackOverflow https://stackoverflow.com/questions/4592817

Вопрос

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

acall subroutine1
.
.
.

subroutine1:
.
.
.
ret
Это было полезно?

Решение

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

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

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

Другие советы

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

   org 0
   sjmp start

subroutine1:
   .
   .
   .
   ret

start:
  .
  .
  .
  acall subroutine1

Спасибо PSMears за подтверждение, что инструкция «Acall» действительно работает для AT89C2051.

@All, вы можете проголосовать за этот ответ, если это помогло вам. Спасибо.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top