首页 ARM练习题

ARM练习题

举报
开通vip

ARM练习题简答题什么是嵌入式操作系统答:嵌入式系统是以应用为中心,以计算机技术为基础,软/硬件可裁减,功能。可靠性,成本,体积,功耗要求严格的专用计算机系统。与通用计算机相比,嵌入式系统有哪些特点答:(1).嵌入式系统通常是面向特定应用的;(2).嵌入式系统是将计算机技术,半导体技术和电子技术与各行各业的具体应用相结合的后的产物,是一门综合技术学科;(3).嵌入式系统和具体应用有机的结合在一起,它的升级换代也是和具体产品同步进行的,因此嵌入式产品一旦进入市场,就有较长的生命周期;(4).为了提高执行速度和可靠性,嵌入式系统中...

ARM练习题
简答题什么是嵌入式操作系统答:嵌入式系统是以应用为中心,以计算机技术为基础,软/硬件可裁减,功能。可靠性,成本,体积,功耗要求严格的专用计算机系统。与通用计算机相比,嵌入式系统有哪些特点答:(1).嵌入式系统通常是面向特定应用的;(2).嵌入式系统是将计算机技术,半导体技术和电子技术与各行各业的具体应用相结合的后的产物,是一门综合技术学科;(3).嵌入式系统和具体应用有机的结合在一起,它的升级换代也是和具体产品同步进行的,因此嵌入式产品一旦进入市场,就有较长的生命周期;(4).为了提高执行速度和可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存储于磁盘等载体中;(5).嵌入式系统本身不具有自主开发能力,即使设计完成以后用户通常也不能对其中的程序功能进行修改,必须有一套开发工具和环境才能进行开发。ARM处理器有几种寻址方式,说明各种寻址的方式。答:立即寻址:操作数直接放在指令中。例如:ADDR0,R0,#0x3f;R0←R0+0x3f寄存器寻址:操作数放在寄存器中。例如:ADDR0,R1,R2;R0←R1+R2寄存器间接寻址:操作数在内存,以寄存器中的值作为操作数的地址。例如:LDRR0,[R1];R0←[R1]基址加偏移量寻址(基址变址寻址):基址寄存器的内容与指令中的偏移量相加形成操作数的有效地址例如:LDRR0,[R1,#4];R0←[R1+4]LDRR0,[R1,R2];R0←[R1+R2]多寄存器寻址:一条指令可以完成多个寄存器值的传送。例如:LDMIAR0,{R1,R2,R3,R4};R1←[R0];R2←[R0+4];R3←[R0+8];R4←[R0+12]堆栈寻址:堆栈是一种数据结构,按先进后出(FirstInLastOut,FILO)的方式工作,使用一个称作堆栈指针的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶。例如:STMFDR13!,{R0,R4-R12,LR}LDMFDR13!,{R0,R4-R12,PC}举例介绍嵌入式处理器有哪几类答:1.嵌入式微处理器(EmbeddedMicroprocessorUnit,EMPU);2.嵌入式微控制器;(EmbeddedMicrocontrollerUnit,EMCU)3.嵌入式DSP处理器(EmbeddedDigitalSignalProcessor,EDSP);4.嵌入式片上系统(EmbeddedSystemonChip,EsoC);什么是立即数请简要描述立即数在使用时有什么注意要点。立即数,主要是指寻址时直接在指令中出现的数,在使用时注意(1)立即数前需要加#(2)ARM指令只有32位长,立即数在指令中占12位存储空间,ARM用这12位空间8位 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示有效数字-基数B,4位表示译为的数M,按照把B循环右移M*2位,构造成一个新的32位的数,其它位补0,所以在使用立即数时,要注意其是否合法。请问BL指令跳转时LR寄存器保存的是什么内容并请简述原因。BL跳转时,LR中保存的是执行BL跳转指令的下一条指令的地址,考虑流水线的情况,即当前的PC-4。LR用来在需要返回程序时从LR中还原程序执行的位置继续执行。ARM内核有多少个寄存器,请列举出这些寄存器的名字和数量。ARM有37个寄存器,(1)未分组寄存器:R0-R7,共8个;(2)分组寄存器R8-R14,其中FIQ模式下有单独的一组R8-R12共5个,另外6种模式共用一组R8-R12,共5个,USR和SYS模式共用一组R13-R14,共2个,另外5种模式下各有独自的一组R13-R14,共10个;(3)程序计数器PC即R15寄存器,共1个;(4)状态寄存器CPSR,和5个备份状态寄存器SPSR,共6个;ARM总计37个寄存器。ARM通用寄存器中,有3个寄存器有特殊功能和作用,请写出它们的名字和作用。(6分)R13:SP栈指针寄存器,用来保存程序执行时的栈指针位置;R14:LR返回链接寄存器,用来保存程序执行BL指令或模式切换时的返回原程序继续执行的地址;R15:PC程序计数器,保存程序执行的当前地址。ARM的CPSR寄存器的位定义如图所示,试简述各位的功能。(8分)3130292827876543210NZCV保留IFTM[4-0]标志位含义NN=1表示运算的结果为负数;N=0表示运算的结果为正数或零ZZ=1表示运算的结果为零;Z=0表示运算的结果为非零CC=1表示有进位,C=0表示没有进位VV=1表示符号位溢出,V=0表示结果没有溢出Q在ARMvTE/J架构支持,指示DSP指令是否溢出J仅ARM5TE/J架构支持,J=1表示处理器处于Jazelle状态II=1表示禁止IRQFF=1表示禁止FIQT仅ARMxT架构支持,T=0表示处理器处于ARM状态,T=1表示处理器处于Thumb状态什么是伪指令和伪操作在ARM汇编中有哪几种伪指令答:在ARM汇编语言程序中有些特殊助记符,这些助记符与一般指令的助记符的不同之处在于没有相对应的操作码或者机器码,通常称这些特殊指令助记符伪指令,他们多完成的操作成为伪操作;在ARM汇编中,有如下几种伪指令:(1)符号定义伪指令;(2)数据定义伪指令;(3)汇编控制伪指令;(4)信息报告伪指令;(5)宏指令及其他伪指令。如何定义寄存器列表,试举一个使用寄存器列表的例子,要求实现4个字的内存复制。答:AREAEXAMPLE1,CODE,READONLYENTRYLDRR0,=0XFF;把地址0XFF赋给R0LDRR5,=0X0F;把地址0X0F赋给R5STARTPBLOCKRLIST{R1-R4};把R1-R4定义为PBLOCKLDMIAR0,PBLOCK;把R0为首地址的内存4个字单元装载至R1到R4中STMIAR5,PBLOCK;把R1到R4的值依次存至R5为首地址的内存字单元STOPBSTOP;死循环END如何定义一个宏,宏与子程序的区别是什么答:宏的格式为:MARCO和MEND[$标号]宏名[$参数1,$参数2…..]指令序列MENDMARCO表示一个宏定义的开始,MEND表示一个宏的结束,MARCO和MEND前呼后应可以将一段代码定义为一个整体,又称宏,然后在程序中就可以在程序中通过宏的名称及参数调用该段代码。宏指令可以重复使用,这一点的使用方式与子程序有些相似,子程序可以节省存储空间,提供模块化的程序设计。但使用子程序机构时需要保存/恢复现场,从而增加了系统的开销,因此,在代码传递的参数较多并且比较短时,可以使用宏代替子程序,宏在被调用的地方展开。ARM汇编中如何定义一个段,段有几种属性答:AREA用于定义一个代码段,数据段,或者特定属性的段。段的几种属性如下:READONLY表示只读属性;READWRITE表示本段可读写;CODE定义代码段;DATA定义数据段;ALIGN=表达式的对齐方式为2的表达式次方;;COMMON:定义一个通用段,这个段不包含用户代码和数据。在一个汇编源文件中如何包含另一个文件中的内容答:通常可以使用GET/INCLUDE指令,在某源文件中定义一些宏指令,用MAP和FIELD定义结构化数据结构类型,用EQU定义常量的符号名称,然后用GET/INCLUDE将这个源文件包含到其他源文件中。采用了几级流水线工作方式,简要说明。答:三级1、取指令2、译码3、执行采用了几级流水线工作方式,简要说明。答:五级流水线工作方式,1.取指2.指令译码3.执行4.数据存储访问5.写寄存器3.哈佛体系结构和冯诺依曼体系结构有何不同。答:哈佛体系结构的两套地址总线和数据总线是分开的,冯诺依曼体系结构是复用的。1.简述ARM发生异常时,ARM核心会自动做哪些事情从异常返回时,我们要做哪些事情当异常产生时,ARMcore:拷贝CPSR到SPSR_设置适当的CPSR位:改变处理器状态进入ARM状态改变处理器模式进入相应的异常模式设置中断禁止位禁止相应中断(如果需要)保存返回地址到LR_设置PC为相应的异常向量返回时,异常处理需要:从SPSR_恢复CPSR从LR_恢复PCNote:这些操作只能在ARM态执行.2.用ARM汇编指令写出实现64位加法和64位减法的代码段,使用的寄存器请自行分配。假定低32位数存放在r0和r1里面,高32位数存放在r2和r3里面。加法:ADDSr0,r0,r1请列举ARM处理器的模式和异常,并说明各个发生异常时ARM处理器所处的模式异常:ResetDataAbortFIQIRQPrefetchAbortSWIUndefinedinstruction处理器模式User:非特权模式,大部分任务执行在这种模式FIQ:当一个高优先级(fast)中断产生时将会进入这种模式IRQ:当一个低优先级(normal)中断产生时将会进入这种模式Supervisor:当复位或软中断指令执行时将会进入这种模式Abort:当存取异常时将会进入这种模式Undef:当执行未定义指令时会进入这种模式System:使用和User模式相同寄存器集的特权模式4.FIQ的什么特点使得它处理的速度比IRQ快1)FIQ优先级比IRQ高,不会被中断2)FIQ有自己的专属寄存器:r8~r12,不用对通用寄存器入栈保护,可以加快速度3)FIQ位于异常向量表的末尾0x1c,故无需跳转,可以在这里直接放置异常处理函数5.什么指令可以放在中断向量表跳转指令,给PC赋值的指令B,LDR,MOV6.ARM处理器中断向量表位于存储器的什么位置默认:0x0也可以配置成:0Xffff00007.下列ARM指令将做什么a)LDRHr0,[r1,#6]b)LDRr0,=0x999a:将r1寄存器的值加上6,然后把以这个值为地址的内存单元里的值取半字(低16位)赋给r0b:将立即数0x999赋给r0,注意这是一个伪指令8.SWP指令的优势是什么用来实现什么功能功能:在寄存器和存储器之间,由一次存储器读和一次存储器写组成的原子操作。完成一个字节或字的交换。可以用来实现信号量9.专业名词解释RISC(ReduceInstructSetComputer);IP(IntellectualProperty);ISR(InterruptServersRoutine)JTAG(JoinTestActiveGroup)IDE(IntegrateDevelopmentEnvironment)RTOS(实时操作系统);CISC(复杂指令集);Kernel(内核)Scheduler(调度)non-preemptive(非抢先式)初始化代码直接对ARM微处理器内核及硬件控制器编程,多采用汇编语言编程,初始化代码一般应包含如下典型任务:(1)定义程序入口点(2)设置异常向量;(3)初始化存储器系统;(4)初始化堆栈指针寄存器;(5)初始化临界I/O设备;(6)初始化C代码的运行环境;(7)改变处理器的运行模式和状态;(8)使能中断;(9)进入C代码运行选择题1.ARM属于RISC架构2.ARM指令集是32位宽,Thumb指令集是16位宽的。3.ARM指令集是4字节对齐,Thumb指令集是2字节对齐的4.复位后,ARM处理器处于SVC模式,ARM状态5.ARM处理器总共37个寄存器,System模式下使用17个寄存器,SVC模式下使用18个寄存器。6.ARM处理器中优先级别最高的异常为RESET,FIQ,IRQ异常可以用来相应中断7.ARM数据处理指令中有效的立即数是(ACEGH)[A]0X00AB0000[B]0X0000FFFF[C]0XF000000F[D]0X08000012[E]0X00001F80[F]0XFFFFFFFF[G]0[H]0XFF0000008.ATPCS 规定 关于下班后关闭电源的规定党章中关于入党时间的规定公务员考核规定下载规定办法文件下载宁波关于闷顶的规定 中,推荐子函数参数最大为4个9.ATPCS规定中,栈是满减10.在ARM汇编编程,寄存器有多个别名,通常PC是指R15,LR是指R14,SP是指R1311.CPSR寄存器中反映处理器状态的位是T位12.下面属于ARM子程序调用指令的是BL13.ARM7属于冯.诺依曼结构,ARM9属于哈佛结构。14.ARM7是3级流水线,ARM9是5级流水线。15.ARM中可以访问状态寄存器的指令是MRS,能够访问内存的指令是LDR16.下面哪种操作系统最方便移植到嵌入式设备中(D)[A]DOS[B]UNIX[C]WINDOWSXP[D]LINUX17.以下哪项关于SRAM和DRAM的区别是不对(A)(A)SRAM比DRAM慢(B)SRAM比DRAM耗电多(C)DRAM存储密度比SRAM高得多(D)DRM需要周期性刷新18.下面哪种嵌入式操作系统很少用于手机终端设备上(CE)(A)Symbian(B)WinCE(C)uc/os(D)linux(E)VxWorks19.S3C2410采用的是ARM920T核心20.下面哪点不是嵌入式操作系统的特点(C)A.内核精简B.专用性强C.功能强大D.高实时性21.NANDFLASH和NORFLASH的叙述正确的是(D)A.NOR的读速度比NAND稍慢一些B.NAND的写入速度比NOR慢很多C.NAND的擦除速度远比NOR的慢D.大多数写入操作需要先进行擦除操作22.MMU的作用有(AB)[A]内存保护[B]地址转换[C]加快存取速度[D]安全保密[E]内存分配23.以下属于DMA特点的有(BC)[A]占用CPU[B]占用总线[C]不占用CPU[D]不占用总线24.以下哪种方式不属于文件系统的格式(B)(A)FAT(B)DOS(C)NTFS(D)Ext1.在ARM体系结构中,要从主动用户模式(User)切换到超级用户模式(Supervisor),采用何种方法先修改程序状态备份寄存器(SPSR)到对应的模式,再更新CPU状态2.嵌入式系统加电或复位后,所有的CPU通常都从某个由CPU制造商预先安排的地址上取指令。例如:对于S3C2410来说,BootLoader会映射到0x00000000地址处。中的低8位称为控制位,下列不属于控制位的是【A】。A、NB、IC、FD、T中可以访问状态寄存器的指令是MRS,能够访问内存的指令是LDR。5.下列条件码中表示不相等的是NE。EQ相等NE不相等CS/HS无符号数大于或等于CC/LO无符号数小于MI负数PL正数或零VS溢出VC没有溢出HI无符号数大于LS无符号数小于或等于GE有符号数大于或等于LT有符号数小于GT有符号数大于LE有符号数小于或等于AL任何无条件执行(指令默认条件)NV任何从不执行(不要使用)中的低8位称为控制位,其中I位等于1表示禁止IRQ中断。微处理器支持7种工作模式。其中,除用户模式之外的其余6种称为特权模式,在这6种之中,除系统模式之外的其余5种又称为异常模式。8.下列ARM指令中,可用于满递增堆栈操作的是STMIB。伪指令中,可用于大范围地址读取的是LDR。10.同CISC相比,下面哪一项不属于RISC处理器的特征。【D】A、采用固定长度的指令格式,指令规整、简单、基本寻址方式有2~3种。B、减少指令数和寻址方式,使控制部件简化,加快执行速度。C、数据处理指令只对寄存器进行操作,只有加载/存储指令可以访问存储器,以提高指令的执行效率,同时简化处理器的设计。D、RISC处理器都采用哈佛结构11.以下叙述中,不符合RISC指令系统特点的是【B】。A、指令长度固定,指令种类少B、寻址方式种类丰富,指令功能尽量增强C、设置大量通用寄存器,访问存储器指令简单D、选取使用频率较高的一些简单指令12.下面关于ARM处理器的体系结构描述哪一个是错误的。【B】A、三地址指令格式B、所有的指令都是多周期执行C、指令长度固定D、Load-Store结构1.相对于ARM指令集,Thumb指令集的特点是【D】。A、指令执行速度快B、16位指令集,可以得到密度更高的代码,对于需要严格控制成本的设计非常有意义C、Thumb模式有自己独立的寄存器D、16位指令集,代码密度高,加密性能好2.在ARM寄存器结构中,栈指针使用R13寄存器。位体系结构的ARM处理器有7种不同的处理器工作模式,和6个主要用来标识CPU工作状态和程序运行状态的状态寄存器。4.在下列ARM处理器的各种模式中,只有用户模式不可以自由地改变处理器的工作模式。5.在ARM的汇编程序中,ADR、ADRL、LDR、NOP等被称为伪指令。填空题1.常见的ARM处理器内核有ARM7、ARM9和【ARM11】等。2.按总线所传送的信息类型,总线分为【地址总线】、【数据总线】和【控制总线】。3.GPIO的中文全称是【通用输入/输出口】。4.ARM处理器有两种状态,分别是【ARM】和【Thumb】。5.计算机结构分为【冯·诺依曼】结构和【哈佛】结构。处理器支持的数据类型中,字节为【8】位、半字为【16】位、字为【32】位。体系结构版本中V【4】版架构是目前应用最广的ARM体系架构,ARM7、【ARM9】都采用该架构。8.常用的嵌入式操作系统有【嵌入式Linux】、【VxWords】等。嵌入式系统主要由【嵌入式硬件】、【嵌入式软件】和【开发工具】构成。3C支持两种引导方式,分别是【Nor-Flash】启动方式、【Nand-Flash】启动方式。11.一个嵌入式系统由3部分组成,分别是【嵌入式硬件】、【嵌入式软件】和【开发工具】。判断题:1、所有的电子设备都属于嵌入式设备。(F)2、冯诺依曼体系将被哈佛总线所取代。(F)3、嵌入式开发不需要硬件支持。(F)4、移植操作系统时需要修改操作系统中与处理器直接相关的程序。F5、的最大通信速率为12MB。(F)6、嵌入式开发需要专门的软件和硬件设备。(T)编程题;例三:ADR伪指令AREAadrlabel1,CODE,READONLYENTRYstartBLfuncB.LTORGfuncADRR0,startADRR1,DataArea;ADRR2,DataArea+4300ADRLR3,DataArea+4300MOVPC,LRDataAreaSPACE8000END;例五:利用跳转表实现程序跳转AREAJump,CODE,READONLYnumEQU2ENTRYstartMOVR0,#0MOVR1,#3MOVR2,#2BLarithfuncB.arithfuncCMPR0,#numMOVHSPC,LRADRR3,JumpTableLDRPC,[R3,R0,LSL#2]JumpTableDCDDoAddDCDDoSubDoAddADDR0,R1,R2MOVPC,LRDoSubSUBR0,R1,R2MOVPC,LREND3、存储器从0x400000开始的100个单元中存放着ASCII码,编写程序,将其所有的小写字母转换成大写字母,对其它的ASCII码不做变换。MOVR0,#0x400000MOVR1,#0LPLDRBR2,[R0,R1]CMPR2,#0x61BLONEXTCMPR2,#0x7B;0x61---0x7A为小写字母的ASCSUBLOR2,R2,#0x20STRBLOR2,[R0,R1]NEXTADDR1,R1,#1CMPR1,#100BNELP8、编写一简单ARM汇编程序段,实现1+2+…+100的运算。MOVR2,#100MOVR1,#0LOOPADDR1,R1,R2;R1中为累加和SUBSR2,R2,#1;R2控制循环BNELOOP4、编写程序,比较存储器中0x400000和0x400004两无符号字数据的大小,并且将比较结果存于0x400008的字中,若两数相等其结果记为0,若前者大于后者其结果记为1,若前者小于后者其结果记为-1。MOVR0,#0x400000LDRR1,[R0];取第1个数LDRR2,[R0,#4];取第2个数CMPR1,R2;两个数相比较MOVHIR1,#1;R1大MOVLOR1,#-1;R1小MOVEQR1,#0;两个数相等STRR1,[R0,#8]7、编写一程序,存储器中从0x400200开始有一个64位数。(1)将取反,再存回原处;(2)求其补码,存放到0x400208处。LDRR0,=0x400200LDRR2,=0xFFFFFFFFLDRR1,[R0];取低32位数EORR1,R1,R2;取反STRR1,[R0];存低32位反码ADDSR1,R1,#1;又加1为求补STRR1,[R0,#8];存低32位补码LDRR1,[R0,#4];取高32位数EORR1,R1,R2;取反STRR1,[R0,#4];存高32位反码ADCR1,R1,#0;高32位求补STRR1,[R0,#12];存高32位补码例七:汇编语言与C/C++的混和编程项目名:文件名:文件名:———————————————————————————————————————AREAAsm_C,CODE,READONLYENTRYLDRSP,=0x4000IMPORT__mainBL__mainB.END———————————————————————————————————————#include<>intmain(){printf("Helloworld\n");return0;}1、写一条ARM指令,分别完成下列操作:a)r0=16MOVR0,#16b)r0=r1/16(带符号的数字)MOVR0,R1,ASR,#4c)r1=r2*3MULR1,R2,#3d)r0=-r0RSBR0,R0,#02、写几条ARM指令,使能IRQ中断MRSR0,CPSRBICR0,R0,#0x80MSRSPSR,R03、编写程序,将存储器从0x400000开始的200个字节的数据,传送到0x400800开始的区域。AREAcopy,CODE,READONLYENTRYSTARTMOVR0,#0x400000LDRR1,=0x400800MOVR7,#200LOOPLDRBR2,[R0],#1STRBR2,[R1],#1SUBSR7,R7,#1BNELOOPSTOPBSTOPEND4、编写一程序,查找存储器从0x400000开始的100个字中为0的数目,将其结果存到0x400190中。AREAzero,CODE,READONLYENTRYSTARTMOVR0,#0x400000MOVR1,#0MOVR7,#100LOOPLDRR2,[R0],#4CMPR2,#0BNENEXTADDR1,R1,#1NEXTSUBSR7,R7,#1BNELOOPSTRR1,[R0]END5、用汇编语言编写程序读取存储器0x地址上的数据,将数据加1,若结果小于10则使用STR指令把结果写回原地址,若结果大于等于10,则把0写回原地址。答:COUNTEQU0x;定义一个变量,地址为0xAREAExample2,CODE,READONLY;声明代码段Example2ENTRY;标识程序入口CODE32;声明32位ARM指令STARTLDRR1,=COUNT;R1<=COUNTMOVR0,#0;R0<=0STRR0,[R1];[R1]<=R0,即设置COUNT为0LOOPLDRR1,=COUNTLDRR0,[R1];R0<=[R1]ADDR0,R0,#1;R0<=R0+1CMPR0,#10;R0与10比较,影响条件码标志MOVHSR0,#0;若R0大于等于10,则此指令执行,R0<=0STRR0,[R1];[R1]<=R0,即保存COUNTBLOOPEND7、如何实现128位数的减法,请举例说明。AREAEXAMPLE2,CODE,READONLYENTRYSTARTSUBSR5,R5,R9SBCSR4,R4,R8SBCSR3,R3,R7SBCSR2,R2,R6STOPBSTOPEND8、将存储器中起始地址地址0X10处的4个字数据移动到地址0X20处。AREAEXAMPLE2,CODE,READONLYENTRYLDRR0,=0X10;把地址0X10赋给R0LDRR5,=0X20;把地址0X20赋给R5STARTLDMIAR0,{R1-R4};把R0为首地址的内存单元中的值依次赋给,;R1到R4,每次赋完一次值,R0自动加1STMIAR5,{R1-R4};把R1到R4的值依次赋给以R5为首地址的内存单元中,R5每次自动加1STOPBSTOP;死循环END参考CPSR寄存器中各标志位的含义,使处理器处于系统模式。AREAEXAMPLE2,CODE,READONLYENTRYSTARTMOVR0,#0X1F;给R0赋值,2进制为11111MSRCPSR_c,R0;把CPSR的条件位置1STOPBSTOP;死循环END用跳转指令实现两段程序间的来回切换。AREAEXAMPLE5,CODE,READONLYENTRYBLX;跳到a对R0,R1,赋值STARTCMPR0,R1;比较R0,R1的值BNEY;不等跳转到bBEQSTOP;相等时跳转到STOPXMOVR0,#3;对R0,R1赋值MOVR1,#2MOVR15,R14;返回YADDR1,R1,#1;R1自加1BSTART;跳转到STARTSTOPBSTOP;死循环END字符串拷贝子程序,将r1指向的字符串拷贝到r0指向的地方,字符串以0作结束标志AREASCopy,CODE,READONLYEXPORTstrcopystrcopy;r0pointstodestinationstring;r1pointstosourcestringLDRBr2,[r1],#1;loadbyteandupdateaddressSTRBr2,[r0],#1;storebyteandupdateaddress;CMPr2,#0;checkforzeroterminatorBNEstrcopy;keepgoingifnotMOVpc,lr;ReturnEND求两个数的最大值,并将最大值放R0寄存器AREAMAX,CODE,READONLYENTRYSTARTMOVR1,#0x16M0VR2,#0x17CMPR1,R2MOVMIR0,R2MOVPLR0,R1STOPBSTOPEND循环实现数的递减,即每次减1。最终结果为0时退出循环。AREAMAX,CODE,READONLYENTRYSTARTMOVR0,#10LOOPSUBSR0,R0,#1BNELOOPSTOPBSTOPEND改下列C程序段代码为ARM汇编程序段代码。voidgcd(inta,intb){while(a!=b)if(a>b)a=a-b;elseb=b-a;}AREAMAX,CODE,READONLYENTRYgcdCMPR0,R1BEQSTOPBLTLessSUBR0,R0,R1BSTOPLessSUBR1,R1,R0STOPBSTOPEnd分别编写一个函数和一个宏,实现字符串的复制。MACROCOPY$P1,$P2;定义一个宏$P1DCB"HELLO";分配一个字节的空间,并初始化为一个字符串$P2DCB"WORLD!";同上LDRR0,=$P1;把P1的首地址加载到R0LDRR6,=$P2;把P2的首地址加载到R1LDRIAR0,[R1-R5];STRIAR6,[R1-R5];MENDAREACOPY,CODE,READONLYENTRYSTARTCOPYSTR1,STR2;调用宏BSTART;死循环END
本文档为【ARM练习题】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
裴裴老师
暂无简介~
格式:pdf
大小:740KB
软件:PDF阅读器
页数:16
分类:
上传时间:2023-03-16
浏览量:1