Размещение подпрограмм в отдельных файлах сборки руки с помощью keil IDE

Я новичок в программировании сборки ARM с использованием Keil 4, я пытался собрать две подпрограммы в файлах сборки. Одна из подпрограмм вызывает другую.

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

file2.s(8): error: A1163E: Unknown opcode SUBROUTE , expecting opcode or Macro

Код добавлен ниже

ФАЙЛ 1
;; Директивы PRESERVE8 THUMB UNIFIED

      AREA    RESET, DATA, READONLY
      EXPORT  __Vectors
      __Vectors 
      DCD  0x20001000     ; stack pointer value when stack is empty
      DCD  Reset_Handler  ; reset vector
      ALIGN

    AREA    MYCODE, CODE, READONLY
    IMPORT SUBROUTE 
    ENTRY
    EXPORT Reset_Handler 
    Reset_Handler

                 MOV R1, #0x0A      ; Set loop counter
                 MOV R0,#00         ;intilaize resultant register

      loop1 CBZ R1,FINISH       ; if loop counter = 0 then exit the loop
      BL     SUBROUTE
      B loop1           ; next loop         
      FINISH    B FINISH            ; keep looping 
      END                   ; end of program

ФАЙЛ 2:

  AREA   subroutine, CODE, READONLY
          EXPORT SUBROUTE
 SUBROUTE   ADD R0,R1           ; Addition opertaion
            SUB R1, #1          ; loop counter decrement
            BX lr
            END

person Raghu    schedule 11.08.2014    source источник
comment
Также см. stackoverflow.com/q/15148730/3642162.   -  person ijuneja    schedule 07.08.2018


Ответы (1)


Метки Armasm должны начинаться в первой колонке. Убедитесь, что перед SUBROUTE и FINISH в строках, где они определены, нет начальных пробелов/табуляции. С другой стороны, директивы (такие как AREA и IMPORT) не должны начинаться в первом столбце и должны иметь начальные пробелы.

person scott    schedule 12.08.2014
comment
Спасибо, это было действительно время для меня - person Raghu; 12.08.2014