ARM嵌入式实验利用ARM汇编语言建立工程、编写程序及调试过程
实验四ARM程序设计基础一、实验目的掌握ARM汇编器所支持的指令及常用伪指令;掌握ARM汇编语言的语句格式;掌握ARM汇编语言的程序结构;掌握利用ARM汇编语言建立工程、编写程序及调试过程;掌握C语言程序中内嵌汇编指令的程序编写方法。二、实验内容建立一个新工程,添加启动文件"Startup.s",查看并了解启动文件中使用的指令及伪指令。建立新工程并新建汇编源程序文件,输入并验证课本例4-1(P73
实验四 ARM程序设计基础
一、实验目的
- 掌握ARM汇编器所支持的指令及常用伪指令;
- 掌握ARM汇编语言的语句格式;
- 掌握ARM汇编语言的程序结构;
- 掌握利用ARM汇编语言建立工程、编写程序及调试过程;
- 掌握C语言程序中内嵌汇编指令的程序编写方法。
二、实验内容
- 建立一个新工程,添加启动文件"Startup.s",查看并了解启动文件中使用的指令及伪指令。
- 建立新工程并新建汇编源程序文件,输入并验证课本例4-1(P73)的程序,工程名及程序文件名均命名为Example41。
- 建立新工程并新建汇编源程序文件,输入并验证课本例4-2(P74)的程序,工程名及程序文件名均命名为Example42。
- 建立新工程并新建汇编源程序文件,编程实现对内存地址0x40000030开始的100个内存单元填入0x10000001–0x10000064字数据,然后将每个单元进行64位累加结果保存于[R9:R8]中(R9中存放高32位)。工程名及程序文件名均命名为Example43。
- 建立新工程,添加启动代码,选择LPC2138ARM微处理器,建立C语言文件。输入并验证课本P90页的程序。工程名命名为Example44。
三、实验要求
- 能够熟悉使用RealView MDK集成开发环境建立工程和汇编源文件;
- 能够编写完整的汇编语言程序段,并能够设置编译参数完成程序编译;
- 能够正确书写基本的指令,能够查看寄存器和存储器的内容;
- 实验报告中包括实验内容2、3、4、5的程序,并记录下运行时程序中使用的各寄存器的内容和serial window中的输出内容。
四、实验过程及结果
1、建立工程后添加启动文件"Startup.s",查看其使用的指令及伪指令
2、首先建立Example41工程及文件,之后对项目进行配置如下图:
输入验证例4-1代码
AREA ARMex,CODE,READONLY
ENTRY
Start
MOV r0,#10;Set up parameters r0=10
MOV r1,#3 r1=3
ADD r0,r0,r1;r0=r0+r1 r0=r0+r1
Stop
MOV r0,#0x18 r0=0x18
LDR r1,=0x20026 r1=0x20026
SVC #0x123456 返回中断前一条
END
3、建立Example42工程及文件,工程配置如2
AREA ARMex,CODE,READONLY
ENTRY
Start
MOV r0,#10;Set up parameters r0=10 即r0=0xA
MOV r1,#3 r1=3
BL doadd 跳转到doadd处,同时将当前pc值储存到R14(LR)中
Stop
MOV r0,#0x18 r0=0x18
LDR r1,=0x20026 r1=0x20026
SVC #0x123456 跳转到中断处理前一条指令
doadd 标志位
ADD r0,r0,r1 r0=r0+r1
BX lr 跳转到LR(R14)寄存器里的地址执行
END
4、根据题意画出流程图:
AREA ARMex,CODE,READONLY
ENTRY
Start
MOV R0, #0x40000030 R0=0x40000030
MOV R1, #0x10000001 R1=0x10000001
MOV R2, #100 R2=100
LOOP_1
STR R1,[R0],#1 将R1中的字数据写入以R0为地址的存储器中,并将新地址R0+1写入R0。
ADD R1, R1, #1 R1=R1+1
SUBS R2,R2, #1 R2=R2-1 并把结尾结果写入CPSR寄存器的Z标识位
BNE LOOP_1 若R2!=0跳到LOOP_1处,否则程序跳转到bne 后的标签处
MOV R0, #0x40000030 R0=0x40000030
MOV R2, #100 R2=100
MOV R9, #0 R9=0
MOV R8, #0 R8=0
LOOP_2
LDR R1, [R0], #1 将存储器地址为R0的字数据读入寄存器R1,幵将新地址R0+1写入R0。
ADDS R8, R1, R8 R8=R1+R8
ADC R9, R9,#0 R9=R9+0+进位
SUBS R2, R2 ,#1 R2=R2-1 并把结尾结果写入CPSR寄存器的Z标识位
BNE LOOP_2 若R2!=0跳到LOOP_2处,否则程序跳转到bne 后的标签处
Stop
B Stop
END
为了验证的方便只填入了3个地址
5、建立新工程,添加启动代码,选择LPC2138ARM微处理器,建立C语言文件。输入并验证课本P90页的程序。工程名命名为Example44
调出打印输出窗口
更多推荐
所有评论(0)