嵌入式控制系统课件-第3章-2ARM7指令系统.ppt
《嵌入式控制系统课件-第3章-2ARM7指令系统.ppt》由会员分享,可在线阅读,更多相关《嵌入式控制系统课件-第3章-2ARM7指令系统.ppt(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、ARM指令目录1.指令格式2.条件码3.存储器访问指令4.数据处理指令5.乘法指令6.ARM分支指令7.杂项指令8.伪指令13.1 指令集介绍nARM指令集乘法指令 ARM7TDMI具有三种乘法指令,分别为:3232位乘法指令;32 32位乘加指令;32 32位结果为64位的乘/乘加指令。2ARM指令乘法指令乘法指令编码64位有符号乘加指令SMLAL11164位有符号乘法指令SMULL11064位无符号乘加指令UMLAL10164位无符号乘法指令UMULL10032位乘加指令MLA00132位乘法指令MUL000说明指令助记符操作码opcode操作码功能表3助记符说明操作条件码位置MUL Rd
2、,Rm,Rs32位乘法指令RdRm*Rs (RdRm)MULcondSMLA Rd,Rm,Rs,Rn32位乘加指令RdRm*Rs+Rn (RdRm)MLAcondSUMULL RdLo,RdHi,Rm,Rs64位无符号乘法指令(RdLo,RdHi)Rm*Rs UMULLcondSUMLAL RdLo,RdHi,Rm,Rs64位无符号乘加指令(RdLo,RdHi)Rm*Rs+(RdLo,RdHi)UMLALcondSSMULL RdLo,RdHi,Rm,Rs64位有符号乘法指令(RdLo,RdHi)Rm*RsSMULLcondSSMLAL RdLo,RdHi,Rm,Rs64位有符号乘加指令(Rd
3、Lo,RdHi)Rm*Rs+(RdLo,RdHi)SMLALcondSARM指令乘法指令4助记符说明操作条件码位置MUL MUL Rd,Rm,RsRd,Rm,Rs32位乘法指令RdRm*Rs (RdRm)MULcondSMLA Rd,Rm,Rs,Rn32位乘加指令RdRm*Rs+Rn (RdRm)MLAcondSUMULL RdLo,RdHi,Rm,Rs64位无符号乘法指令(RdLo,RdHi)Rm*Rs UMULLcondSUMLAL RdLo,RdHi,Rm,Rs64位无符号乘加指令(RdLo,RdHi)Rm*Rs+(RdLo,RdHi)UMLALcondSSMULL RdLo,RdHi,
4、Rm,Rs64位有符号乘法指令(RdLo,RdHi)Rm*RsSMULLcondSSMLAL RdLo,RdHi,Rm,Rs64位有符号乘加指令(RdLo,RdHi)Rm*Rs+(RdLo,RdHi)SMLALcondSARM指令乘法指令 32位乘法指令MUL指令将Rm和Rs中的值相乘,结果的低32位保存到Rd中。Rd,Rm,Rs不能为R15。只影响CPSR中的N位和Z位。指令格式如下:MULcondS Rd,Rm,Rs 应用示例:MUL R1,R2,R3 ;R1=R2R3 MULS R0,R3,R7 ;R0=R3R7,影响CPSR中的N位和Z位 5助记符说明操作条件码位置MUL Rd,Rm,
5、Rs32位乘法指令RdRm*Rs (RdRm)MULcondSMLA MLA Rd,Rm,Rs,RnRd,Rm,Rs,Rn32位乘加指令RdRm*Rs+Rn (RdRm)MLAcondSUMULL RdLo,RdHi,Rm,Rs64位无符号乘法指令(RdLo,RdHi)Rm*Rs UMULLcondSUMLAL RdLo,RdHi,Rm,Rs64位无符号乘加指令(RdLo,RdHi)Rm*Rs+(RdLo,RdHi)UMLALcondSSMULL RdLo,RdHi,Rm,Rs64位有符号乘法指令(RdLo,RdHi)Rm*RsSMULLcondSSMLAL RdLo,RdHi,Rm,Rs64
6、位有符号乘加指令(RdLo,RdHi)Rm*Rs+(RdLo,RdHi)SMLALcondSARM指令乘法指令 32位乘加指令MLA指令将Rm和Rs中的值相乘,再将乘积加上第3个操作数,结果的低32位保存到Rd中。Rd,Rm,Rs,Rn不能为R15。只影响CPSR中的N位和Z位。指令格式如下:MLAcondS Rd,Rm,Rs,Rn 应用示例:MLA R1,R2,R3,R0;R1=R2R3+R06助记符说明操作条件码位置MUL Rd,Rm,Rs32位乘法指令RdRm*Rs (RdRm)MULcondSMLA Rd,Rm,Rs,Rn32位乘加指令RdRm*Rs+Rn (RdRm)MLAcondS
7、UMULL UMULL RdLo,RdHi,Rm,RsRdLo,RdHi,Rm,Rs64位无符号乘法指令(RdLo,RdHi)Rm*Rs UMULLcondSUMLAL RdLo,RdHi,Rm,Rs64位无符号乘加指令(RdLo,RdHi)Rm*Rs+(RdLo,RdHi)UMLALcondSSMULL RdLo,RdHi,Rm,Rs64位有符号乘法指令(RdLo,RdHi)Rm*RsSMULLcondSSMLAL RdLo,RdHi,Rm,Rs64位有符号乘加指令(RdLo,RdHi)Rm*Rs+(RdLo,RdHi)SMLALcondSARM指令乘法指令 64位无符号乘法指令UMULL指
8、令将Rm和Rs中的值作无符号数相乘,结果的低32位保存到RdLo中,而高32位保存到RdHi中。RdLo/Hi,Rm,Rs不能为R15。RdLo/Hi,Rm必须是不同的寄存器。只影响CPSR中的N位和Z位。指令格式如下:UMULLcondS RdLo,RdHi,Rm,Rs 应用示例:UMULL R0,R1,R5,R8;(R1、R0)=R5R8 7助记符说明操作条件码位置MUL Rd,Rm,Rs32位乘法指令RdRm*Rs (RdRm)MULcondSMLA Rd,Rm,Rs,Rn32位乘加指令RdRm*Rs+Rn (RdRm)MLAcondSUMULL RdLo,RdHi,Rm,Rs64位无符
9、号乘法指令(RdLo,RdHi)Rm*Rs UMULLcondSUMLAL UMLAL RdLo,RdHi,Rm,RsRdLo,RdHi,Rm,Rs64位无符号乘加指令(RdLo,RdHi)Rm*Rs+(RdLo,RdHi)UMLALcondSSMULL RdLo,RdHi,Rm,Rs64位有符号乘法指令(RdLo,RdHi)Rm*RsSMULLcondSSMLAL RdLo,RdHi,Rm,Rs64位有符号乘加指令(RdLo,RdHi)Rm*Rs+(RdLo,RdHi)SMLALcondSARM指令乘法指令 64位无符号乘加指令UMLAL指令将Rm和Rs中的值作无符号数相乘,64位乘积与Rd
10、Hi、RdLo相加,结果的低32位保存到RdLo中,而高32位保存到RdHi中。RdLo/Hi,Rm,Rs不能为R15。RdLo/Hi,Rm必须是不同的寄存器。只影响CPSR中的N位和Z位。指令格式如下:UMLALcondS RdLo,RdHi,Rm,Rs 应用示例:UMLAL R0,R1,R5,R8;(R1、R0)=R5R8+(R1、R0)8助记符说明操作条件码位置MUL Rd,Rm,Rs32位乘法指令RdRm*Rs (RdRm)MULcondSMLA Rd,Rm,Rs,Rn32位乘加指令RdRm*Rs+Rn (RdRm)MLAcondSUMULL RdLo,RdHi,Rm,Rs64位无符号
11、乘法指令(RdLo,RdHi)Rm*Rs UMULLcondSUMLAL RdLo,RdHi,Rm,Rs64位无符号乘加指令(RdLo,RdHi)Rm*Rs+(RdLo,RdHi)UMLALcondSSMULL SMULL RdLo,RdHi,Rm,RsRdLo,RdHi,Rm,Rs64位有符号乘法指令(RdLo,RdHi)Rm*RsSMULLcondSSMLAL RdLo,RdHi,Rm,Rs64位有符号乘加指令(RdLo,RdHi)Rm*Rs+(RdLo,RdHi)SMLALcondSARM指令乘法指令 64位有符号乘法指令SMULL指令将Rm和Rs中的值作有符号数相乘,结果的低32位保存
12、到RdLo中,而高32位保存到RdHi中。RdLo/Hi,Rm,Rs不能为R15。RdLo/Hi,Rm必须是不同的寄存器。只影响CPSR中的N位和Z位。指令格式如下:SMULLcondS RdLo,RdHi,Rm,Rs 应用示例:SMULLR2,R3,R7,R6;(R3、R2)=R7R6 9助记符说明操作条件码位置MUL Rd,Rm,Rs32位乘法指令RdRm*Rs (RdRm)MULcondSMLA Rd,Rm,Rs,Rn32位乘加指令RdRm*Rs+Rn (RdRm)MLAcondSUMULL RdLo,RdHi,Rm,Rs64位无符号乘法指令(RdLo,RdHi)Rm*Rs UMULLc
13、ondSUMLAL RdLo,RdHi,Rm,Rs64位无符号乘加指令(RdLo,RdHi)Rm*Rs+(RdLo,RdHi)UMLALcondSSMULL RdLo,RdHi,Rm,Rs64位有符号乘法指令(RdLo,RdHi)Rm*RsSMULLcondSSMLAL SMLAL RdLo,RdHi,Rm,RsRdLo,RdHi,Rm,Rs64位有符号乘加指令(RdLo,RdHi)Rm*Rs+(RdLo,RdHi)SMLALcondSARM指令乘法指令 64位有符号乘加指令SMLAL指令将Rm和Rs中的值作有符号数相乘,64位乘积与RdHi、RdLo相加,结果的低32位保存到RdLo中,而高
14、32位保存到RdHi中。RdLo/Hi,Rm,Rs不能为R15。RdLo/Hi,Rm必须是不同的寄存器。只影响CPSR中的N位和Z位。指令格式如下:SMLALcondS RdLo,RdHi,Rm,Rs 应用示例:SMLALR2,R3,R7,R6;(R3、R2)=R7R6+(R3、R2)10ARM指令目录1.指令格式2.条件码3.存储器访问指令4.数据处理指令5.乘法指令6.ARM分支指令7.杂项指令8.伪指令113.1 指令集介绍nARM指令集分支指令 在ARM中有两种方式可以实现程序的跳转,一种是使用分支指令直接跳转,另一种则是直接向PC寄存器赋值实现跳转。分支指令有以下三种:分支指令B;带
15、链接的分支指令BL;带状态切换的分支指令BX。12助记符说明操作条件码位置B label分支指令PClabelBcondBL label带链接的分支指令LRPC,PClabelBLcondBX Rm带状态切换的分支指令PCRm,切换处理器状态BXcondARM指令分支指令13助记符说明操作条件码位置B labelB label分支指令PClabelBcondBL label带链接的分支指令LRPC,PClabelBLcondBX Rm带状态切换的分支指令PCRm,切换处理器状态BXcondARM指令分支指令 分支指令B指令,该指令跳转范围限制在当前指令的32M字节地址内(ARM指令为字对齐,最
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 控制系统 课件 ARM7 指令系统
限制150内