文档详情

嵌入式控制系统课件-第3章-2ARM7指令系统.ppt

发布:2025-02-25约8.72千字共10页下载文档
文本预览下载声明

ARM杂项指令——状态寄存器写指令*(1)(2)(3)(4)在ARM处理器中,只有MSR指令可以对状态寄存器CPSR和SPSR进行写操作。与MRS配合使用,可以实现对CPSR或SPSR寄存器的读-修改-写操作,可以切换处理器模式、或者允许/禁止IRQ/FIQ中断等。应用示例1:;子程序:使能IRQ中断ENABLE_IRQMRSR0,CPSRBICR0,R0,#0x80MSRCPSR_c,R0MOVPC,LR应用示例2:;子程序:禁能IRQ中断DISABLE_IRQMRSR0,CPSRORRR0,R0,#0x80MSRCPSR_c,R0MOVPC,LR1.将CPSR寄存器内容读出到R0;2.修改对应于CPSR中的I控制位;3.将修改后的值写回CPSR寄存器的对应控制域;4.返回上一层函数;*ARM指令目录1.指令格式2.条件码3.存储器访问指令4.数据处理指令5.乘法指令6.ARM分支指令7.杂项指令8.伪指令SWI:0R13:SPR14:LRR15:PCR16:CPSRR17:SPSRLoadADdRessLoadADdResslong*ARM指令目录1.指令格式2.条件码3.存储器访问指令4.数据处理指令5.乘法指令6.ARM分支指令7.杂项指令8.伪指令3.1指令集介绍*ARM指令集——乘法指令01ARM7TDMI具有三种乘法指令,分别为:32×32位乘法指令;32×32位乘加指令;32×32位结果为64位的乘/乘加指令。02ARM指令——乘法指令*乘法指令编码64位有符号乘加指令SMLAL11164位有符号乘法指令SMULL11064位无符号乘加指令UMLAL10164位无符号乘法指令UMULL10032位乘加指令MLA00132位乘法指令MUL000说明指令助记符操作码opcode操作码功能表ARM指令——乘法指令*助记符说明操作条件码位置MULRd,Rm,Rs32位乘法指令Rd←Rm*Rs(Rd≠Rm)MUL{cond}{S}MLARd,Rm,Rs,Rn32位乘加指令Rd←Rm*Rs+Rn(Rd≠Rm)MLA{cond}{S}UMULLRdLo,RdHi,Rm,Rs64位无符号乘法指令(RdLo,RdHi)←Rm*RsUMULL{cond}{S}UMLALRdLo,RdHi,Rm,Rs64位无符号乘加指令(RdLo,RdHi)←Rm*Rs+(RdLo,RdHi)UMLAL{cond}{S}SMULLRdLo,RdHi,Rm,Rs64位有符号乘法指令(RdLo,RdHi)←Rm*RsSMULL{cond}{S}SMLALRdLo,RdHi,Rm,Rs64位有符号乘加指令(RdLo,RdHi)←Rm*Rs+(RdLo,RdHi)SMLAL{cond}{S}ARM指令——乘法指令*助记符说明操作条件码位置MULRd,Rm,Rs32位乘法指令Rd←Rm*Rs(Rd≠Rm)MUL{cond}{S}MLARd,Rm,Rs,Rn32位乘加指令Rd←Rm*Rs+Rn(Rd≠Rm)MLA{cond}{S}UMULLRdLo,RdHi,Rm,Rs64位无符号乘法指令(RdLo,RdHi)←Rm*RsUMULL{cond}{S}UMLALRdLo,RdHi,Rm,Rs64位无符号乘加指令(RdLo,RdHi)←Rm*Rs+(RdLo,RdHi)UMLAL{cond}{S}SMULLRdLo,RdHi,Rm,Rs64位有符号乘法指令(RdLo,RdHi)←Rm*RsSMULL{cond}{S}SMLALRdLo,RdHi,Rm,Rs64位有符号乘加指令(RdLo,RdHi)←Rm*Rs+(RdLo,RdHi)SMLAL{cond}{S}32位乘法指令——MUL指令将Rm和Rs中的值相乘,结果的低32位保存到Rd中。Rd,Rm,Rs不能为R15。只影响CPSR中的N位和Z位。指令格式如下:MUL{cond}{S}Rd,Rm,Rs应用示例:MULR1,R2,R3

显示全部
相似文档