ARM3.2嵌入式系统原理第三章习题(2)2012Word格式.doc
- 文档编号:14561983
- 上传时间:2022-10-23
- 格式:DOC
- 页数:5
- 大小:45.50KB
ARM3.2嵌入式系统原理第三章习题(2)2012Word格式.doc
《ARM3.2嵌入式系统原理第三章习题(2)2012Word格式.doc》由会员分享,可在线阅读,更多相关《ARM3.2嵌入式系统原理第三章习题(2)2012Word格式.doc(5页珍藏版)》请在冰豆网上搜索。
CODE16
…
ADRLR,NEXT
ADRR0,ARMSUB
BXR0
NEXTMOVR1,#2
CODE32
ARMSUB
ADDLR,LR,#1
BXLR
3请写出在主程序中调用子程序SUB1,SUB1中调用子程序SUB2,SUB2中调用子程序SUB3的调用返回关键指令。
其中主程序、子程序SUB1、SUB2、SUB3均在同种状态下。
…
BLSUB1
SUB1…
STMFDSP!
{R0-R2,LR}
BLSUB2
LDMFDSP!
{R0-R2,PC}
SUB2…
BLSUB3
SUB3…
MOVPC,LR
4用汇编语言完成对C语言全局变量的访问。
假设CVAR1和CVAR2是C语言中定义的全局变量,请用一段汇编语言访问它们,完成两者的相加运算,结果存放在CVAR1中。
答:
AREAglobals,CODE,READONLY
EXPORTaccesscvar
IMPORTcvar1
IMPORTcvar2
ENTRY
accesscvar
LDRR1,=cvar1
LDRR2,=cvar2
LDRR0,[R1]
LDRR3,[R2]
ADDR0,R0,R3
STRR0,[R1]
MOVPC,LR
END
5编写一段程序,用内嵌汇编指令实现快速中断的使能和禁止。
intmain(void)
{
disable_FIQ();
enable_FIQ();
}
voiddisable_FIQ(void)
{inttmp;
__asm
{MRStmp,CPSR
ORRtmp,tmp,#0x40
MSRCPSR_c,tmp
}
voidenable_FIQ(void)
BICtmp,tmp,#0x40
6编写一段C语言与汇编语言的混合编程代码,在C语言程序中调用汇编语言代码,完成字符串STR1与STR2内容的互换(假设STR1和STR2长度一致)。
externvoidstrcopy(char*d,char*s);
intmain(void)
char*str1=“contentofstring1”;
char*str2=“contentofstring2”;
strswap(str1,str2);
AREAStrSwap,CODE,READONLY
EXPORTstrswap
strswap
LDRBR2,[R0]
LDRBR3,[R1]
STRBR2,[R1],#1
STRBR3,[R0],#1
CMPR2,#0
BNEstrswap
MOVPC,LR
7请完成一段字符串“helloworld!
”的拷贝,要求主程序用C语言编写,字符串拷贝子程序用汇编语言编写。
#include<
stdio.h>
externvoidstrcopy(char*d,constchar*s);
intmain()
{constchar*srcstr=”helloworld!
”;
char*dststr=”copytome!
strcopy(dststr,srcstr);
return(0);
}
AREASCopy,CODE,READONLY
EXPORTstrcopy
strcopy
LDRBR2,[R1],#1
STRBR2,[R0],#1
CMPR2,#0
BNEstrcopy
MOVPC,LR
8请用跳转表思想重写下述程序。
BLJUMPTAB
…
JUMPTABCMPR0,#0
BEQSUB0
CMPR0,#1
BEQSUB1
CMPR0,#2
BEQSUB2
CMPR0,#3
BEQSUB3
SUBMAXEQU3
BLJUMPTAB
…
JUMPTABADRR1,SUBTAB
CMPR0,#SUBMAX;
检查超限
LDRLSPC,[R1,R0,LSL#2]
BERROR
SUBTABDCDSUB0;
子程序表入口
DCDSUB1
DCDSUB2
DCDSUB3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM3 嵌入式 系统 原理 第三 习题 2012