我是使用Keil 4进行ARM汇编编程的新手,我一直在尝试在汇编文件中汇编两个子例程。其中一个子程序调用另一个子程序。
调用(分支)放置在同一文件中的子例程可以工作,但是,如果一个子例程被放置在一个单独的文件中,则出现以下错误消息
第一个月
代码如下所示
文件1
;;指令PRESERVE 8 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
型
1条答案
按热度按时间6tr1vspr1#
Armasm标签必须从第一列开始。确保在定义
SUBROUTE
和FINISH
的行中,在它们之前没有前导空格/制表符。另一方面,指令(如AREA
和IMPORT
)不能从第一列开始,并且必须有一些前导空格。