嵌入式实验汇编和c语言混合编程,C语言与汇编语言混合编程位嵌入式.doc

253b171540df25e1b84436cbe50dfc72.gifC语言与汇编语言混合编程位嵌入式.doc

实验二 C语言与汇编语言混合编程一、 实验目的1掌握ARM嵌入式C语言编程基本方法。2. 掌握嵌入式汇编(Inline Assembly)编程规则和方法。3掌握汇编语言程序和C语言程序之间相互调用规则和编程方法。二、实验步骤1. 创建工作空间并且添加工程。2编写程序并且利用软件仿真查看结果。三、实验内容1. 利用汇编语言编写初始化程序,实现管理模式下堆栈指针初始化,并最终跳转到C语言程序开始Main函数处执行。2. 利用汇编语言编写子程序实现字符串拷贝功能,利用C语言在Main函数中定义字符串“Hello World”定义并调用该子程序完成字符串拷贝。3. 利用汇编语言编写子程序完成冒泡法排序,利用C语言在Main函数中定义字符串“Hello World”定义并调用该子程序将数组中字符按照ASCII码值由小到大重新排序。思考1 GNU编译环境下混合编程与ADS环境下有些什么区别.global _start.global str_cpy.text_startBICR0,R0,MODEMASK 将CPSR中的模式位ORRR1,R0,FIQMODE 设置模式位为FIQ模式MSRCPSR_c, R1 切换处理器到FIQ模式LDRSP,FIQStack设置该模式下的堆栈BICR0,R0,MODEMASK 将CPSR中的模式位 ORRR1,R0,IRQMODE 设置模式位为IRQMSRCPSR_c, R1 切换处理器到IRQ模式LDRSP,IRQStack设置该模式下的堆栈 BICR0,R0,MODEMASK 将CPSR中的模式位 ORRR1,R0,USRMODE 设置模式位为IRQ MSRCPSR_c, R1 切换处理器到IRQ模式LDRSP,IRQStack设置该模式下的堆栈 BLMainB equ FIQMODE,0 x11.equ IRQMODE,0 x12.equ SVCMODE,0 x13.equ USRMODE,0 x10.equ SVCStack,0 x03FE0100.equ FIQStack,0 x03FE0200.equ IRQStack,0 x03FE0300.equ MODEMASK,0 x1Fstr_cpy LDRB R2,R0,1 STRB R2,R1,1 CMP R2,0 BNE str_cpy MOV PC,R14.endextern void str_cpychar *x,char *y;int Main char *aHello Worldn; char b13; str_cpya,b;return 0;.global _start.global str_cpy.global line.text_startBICR0,R0,MODEMASK 将CPSR中的模式位ORRR1,R0,FIQMODE 设置模式位为FIQ模式MSRCPSR_c, R1 切换处理器到FIQ模式LDRSP,FIQStack设置该模式下的堆栈BICR0,R0,MODEMASK 将CPSR中的模式位 ORRR1,R0,IRQMODE 设置模式位为IRQMSRCPSR_c, R1 切换处理器到IRQ模式LDRSP,IRQStack设置该模式下的堆栈 BICR0,R0,MODEMASK 将CPSR中的模式位 ORRR1,R0,USRMODE 设置模式位为IRQ MSRCPSR_c, R1 切换处理器到IRQ模式LDRSP,IRQStack设置该模式下的堆栈 BLMainB equ FIQMODE,0 x11.equ IRQMODE,0 x12.equ SVCMODE,0 x13.equ USRMODE,0 x10.equ SVCStack,0 x03FE0100.equ FIQStack,0 x03FE0200.equ IRQStack,0 x03FE0300.equ MODEMASK,0 x1Fstr_cpy ldrb r2,r0,1 strb r2,r1,1 cmp r2,0 bne str_cpy mov pc,r14 line mov r4,r0 add r5,r4,1 mov r6,12loop1 mov r0,r4 mov r1,r5loop ldrb r2,r0 ldrb r3,r1 cmp r3,0 x0a beq ends cmp r2,r3 strhib r3,r0,1 strhib r2,r1,1 addls r0,r0,1 addls r1,r1,1 b loopends subs r6,r6,1 bne loop1 mov pc,r14.end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值