keil4使用方法入门——基于ARM9的程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

首先创建一个空文件夹来存在工程(Keil不会为我们创建工程文件夹)。

Open keil > project > new uVision Project > 输入工程名称> SAVE

在建立的文件夹里新建一个文本文件,格式修改为.s

在project窗口中右击Source Group1,选择Add files to source group 1,在弹出的窗口中选中刚才建立的.s文件,然后点击ADD,再点击close弹出的窗口。可以看到project窗口出现了我们添加的.s文件。

Flash > configure flash tools….,弹出如图

Device选项里可选择要仿真的处理器,我们选择ARM9 (little end)小端。

Target选项里可设置ROM/RAM起始地址,这里的起始地址要跟Linker选项里的地址一致。CODE Generation设置成ARM-mode

接下来在.s文件里编写我们的ARM汇编,如下。

;在ARM状态下生成由64个整数构成的数组的初始值。

;在THUMB状态下将上述数组复制到一个新的地址,并转换成字符数组

;再返回ARM状态,计算Thumb状态下所产生数组所有元素值的和。

AREA block, CODE, READONLY

N EQU 64

FIR EQU 0x01

ENTRY

start

;送数组入口地址

LDR R0, =A

MOV R3, #N-1 ;init counter

LDR R4, =FIR ;init the first number of A array

init64 ;produce 64 numbers

; CMP R3, #0

; BEQ init_finh

STR R4, [R0], #4

ADD R4, R4, #1 ;

SUBS R3, R3, #1 ;递减

BPL init64 ;循环

;init_finh

LDR R0, =A

LDR R1, =B

MOV R3, #N*4-1 ;init counter

ADRL R7, change+1

BX R7 ;处理机状态切换为THUMB CODE16

;复制转换

change

; CMP R3, #0

; BEQ change_finh

LDRB R2, [R0] ;读取字节

; ADD R2, #65 ;转换为字符

STRB R2, [R1]

ADD R0, #1

ADD R1, #1

SUBS R3, #1

BPL change

;change_finh

LDR R1, =B

MOV R3, #N*4-1

ADR R7, sum ;状态切换

BX R7

CODE32

sum

LDRB R0, [R1], #1 ;计算和,结果保存在R0中

sum_loop

; CMP R3, #0

; BEQ sum_finh

LDRB R2, [R1], #1

ADD R0, R0, R2

SUBS R3, R3, #1

BPL sum_loop

;sum_finh

loopup

B loopup

AREA datablock, DATA, READWRITE

A SPACE 64*4

B SPACE 64*4

END

保存文件夹,然后build 。

相关文档
最新文档