ARM3.2嵌入式系统原理第三章习题(2)2021
嵌入式系统原理第三章习题答案(2)2021
1.arm汇编语言中的伪操作、宏指令和伪指令是什么?
伪操作是arm汇编语言程序里的一些特殊指令助记符,主要作用是为完成汇编程序做各种准备工作,在源程序进行汇编时由汇编程序处理,而不是在计算机运行期间由机器执行。伪操作只在汇编过程中起作用,一旦汇编结束,伪操作的使命也随之结束。
宏指令是一种独立的程序代码,可以插入源程序并通过伪操作定义。在使用宏之前,必须预先定义宏。宏可以相互调用,也可以递归调用。宏定义本身不生成代码,而是在调用源程序时将宏体插入源程序。
arm嵌入式系统期末考试 伪指令也是arm汇编语言程序里的特殊指令助记符,也不在处理器运行期间由机器执行,它们在汇编时将合适的机器指令代替成arm或thumb指令从而实现真正指令操作。
2.请写出在thumb状态下调用arm状态子程序返回的关键指令。代码16…
adrlr,nextadrr0,armsubbxr0nextmovr1,#2…code32armsub…
addlr,lr,#1bxlr
3请写出在主程序中调用子程序sub1,sub1中调用子程序sub2,sub2中调用子程序sub3的调用返回关键指令。其中主程序、子程序sub1、sub2、sub3均在同种状态下。
…blsub1…
sub1…
stmfdsp!,{r0-r2,lr}blsub2…
ldmfdsp!,{r0-r2,pc}sub2…
stmfdsp!,{r0-r2,lr}blsub3
…
ldmfdsp!,{r0-r2,pc}sub3…
movpc,lr
4.用汇编语言完成对C语言全局变量的访问。假设cvar1和cvar2是用C语言定义的全局变量,请使用汇编语言访问它们,完成两者的加法运算,并将结果存储在cvar1中。
答:
areaglobals,代码,只读ExportAccessCvarImportCvar1ImportCvar2EntryAccessCvar
ldrr1,=cvar1ldrr2,=cvar2ldrr0,[r1]ldrr3,[r2]addr0,r0,r3strr0,[r1]
莫文德
5编写一段程序,用内嵌汇编指令实现快速中断的使能和禁止。答:
intmain(无效){
disable_fiq();enable_fiq();}
voiddisable_fiq(void){inttmp;u asm
{mrstmp,cpsr
orrtmp,tmp,#0x40msrcpsr_c,tmp}
voidenable_fiq(void){inttmp;__asm
{mrstmp,cpsr
bictmp,tmp,#0x40msrcpsr_c,tmp}}
6编写C语言和汇编语言的混合编程代码,在C语言程序中调用汇编语言代码,并完成字符串STR1和STR2内容之间的交换(假设STR1和STR2长度匹配)。答复:
externvoidstrcopy(char*d,char*s);intmain(void){
char*str1=“contentofstring1”;char*str2=“contentofstring2”;…
strswap(str1,str2);…}
Area strswap,code,ReadOnlyExportsTrswapstSwap
ldrbr2,[r0]ldrbr3,[r1]
strbr2、[r1]、#1strbr3、[r0]、#1cmpr2、#0
bnestrswapmovpc,lrend
请填写一个字符串“HelloWorld!”主程序要求用C语言编写,字符串复制子程序要求用汇编语言编写。
答:
#包括
externvoidstrcopy(char*d,constchar*s);intmain()
{constchar*srcstr=“helloworld!”;char*dststr=“copytome!”;strcopy(dststr,srcstr);返回(0);}
areascopy,code,readonlyexportstrcopystrcopy
ldrbr2、[r1]、#1strbr2、[r0]、#1cmpr2、#0bnestrcopymovpc、lrend
8请用跳转表思想重写下述程序。
bljumptab
…
跳转选项卡CMPR0、#0beqsub0cmpr0、#1beqsub1cmpr0、#2beqsub2
cmpr0,#3beqsub3
答复:
submaxequ3bljumptab
…
jumptabadrr1,subtab
cmpr0,#submax;检查溢出子选项卡
ldrlspc,[r1,r0,lslberror
dcdsub0dcdsub1dcdsub2dcdsub3
#2];子程序表入口
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论