南邮嵌入式系统B实验报告.pdfVIP

  • 8
  • 0
  • 约2.61千字
  • 约 7页
  • 2023-01-19 发布于上海
  • 举报
南京邮电大学通信学院 实 验 报 告 实验名称:基于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内嵌汇编 #includestdio.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 { 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的地方。 代码: NUM EQU 30 AREA Init, CODE, READONLY CODE32 ENTRY START LDR R0, =SOURCE LDR R1, =DEST MOV R

文档评论(0)

1亿VIP精品文档

相关文档