南京邮电大学通信学院
实 验 报 告
实验名称:基于ADS开发环境的程序设计      
          嵌入式Linux交叉开发环境的建立   
          嵌入式Linux环境下的程序设计     
                多线程程序设计                   
                                           
                                           
课程名称        嵌入式系统B       
班级学号                 
姓    名                 
开课学期  2016/2017学年  第2学期
实验一  基于ADS开发环境的程序设计
一、实验目的
1、学习ADS开发环境的使用;
2、学习和掌握ADS环境下的汇编语言及C语言程序设计;
3、学习和掌握汇编语言及C语言的混合编程方法。
二、实验内容
1、编写和调试汇编语言程序;
2、编写和调试C语言程序;
3、编写和调试汇编语言及C语言的混合程序;
三、实验过程与结果
1、寄存器R0R1中有两个正整数,求这两个数的最大公约数,结果保存在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 R1R2中有三个正整数,求出其中最大的数,并将其保存在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
END
代码2:使用C内嵌汇编语言
#include 〈stdio.h>
int    find_maxnum(int a,int b,int c)
{
    int x;
    __asm
    {
    MOV r0,a
    MOV r1,b
    MOV r2,c
    CMP r0,r1
    BLE lbl_a    //相等跳转
    CMP r0,r2
    MOVGT x,r0
    MOVLE x,r2
        //MOV r3,x
    B lbl_b
lbl_a:
    CMP r1,r2
    MOVGT x,r1
    MOVLE x,r2
        //MOV r3,x
lbl_b:   
    }
    return x;
int for_r3(int t)
{
        //int t;
    __asm
    {
    MOV r3,t
    }
    return 0;
}
int main()
    int a;
    a = find_maxnum(130,50,70);
    for_r3(a);
               
    printf("max:%d\r\n",a);
    return 0;
}
3、编程实现将从地址source开始的30个字节数据复制到地址为dest的地方。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。