资源描述:
《嵌入式系统习题答案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、文字简答、问答类题目见教材3.2R0和R1中有两个32位数,若R0>R1,则R0=R0-R1;若R0<R1,则R1=R1-R0;若R0=R1,则R1、R0保持不变。1)请用CMP、B和SUB指令完成上述操作。2)请用条件SUB指令完成上述操作。解答:(已调试通过)1、用CMP、B和SUB指令AREAStrCopy,CODE,READONLYENTRYstartMOVR0,#3MOVR1,#2CMPR0,R1BLTLessBGTMoreBstopLessSUBR1,R1,R0BstopMoreSUBR0,R0,R1stopBstop2、用条件SUB指令AREAStrCo
2、py,CODE,READONLYENTRYstartMOVR0,#3MOVR1,#2CMPR0,R1SUBLTR1,R1,R0SUBGTR0,R0,R1stopBstop3.3用合适的指令实现以下功能1)R0=16 movR0,#162)R1=R0×4MOVR1,R0,LSL#23)R0=R1/16 Movr0,r1,LSR#44)R1=R2×7SUBR1,R2,R2,LSL#33.5下列指令序列完成什么功能?ADDR0,R1,R1,LSL#1SUBR0,R0,R1,LSL#4ADDR0,R0,R1,LSL#7解答:1、R0=R0+2*R12、R0=R0-16*
3、R13、R0=R0+128*R14.7试编写程序,计算2+4+6+8+…+2N的值解答:(已调试通过)方法一NEQU3AREAStrCopy,CODE,READONLYENTRYstartMOVR0,#0MOVR1,#NL1MOVR2,R1,LSL#1ADDR0,R0,R2SUBR1,R1,#1CMPR1,#0BEQstopBL1stopBstop方法二NEQU3AREAStrCopy,CODE,READONLYENTRYstartMOVR0,#0MOVR1,#1L1MOVR2,R1,LSL#1ADDR0,R0,R2ADDR1,R1,#1SUBR2,R1,#1CMPR
4、2,#NBEQstopBL1stopBstop方法三EXPORTAdd2To2N;声明程序可被外部引用EXPORTSTART;声明程序入口标号START可被外部引用NNUMEQU10;符号定义伪指令,NNUM代表问题中的N,此处N=10AREAAdd2To2N,CODE,READONLYENTRYSTARTMOVR0,#NNUM;问题中的加数,从N递减至0,初始值为NMOVR1,#0;问题中的结果保存在R1中,初始值为0ADDDECCMPR0,#0BEQMUTTWO;当R0==0时跳出累加例程ADDR1,R1,R0;将当前的加数R0累加到结果R1中SUBR0,R0,#
5、1;加数R0递减BADDDEC;重复累加,直到加数为0MUTTWOMOVR0,R1,LSL#1;将R1中保存的累加结果左移1位,即乘以2,保存到R0STOPMOVR0,#0x18LDRR1,=0x20026SWI0x123456END;结束