第3章 Thumb-2指令系统4H.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3章 Thumb-2指令系统4H

3.4 Thumb-2指令基本格式 1、指令基本格式: opcode{cond}{S}{.N|.W} Rd,Rn{,Operand2} 号内的项是必需的,{}号内的项是可选的; Opcode 指令助记符,如LDR、STR 等; Cond 指令执行条件码,不选为AL(无条件执行); S 有S则运算结果影响APSR寄存器的标志位; .N|.W .N为16位编码指令,.W为32位编码指令, 建议不选该项让系统自动选择编码类型; Rd 目的寄存器; Rn 第1个操作数的寄存器; Operand2 第2个操作数。 例: LDR.N R1,[R2,#0x10] ; 16 位指令,立即数范围为0-124 ;读R2+0x10存储单元的内容,存到R1 2、指令执行条件码 使用指令条件码可以实现高效的逻辑操作,提高代码的执行效率。不选为AL。 条件码 标志 含义 EQ Z==1 相等 NE Z==0 不相等,与EQ相反 CS/HS C==1 进位(无符号数大于或等于) CC/LO C==0 未进位(无符号数小于) MI N==1 负数 PL N==0 非负数 VS V==1 溢出 VC V==0 没有溢出 HI C = = 1 Z = = 0 无符号数大于 LS C = = 0 || Z = = 1 无符号数小于或等于 GE N==V 有符号数大于或等于 LT N!=V 有符号数小于 GT Z = = 0 N = = V 有符号数大于 LE Z = = 1 || N ! = V 有符号数小于或等于 AL — 无条件执行 指令执行条件码 在 Cortex-M3中,只有分支转移指令(B指令)才可以随意使用条件码。例: BEQ label ;当 Z = = 1 时,程序转移到label 对于其它指令,只有在IF-THEN(IT)指令块中(最多4条)才能加条件码,且必须加条件码。 IT已经带了一个T,最多再带3个T或E(与T相反的条件),T、E排列无顺序。例: … CMP R0, R1 ; 比较R0和R1的值,影响标志位 ITTEE GT ; 下带4条指令,如R0R1既GT成立,否则LE成立 MOVGT R2, R0 ; GT成立,则 R2 = R0 MOVGT R3, R1 ; GT成立,则 R3 = R1 MOVLE R2, R1 ; LE成立,则 R2 = R1 MOVLE R3, R0 ; LE成立,则 R3 = R0 … 3、影响标志位的指令 在Cortex-M3中,下列指令将会更新 APSR 中的标志位: 16 位算术逻辑指令; 32 位带 S 后缀的算术逻辑指令; 比较指令(如CMP/CMN)和测试指令(如TST/TEQ); 直接操作 PSR/APSR 指令( MRS读和MSR写指令)。 4、第2个操作数的格式 立即数:#immN, 3、5、8、12、16位长度的常数表达式,如: MOVW R1,#0x1234 ; 操作数为#imm16,范围为0~65535 由一个8 位数左移任意位而形成的常数,如:0x3FC(0xFF2); 重复半字形式0x00XY00XY、0xXY00XY00、0xXYXYXYXY; Rm寄存器方式:操作数即为寄存器的数值,例: SUB R1,R1,R2 ; R1减R2,保存到R1中 寄存器移位方式:Rm,Shift,将寄存器的移位结果作为操作数,例移位方法如下: ASR #n 算术右移n位(1n32); 例: ADD R1, R1, R1, LSL #3 ;逻辑左移R1 = R1+R1×8 第3章 Thumb-2指令系统 3.1 Thumb-2指令集简介 3.2 Cortex-M3八种寻址方式 3.3 简单的Thumb 汇编程序 3.4 Thumb-2指令基本格式 3.5 Cortex-M3常用的Thumb-2指令集 3.5 Cortex-M3常用的Thumb-2指令集 1、数据传送指令 2、存储器访问指令 3、算术运算指令 4、逻辑运算指令 5、移位和循环指令 6、符号扩展指令 7、字节调序指令 8、位域处理指令 9、子程序调用与无条件转移指令 10、饱和运算指令 1、数据传送指令 指令 功能描述 MOV Rd, #immed_8 将8位立即数传到目标寄存器 MOV Rd, Rn 将寄存器值传给低目标寄存器 MVN Rd, Rm 寄存器值取反后传给目标寄存器 MOV{S}.W Rd, #immed_12 将12位立即数传送到寄存器中 MOV{S}.W Rd, Rm{,shift} 将移位后的寄存器值传到寄存器 MOVT.W Rd, #immed_16 将16位立即

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档