南京邮电大学通信学院
实验报告
实验名称:基于ADS开发环境的程序设计
嵌入式Linux交叉开发环境的建立
嵌入式Linux环境下的程序设计
多线程程序设计
课程名称嵌入式系统B
班级学号
姓名
开课学期 2016/2017学年第2学期
实验一基于ADS开发环境的程序设计
一、实验目的
1、学习ADS开发环境的使用;
2、学习和掌握ADS环境下的汇编语言及C语言程序设计;
3、学习和掌握汇编语言及C语言的混合编程方法。
二、实验内容
1、编写和调试汇编语言程序;
2、编写和调试C语言程序;
3、编写和调试汇编语言及C语言的混合程序;
三、实验过程与结果
1、寄存器R0和R1中有两个正整数,求这两个数的最大公约数,结果保存在R3中。
代码1:使用C内嵌汇编
#include<stdio.h>
int find_gcd(int x,int y)
{
int gcdnum;
__asm
{
MOV r0, x
MOV r1, y
LOOP:
CMP r0, r1
SUBLT r1, r1, r0
SUBGT r0, r0, r1
BNE LOOP
MOV r3, r0
MOV gcdnum,r3
//stop
// B stop
// END
}
return gcdnum;
}
int main()
{
int a;
a = find_gcd(18,9);
printf("gcdnum:%d\n",a);
return 0;
}
代码2:使用纯汇编语言
AREA example1,CODE,readonly
ENTRY
MOV r0, #4
MOV r1, #9
start
CMP r0, r1
SUBLT r1, r1, r0
SUBGT r0, r0, r1
BNE start
MOV r3, r0
stop
B stop
END
2、寄存器R0 、R1和R2中有三个正整数,求出其中最大的数,并将其保存在R3中。
代码1:使用纯汇编语言
AREA examp,CODE,READONLY
ENTRY
MOV R0,#10
MOV R1,#30
MOV R2,#20
Start
CMP R0,R1
嵌入式多线程编程BLE lbl_a
CMP R0,R2
MOVGT R3,R0
MOVLE R3,R2
B lbl_b
lbl_a
CMP R1,R2
MOVGT R3,R1
MOVLE R3,R2
lbl_b
B .
END
代码2:使用C内嵌汇编语言
#include <stdio.h>
int find_maxnum(int a,int b,int c) {
int x;
__asm
{
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论