- 18
- 0
- 约2.74千字
- 约 8页
- 2017-08-26 发布于河南
- 举报
实验二 C语言与汇编语言混合编程
实验目的
1.掌握ARM嵌入式C语言编程基本方法。
2. 掌握嵌入式汇编(Inline Assembly)编程规则和方法。
3.掌握汇编语言程序和C语言程序之间相互调用规则和编程方法。
二、实验步骤
1. 创建工作空间并且添加工程。
2.编写程序并且利用软件仿真查看结果。
三、实验内容
利用汇编语言编写初始化程序,实现管理模式下堆栈指针初始化,并最终跳转到C语言程序开始Main函数处执行。
利用汇编语言编写子程序实现字符串拷贝功能,利用C语言在Main函数中定义字符串“Hello World!”定义并调用该子程序完成字符串拷贝。”定义并调用该子程序将数组中字符按照ASCII码值由小到大重新排序。
思考:
GNU编译环境下混合编程与ADS环境下有些什么区别?
.global _start
.global str_cpy
.text
_start:
BIC R0,R0,#MODEMASK @将CPSR中的模式位
ORR R1,R0,#FIQMODE @设置模式位为FIQ模式
MSR CPSR_c, R1 @切换处理器到FIQ模式
LDR SP,=FIQStack @设置该模式下的堆栈
BIC R0,R0,#MODEMASK @将CPSR中的模式位
ORR R1,R0,#IRQMODE @设置模式位为IRQ
MSR CPSR_c, R1 @切换处理器到IRQ模式
LDR SP,=IRQStack @设置该模式下的堆栈
BIC R0,R0,#MODEMASK @将CPSR中的模式位
ORR R1,R0,#USRMODE @设置模式位为IRQ
MSR CPSR_c, R1 @切换处理器到IRQ模式
LDR SP,=IRQStack @设置该模式下的堆栈
BL Main
B .
.equ FIQMODE,0x11
.equ IRQMODE,0x12
.equ SVCMODE,0x13
.equ USRMODE,0x10
.equ SVCStack,0x03FE0100
.equ FIQStack,0x03FE0200
.equ IRQStack,0x03FE0300
.equ MODEMASK,0x1F
str_cpy:
LDRB R2,[R0],#1
STRB R2,[R1],#1
CMP R2,#0
BNE str_cpy
MOV PC,R14
.end
extern void str_cpy(char *x,char *y);
int Main()
{
char *a=Hello World!\n;
char b[13];
str_cpy(a,b);
return 0;
}
.global _start
.global str_cpy
.global line
.text
_start:
BIC R0,R0,#MODEMASK @将CPSR中的模式位
ORR R1,R0,#FIQMODE @设置模式位为FIQ模式
MSR CPSR_c, R1 @切换处理器到FIQ模式
LDR SP,=FIQStack @设置该模式下的堆栈
BIC R0,R0,#MODEMASK @将CPSR中的模式位
ORR R1,R0,#IRQMODE @设置模式位为IRQ
MSR CPSR_c, R1 @切换处理器到IRQ模式
LDR SP,=IRQStack @设置该模式下的堆栈
BIC R0,R0,#MODEMASK @将CPSR中的模式位
ORR R1,R0,#USRMODE @设置模式位为IRQ
MSR CPSR_c, R1 @切换处理器到IRQ模式
LDR SP,=IRQStack @设置该模式下的堆栈
BL Main
B .
.equ FIQMODE,0x11
.equ I
您可能关注的文档
最近下载
- 《我的世界》诉《迷你世界》二审判决书.pdf VIP
- 等比数列说课市名师优质课比赛一等奖市公开课获奖课件.pptx VIP
- 中韩家庭伦理剧对比分析.doc VIP
- 2026-2030中国锌溴电池行业市场发展趋势与前景展望战略分析研究报告.docx
- 2025年等比数列说课课件.pdf VIP
- 短剧演员合同模板(3篇).docx VIP
- 2025年贵州省情省况核心知识点考核复习题库(含答案).docx
- 良品铺子股份有限公司成本控制问题分析.doc VIP
- JB∕T 11164-2021 吊钩抛丸清理机 技术条件.pdf
- 中国专家共识解读:内分泌性高血压继发性高血压院前与急诊诊治指南(2025版)PPT课件.pptx VIP
原创力文档

文档评论(0)