实验名称:
南京邮电大学通信学院
实 验 报 告
基于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
// B stop // END } return gcdnum; }
int main() { int a; a = find_gcd(18,9);
printf(\ 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
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(\ return 0; }
3、编程实现将从地址source开始的30个字节数据复制到地址为dest的地
方。 代码:
NUM EQU 30
AREA Init, CODE, READONLY CODE32 ENTRY START
LDR R0, =SOURCE LDR R1, =DEST MOV R2, #NUM MOV SP, #0X400 BLKCOPY
MOV R3, R2, LSR #3
BEQ COPYWORDS STMFD SP!, {R4-R11} OCTCOPY
LDMIA R0!, {R4-R11} STMIA R1!, {R4-R11} SUBS R3, R3, #1 BNE OCTCOPY LDMFD SP!, {R4-R11} COPYWORDS
ANDS R2,R2, #7 BEQ STOP WORDCOPY
LDR R3, [R0], #4 STR R3, [R1], #4 SUBS R2, R2, #1 BNE WORDCOPY STOP
B STOP
LTORG
SOURCE DCD 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4,5,6 DEST DCD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
END
4、用汇编语言设计实现10!。
代码:使用纯汇编语言
AREA Fctrl,CODE,READONLY ENTRY CODE32 START MOV R8 , #10 MOV R9 , #0
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新人文社科南邮嵌入式系统B实验报告2016-2017-2 全文阅读和word下载服务。
相关推荐: