已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
指令格式意义示例ADCADC条件S 目的,操作数1,操作数2带进位的32位数加法目的操作数1 + 操作数2 + !CADDADD条件S 目的,操作数1,操作数232位数相加目的操作数1 + 操作数2ANDAND条件S 目的,操作数1,操作数232位数的逻辑与目的操作数1 & 操作数2BB条件 目标地址相对跳转指令(32M,26b)跳转至目的地, PC目标地址BEQ相等则跳转(Branch if EQual)BNE不相等则跳转(Branch if Not Equal)BGE大于或等于跳转(Branch if Greater than or Equa)BGT大于跳转(Branch if Greater Than)BICBIC条件S 目的,操作数1,操作数232位数的逻辑位清零类似ANDBKPTBKPT 16位的立即数断点指令BLBL条件 目标地址带链接的相对跳转指令(PCR14,跳转)BLE小于或等于跳转(Branch if Less than or Equal)BLEQ带链接等于跳转(Branch with Link if EQual)BLLT带链接小于跳转(Branch with Link if Less Than)BLT小于跳转(Branch if Less Than)BLXBLX 目标地址带链接的切换跳转(PCR14,跳转并切换为thumb)BXBX条件 目标地址切换跳转跳转并切换(ARM/Thumb)CDP CDP2CDP条件协处理器编码,协处理器操作码1,目的寄存器,源寄存器1,源寄存器2,协处理器操作码2。协处理器数据处理操作CLZ零计数CMNCMN条件 操作数1,操作数2比较两个数的相反数CMPCMP条件 操作数1,操作数232位数比较操作数1 操作数2 更新CPSREOREOR条件S 目的,操作数1,操作数232位逻辑异或目的操作数1 XOR 操作数2LDC LDC2LDC条件L 协处理器编码,目的寄存器,源寄存器从协处理器取一个或多个32位值LDC P3,C4,R0 ;P3: C4 R0LDMLDM(或STM)条件类型 基址寄存器!,寄存器列表从内存送多个32位字到ARM寄存器registerMemeryLDRLDR条件 目的,从虚拟地址取一个单个的32位值至寄存器RegisterLDR条件B 目的,读一个字节LDR条件H 目的,读半字(即16位)MCR MCR2 MCRRMCR条件协处理器编码,协处理器操作码1,源寄存器,目的寄存器1,目的寄存器2,协处理器操作码2。从寄存器送数据到协处理器MCR P3,3,R0,C4,C5,6;将ARM处理器寄存器R0中的数据传送到协处理器P3的寄存器C4和C5中MLAMLA条件S 目的,操作数1,操作数2,操作数332位乘累加目的操作数1 * 操作数2 + 操作数3MOVMOV条件S 目的,源操作数传送一个32位数到寄存器目的 源操作数MRC MRC2 MRRCMRC条件协处理器编码,协处理器操作码1,目的寄存器,源寄存器1,源寄存器2,协处理器操作码2。从协处理器传送数据到寄存器MRC P3,3,R0,C4,C5,6;该指令将协处理器P3的寄存器中的数据传送到ARM处理器寄存器中MRSMRS条件通用寄存器 状态寄存器(CPSR或SPSR)把状态寄存器的值送到通用寄存器Register状态寄存器MSRMSR条件程序状态寄存器(CPSR或SPSR)_,操作数把通用寄存器的值传送到状态寄存器CPSR或SPSR 操作数MULMUL条件S 目的,操作数1,操作数232位乘结果MODE(232),目的操作数1 * 操作数2MVNMVN条件S 目的,源操作数把一个32位数的逻辑“非”送到寄存器目的 (取反) 源操作数ORRORR条件S 目的,操作数1,操作数232位逻辑或目的 操作数1 OR 操作数2PLD预装载提示指令QADD有符号32位饱和加QDADD有符号双32位饱和加QSUB有符号32位饱和减QDSUB有符号双32位饱和减RSBRSB条件S 目的,操作数1,操作数2逆向32位减法目的 操作数2 - 操作数1RSCRSC条件S目的,操作数1,操作数2带进位的逆向32法减法目的操作数2 - 操作数1 - !CSBCSBC条件S 目的,操作数1,操作数2带进位的32位减法目的 = 操作数1 - 操作数2 - !CSMLAxy有符号乘累加(16位*16位)+32位=32位SMLALSMLAL条件S目的Low,目的High,操作数1,操作数264位有符号乘累加(32位*32位)+64位=64位)目的L (操作1 * 操作2)L+ 目的L目的H(操作1 * 操作2)H +目的HSMALxy64位有符号乘累加(32位*32位)+64位=64位)SMLAWy号乘累加(32位*16位)16位)+32位=32位SMULLSMULL条件S目的Low,目的High,操作数1,操作数264位有符号乘累加(32位*32位)=64位SMULxy有符号乘(16位*16位=32位)SMULWy有符号乘(32位*16位16位=32位)STC STC2STC条件L协处理器编码,源寄存器,目的寄存器从协处理器中把一个或多个32位值存到内存STC P3,C4,R0;P3:C4R0STMLDM(或STM)条件类型基址寄存器!,寄存器列表把多个32位的寄存器值存放到内存MemRegisterSTRSTR条件 源寄存器,把寄存器的值存到一个内存的虚地址内间RegisterSTR条件B源寄存器,8位(R的低8位)的字节数据传送到存储器STR条件H源寄存器,16位的半字数据传送到存储器SUBSUB条件S 目的,操作数1,操作数232位减法目的操作数1 操作数2SWISWI条件 24位的立即数软中断无立即数时,默认为R0SWPSWP条件 目的,源寄存器1,源寄存器2把一个字或者一个字节和一个寄存器值交换SWP条件B 目的,源寄存器1,源寄存器2 字节操作TEQTEQ条件 操作数1,操作数2等值测试TSTTST条件 操作数1,操作数2位测试UMLALUMLAL条件S 目的Low,目的寄存器High,操作数1,操作数264位无符号乘累加(32位*32位)+64位=64位)UMULLUMULL条件S目的L, 目的H, 操作数1,操作数264位无符号乘累加(32位*32位)=64位ARM汇编伪指令符号定义Symbol DefinitionGBLA、GBLL、GBLSGBLA: 定义一个全局的数字变量,并初始化为0GBLL:定义一个全局的逻辑变量,并初始化为F(假)GBLS:定义一个全局的字符串变量,并初始化为空LCLA、LCLL、LCLSLCLA:定义一个局部的数字变量,并初始化为0LCLL: 定义一个局部的逻辑变量,并初始化为F(假)LCLS: 定义一个局部的字符串变量,并初始化为空SETA、SETL、SETSSETA伪指令用于给一个数学变量赋值SETL伪指令用于给一个逻辑变量赋值SETS伪指令用于给一个字符串变量赋值RLIST名称RLIST 寄存器列表RLIST伪指令可用于对一个通用寄存器列表定义名称,使用该伪指令定义的名称可在ARM指令LDM/STM中使用。数据定义Data DefinitionDCB用于分配一片连续的字节存储单元并用指定的数据初始化标号DCB表达式DCW(DCWU)用于分配一片连续的半字存储单元并用指定的数据初始化DCD(DCDU)用于分配一片连续的字存储单元并用指定的数据初始化DCFD(DCFDU)用于为双精度的浮点数分配一片连续的字存储单元并用指定的数据初始化DCFS(DCFSU)用于为单精度的浮点数分配一片连续的字存储单元并用指定的数据初始化DCQ(DCQU)用于分配一片以8字节为单位的连续的存储单元并用指定的数据初始化SPACESPACE伪指令用于分配一片连续的存储区域并初始化为0,其中,表达式为要分配的字节数。SPACE也可用“”代替。标号SPACE表达式MAP用于定义一个结构化的内存表首地址。MAP也可用“”代替MAP表达式,基址寄存器FIELD用于定义一个结构化的内存表的数据域。FILED也可用“#”代替标号FIELD表达式汇编控制Assembly ControlIF、ELSE、ENDIF条件编译WHILE、WEND循环MACRO、MEND宏MEXIT用于从宏定义中跳转出去其它AREACODE/DATA/READONLY/READWRITE/ALAIN/COMMONAREA段名属性1,属性2,ALIGN通过添加填充字节的方式,使当前位置满足一定的对齐方式. ALIEN3;指定后面的指令为8字节对齐, 23=8,可取值0-31.CODE16、CODE32CODE16伪指令通知编译器,其后的指令序列为16位的Thumb指令.CODE32伪指令通知编译器,其后的指令序列为32位的ARM指令。只通知编译器其后指令的类型,并不能对处理器进行状态的切换。ENTRY指定汇编程序的入口点END通知编译器已经到了源程序的结尾EQU用于为程序中的常量、标号等定义一个等效的字符名称,类似于C语言中的define。其中EQU可用“*”代替EXPORT(或GLOBAL)在程序中声明一个全局的标号,该标号可在其他的文件中引用。EXPORT可用GLOBAL代替。标号在程序中区分大小写,WEAK选项声明其他的同名标号优先于该标号被引用IMPORT通知编译器要使用的标号在其他的源文件中定义,但要在当前源文件中引用,而且无论当前源文件是否引用该标号,该标号均会被加入到当前源文件的符号表中。标号在程序中区分大小写,WEAK选项表示当所有的源文件都没有定义这样一个标号时,编译器也不给出错误信息EXTERN通知编译器要使用的标号在其他的源文件中定义,但要在当前源文件中引用,如果当前源文件实际并未引用该标号,该标号就不会被加入到当前源文件的符号表中。标号在程序中区分大小写GET(或INCLUDE)将一个源文件包含到当前的源文件中,并将被包含的源文件在当前位置进行汇编处理INCBIN将一个目标文件或数据文件作为二进制数据包含到当前的源文件中RN给一个寄存器定义一个别名Temp RN R0ROUT给一个局部变量定义作用范围#立即数, &十六进制数, B .表示当前PC指针(死循环)ARM条件码操作码31:28助记符扩展解释标志状态0000EQ相等/等于0Z=10001NE不等Z=00010CS/HS进位/无符号数高于或等于C=10011CC/LO 无进位/无符号数低于C=00100MI负数N=10101PL正数或0N=00110VS溢出V=10111VC未溢出V=01000HI无符号数高于(大于)C=1 & Z=01001LS无符号数低于或等于(小于等于)C=0 | Z=11010GE有符号数大于或等N=V1011LT有符号数小于N!=V1100GT有符号数大于Z=0 &N=V1101LE有符号数小于或等于Z=1 | N!=V1110AL总是(always)任何状态1111NV从不(never)(不要使用)无CPSR31 2827 87 654 0NZCV UnusedIFT(=1thumb,=0Arm)mode位31:24为条件位域,用f表示;位23:16为状态位域,用s表示;位15:8为扩展位域,用x表示;位7:0为控制位域,用c表示;与指令MSR相关关于移位LSL逻辑左移(低位填0)通用寄存器,LSL 操作数LSR逻辑右移(高位填0)通用寄存器,LSR操作数ASL算术左移(低位填0)通用寄存器,ASL操作数ASR算术右移(符号位填充高位)通用寄存器,ASR操作数ROR循环右移通用寄存器,ROR操作数RRX带C的循环右移通用寄存器,RRX操作数中断向量表AddressHigh Address0x0000 00000xFFFF 0000RESET0x0000 00040xFFFF 0004UNDEF0x0000 00080xFFFF 0008SWI0x0000 000C0xFFFF 000CPABT0x0000 00100xFFFF 0010DABT0x0000 00140xFFFF 0014-0x0000 00180xFFFF 0018IRQ0x0000 001C0xFFFF 001CFIQAPCS寄存器使用约定寄存器ADCS名称ADCS作用0a1变元1/整数结果/临时寄存器1a2变元2/临时寄存器2a3变元3/临时寄存器3a4变元4/临时寄存器4v1寄存器变量15v2寄存器变量26v3寄存器变量37v4寄存器变量48v5寄存器变量59sb/v6静态基/寄存器变量610sl/v7堆栈限/寄存器变量711fp帧指针12ip临时寄存器/新sb内部链接单元调用13sp当前堆栈帧的低端14lr链接地址/临时寄存器15pc程序计数器Load and Store指令LDR R0,R1;将存储器地址为R1的字数据读入寄存器R0。LDR R0,R1,R2;将存储器地址为R1+R2的字数据读入寄存器R0。LDR R0,R1,#8;将存储器地址为R1+8的字数据读入寄存器R0。LDR R0,R1,R2!;将存储器地址为R1+R2的字数据读入寄存器R0,并将新地址R1R2写入R1。LDR R0,R1,8!;将存储器地址为R1+8的字数据读入寄存器R0,并将新地址R18写入R1。LDR R0,R1,R2;将存储器地址为R1的字数据读入寄存器R0,并将新地址R1R2写入R1。LDR R0,R1,R2,LSL2!;将存储器地址为R1R24的字数据读入寄存器R0,并将新地址R1R24写入R1。LDR R0,R1,R2,LSL2;将存储器地址为R1的字数据读入寄存器R0,并将新地址R1R24写入R1。LDRB R0,R1;将存储器地址为R1的字节数据读入寄存器R0,并将R0的高24位清零。LDRB R0,R1,8;将存储器地址为R18的字节数据读入寄存器R0,并将R0的高24位清零。LDRH R0,R1;将存储器地址为R1的半字数据读入寄存器R0,并将R0的高16位清零。LDRH R0,R1,8;将存储器地址为R18的半字数据读入寄存器R0,并将R0的高16位清零。LDRH R0,R1,R2;将存储器地址为R1R2的半字数据读入寄存器R0,并将R0的高16位清零。STR R0,R1,8;将R0中的字数据写入以R1为地址的存储器中,并将新地址R18写入R1。STR R0,R1,8;将R0中的字数据写入以R18为地址的存储器中。STRB R0,R1;将寄存器R0中的字节数据写入以R1为地址的存储器中。STRB R0,R1,8;将寄存器R0中的字节数据写入以R18为地址的存储器中。STRH R0,R1;将寄存器R0中的半字数据写入以R1为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年A特种设备相关管理证考试题库及答案
- 2026年便携式尘埃粒子检测仪项目可行性研究报告
- 2026年中国机械调量砂浆泵行业市场前景预测及投资价值评估分析报告
- 辽宁政治高中试卷及答案
- 2026年中国球墨铸铁供水管件行业市场规模及未来投资方向研究报告
- 2026年四川长江液压件有限责任公司(企业信用报告)
- 2026年加气站可行性报告
- 2026年中国ANSI离心泵行业市场前景预测及投资价值评估分析报告
- 新能源船舶制造项目投资计划书
- 2025年信息安全专家网络攻防演练试题及答案
- GB/T 18037-2008带电作业工具基本技术要求与设计导则
- GB/T 17213.11-2005工业过程控制阀第3-2部分:尺寸角行程控制阀(蝶阀除外)的端面距
- 光通量测量课件
- 纪检监察办案业务知识课件
- 《高等教育心理学》全套课件
- 自适应滤波课件
- 北大博士申请专家推荐信范文
- 山西省临汾市基层诊所医疗机构卫生院社区卫生服务中心村卫生所室地址信息
- 二年级消防安全教育课件
- 水工建筑物安全监测与控制
- 完美国际灵机一问答案
评论
0/150
提交评论