嵌入式实验汇编和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

你可能感兴趣的:(嵌入式实验汇编和c语言混合编程)