范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

嵌入式之arm汇编指令集合,美女学霸总结

  arm汇编指令是学习汇编必须要掌握的,很多人觉得arm汇编指令记得很头疼,而且还很乱,在这里一个美女学霸总结出了最全面的arm汇编指令,看看学霸是怎么总结的,还在等什么,快收藏起来。
  刚开始就是ARM汇编语言基本结构,这是必须先要了解的:
  AREA Init, CODE, READONLY
  ENTRY
  Start
  LDR R0, =0x3FF5000
  LDR R1, 0xFF
  STR R1, [R0]
  LDR R0, =0x3FF5008
  LDR R1, 0x01
  STR R1, [R0]
  ... ... ... ... ... ...
  END
  指令格式
  ARM指令的基本格式:
  [][S] , {,operand2}
  opcode:指令助记码,如:MOV
  con:执行条件,如NE,EQ
  S:是否影响CPSR寄存器的值,设置时影响CPSR
  Rd:目标寄存器
  Rn:第一个操作数的寄存器
  operand2:第二个操作数
  ARM处理器寻址方式
  寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。ARM处理器有九种寻址方式,寄存器寻址、立即数寻址、寄存器偏移寻址为数据处理指令操作数寻址方式,寄存器间接寻址、基址寻址、多寄存器寻址、堆栈寻址、相对寻址为存储器访问指令操作数寻址方式。
  a、寄存器寻址
  操作数的值存在寄存器中,指令中的地址码字段指出的是寄存器编号,指令执行时直接取出寄存器值操作。例如:
  MOV R0,R1
  SUB R0,R1,R2
  b、立即寻址
  立即寻址指令中的操作码字段部分后面的地址码部分就是操作数本身,即数据包含在指令当中。例如:
  MOV R0,#0xff
  立即数要以"#"为前缀,十六进制以"0x"表示
  c、寄存器偏移寻址
  寄存器偏移寻址是ARM指令集特有的寻址方式,当第2操作数是寄存器,在执行操作之前,可以做一次移位操作。
  MOV R0,R2,LSL #3
  ANDS R1,R1,R2,LSL R3
  d、寄存器间接寻址
  寄存器间接寻址指令中的地址码给出的是一个通用寄存器的编号,所需的操作数保存在寄存器指定地址的存储单元中,即寄存器为操作数的地址指针。
  LDR R1,[R2] ;将R2指向的单元中的数据保存再R1中
  SWP R1,R1,[R2] ;将寄存器R1的值和R2指向的单元中进行内容交换
  e、基址寻址
  基址寻址就是将基址寄存器的内容与指令中给出的偏移量进行相加,形成操作数的有效地址。基址寻址用于访问基址附近的存储单元,常用于查表、数组操作以及功能不见寄存器访问等。
  LDR R2,[R3,#0x0c] ;读取R3 0x0c地址指向的存储单元的内容,放入R2
  STR R1,[R0,#-4]! ;先R0=R0-4,然后把R1的值寄存到R0所指向的单元中
  LDR R1,[R0,R3,LSL #1] ;将R0 R3*2地址上的单元的内容读出,并存入R1中
  f、多寄存器寻址
  多寄存器寻址即一次可传送几个寄存器的值,允许一条指令传送16个寄存器的任何子集或所有的存储器。
  LDMIA R1!,{R2-R7,R12};将R1指向的单元中的数据读出到R2---R7、R12中(R1自自动 )
  STMIA R0!,{R2-R7,R12};将R2---R7、R12中的数据一次读入到R0指向的单元中(R0自动 )
  g、堆栈寻址
  堆栈是一种按特定顺序进行存取的存储区,操作顺序分为"先进后出"和"后进先出",堆栈寻址是隐含的,它使用一个专门的寄存器(堆栈指针)指向的存储区域(堆栈),指针所指向的存储单元即是堆栈的栈顶。
  STMFD SP!,{R1-R7,LR} ;将R1---R7、LR入栈。满递减堆栈
  LDMFD SP!,{R1-R7,LR} ;数据出栈,放入R1---R7、LR寄存器,满递减堆栈
  h、块拷贝寻址
  多寄存器传送指令用于将一块数据从存储器的某一位置拷贝到另一位置。
  STMIA R0!,{R1-R7} ;将R1 R7的数据保存到存储器中。
  ;存储指针在保存第一个值之后增加,
  ;增长方向为向上增长。
  STMIB R0!,{R1-R7} ;将R1 R7的数据保存到存储器中。
  ;存储指针在保存第一个值之前增加,
  ;增长方向为向上增长。
  i、相对寻址
  相对寻址是基址寻址的一种变通。由程序计数器PC提供基址地址,指令中的地址码字段为偏移量。两者相加后得到的地址即为操作数的有效地址。
  点击获取1V1嵌入式学习规划,现在还送100G精选学习资料。文中文获取吖
  ARM存储器访问指令
  ARM处理器是加载/存储体系结构的典型RISC处理器,对存储器的访问只能用加载和存储指令实现。ARM的加载/存储指令可以实现字、半字、字节操作。
  1、LDR和STR
  加载/存储字和无符号字节指令。使用单一数据传送指令来装载和存储单一字节或字的数据。LDR指令用于从内存中读取数据放入内存中,STR指令用于将寄存器中的数据保存到内存中。
  指令格式如下:
  LDR[cond][T] Rd,<地址>;
  加载指定地址上的数据(字),放入Rd中
  STR[cond][T] Rd,<地址>;
  存储数据(字)到指定地址的存储单元,要存储的数据在Rd中
  LDR[cond]B[T] Rd,<地址>;加载字节数据,放入Rd中,Rd低字节有效
  STR[cond]B[T] Rd,<地址>;存储字节数据,要存储的数据在Rd中
  指令T表示在处理器特权模式下,存储系统也将访问看做是在用户模式下。
  STR R0,[R1],#8;将R0中内容写入R1为地址的内存中,并将新地址R1+8写入R1。
  STR R0,[R1,#8];将R0中的字数据写入以R1+8为地址的存储器中。
  LDR/STR指令寻址非常灵活,由两部分组成,一部分为基址寄存器,可以是任一通用寄存器,另一部分为地址偏移量,由以下三种格式:
  a、立即数
  立即数可以是一个无符号数值,这个数值可以加到基址寄存器或由基址寄存器减去,例如:
  LDR R0,[R1,#0x12];将R1+0x12地址处的数据读出保存到R0寄存器中
  LDR R0,[R1,#-0x12];将R1-0x12地址处的数据读出保存到R0寄存器中
  LDR R0,[R1];将R1地址处的数据读出保存到R0寄存器中
  b、寄存器
  寄存器中的数值可以加到基址寄存器,也可以从基址寄存器中减去这个值,例如:
  LDR R0,[R1,R2];将R1+R2地址处的数据读出,保存到R0寄存器中
  LDR R0,[R1,-R2];将R1-R2地址处的数据读出,保存到R0寄存器中
  c、寄存器及移位常数
  基址寄存器加上或减去寄存器移位后的值
  LDR R0,[R1,R2,LSL#2];将R1+R2*4地址处的数据读出,保存到寄存器R0
  LDR R0,[R1,-R2,LSL#2];将R1-R2*4地址处的数据读出,保存到寄存器R0
  LDRB指令用于从存储器中将一个8位的字节数据传送到目的寄存器中,同时将寄存器的高24位清零。 该指令通常用于从存储器中读取8位的字节数据到通用寄存器,然后对数据进行处理。当程序计数器PC作为目的寄存器时,指令从存储器中读取的字数据被当作目 的地址,从而可以实现程序流程的跳转。
  LDRH指令的格式为:
  LDR{条件}H 目的寄存器,<存储器地址>
  LDRH指令用于从存储器中将一个16位的半字数据传送到目的寄存器中,同时将寄存器的高16位清零。 该指令通常用于从存储器中读取16位的半字数据到通用寄存器,然后对数据进行处理。当程序计数器PC作为目的寄存器时,指令从存储器中读取的字数据被当作 目的地址,从而可以实现程序流程的跳转。
  STRB指令的格式为:
  STR{条件}B 源寄存器,<存储器地址>
  STRB指令用于从源寄存器中将一个8位的字节数据传送到存储器中。该字节数据为源寄存器中的低8位。
  STRH指令的格式为:
  STR{条件}H 源寄存器,<存储器地址>
  STRH指令用于从源寄存器中将一个16位的半字数据传送到存储器中。该半字数据为源寄存器中的低16位。
  应用示例:
  GPIO设置:
  GPIO_BASE EQU 0xE0028000;定义GPIO寄存器的基地址
  LDR R0,=GPIO_BASE
  LDR R1,=0x00FFFFFF00
  STR R1,[R0,#0x0C];将0xE002800C地址的值设为0x00FFFFFF00
  MOV R1,0x00F00000
  STR R1,[R0,#0x04];将0xE0028004地址的值设为0x00F00000
  2、LDM和STM
  批量加载/存储指令可以实现在一组寄存器和一块连续的内存单元之间传输数据,指令格式如下:
  LDM[cond]<模式> Rn[!],reglist{^}
  STM[cond]<模式> Rn[!],reglist{^}
  模式有八种:
  IA 每次传送后地址加4;
  IB 每次传送前地址加4;
  DA 每次传送后地址减4;
  DB 每次传送前地址减4;
  FD 满递减堆栈;
  ED 空递减堆栈;
  FA 满递增堆栈;
  EA 空递增堆栈;
  3、SWP
  寄存器和存储器交换指令,指令格式:
  SWP[cond][B] Rd,Rm,[Rn]
  将Rn的值为地址的内存单元的值读取到Rd寄存器中,同时将寄存器Rm的值写入该内存单元。
  如果有B,则交换字节,否则交换32位字;
  ARM数据处理指令
  数据处理指令分为数据传送指令、算数逻辑运算指令、比较指令
  数据处理指令只能对寄存器的内容进行操作
  1、数据传送指令
  A、MOV
  指令格式:
  MOV[con][S] Rd,operand2
  MOV R0,#0x04
  MOV R0,R1
  MOVS R3,R2,LSL#2
  MOV PC,LR;PC=LR,子程序返回
  B、MVN
  指令格式:
  MOV[con][S] Rd,operand2
  MVN R0,R1
  MVN R2,#0xFF;R2位0xFFFFFF00
  2、算数逻辑运算指令
  A、ADD加法运算指令
  指令格式:
  ADD[con][S] Rd,Rn,operand2
  将operand2数据与Rn的值相加,结果保存到Rd寄存器
  ADD指令用于把两个操作数相加,并将结果存放到目的寄存器中。操作数1应是一个寄存器,操作数2可以是一个寄存器,被移位的寄存器,或一个立即数。
  ADD R0,R1,R2
  ADD R0,R1,#0x12
  ADDS R0,R1,R2,LSL#2
  B、SUB减法运算指令
  SUB[con][S] Rd,Rn,operand2
  用寄存器Rn的值减去operand2,结果保存在Rd中,指令格式:
  SUBS R0,R0,#1
  SUBS R0,R1,R2
  RBS逆向减法指令
  用寄存器operand2减去Rn,结果保存到Rd中,指令格式:
  RBS[con][S] Rd,Rn,operand2
  RSB R0,R1,#0x100;R0=0x100-R1
  C、ADC带进位加法指令
  将operand2的数据与Rn的值相加,再加上CPSR中的C条件标志位,结果保存到Rd寄存器,指令格式:
  ADC[con][S] Rd,Rn,operand2
  D、AND逻辑与操作指令
  将寄存器operand2的值与寄存器Rn的值按位作逻辑与操作,结果保存到Rd中,指令格式:
  AND[con][S] Rd,Rn,operand2
  ANDS R0,R1,#0x01
  AND R0,R1,R2
  E、ORR逻辑或操作指令
  将寄存器operand2的值与寄存器Rn的值按位作逻辑或操作,结果保存到Rd中,指令格式:
  ORR[con][S] Rd,Rn,operand2
  ORR R0,R0,#0x0F;将R0的低4位置1
  F、EOR逻辑异或操作指令
  将寄存器operand2的值与寄存器Rn的值按位作逻辑异或操作,结果保存到Rd中,指令格式:
  ERR[con][S] Rd,Rn,operand2
  H、BIC位清零操作指令
  将寄存器Rn的值与寄存器operand2的值反码按位作逻辑与操作,结果保存到Rd中,指令格式:
  BIC[con][S] Rd,Rn,operand2
  BIC R1,R1,#0x0F
  3、比较指令
  A、CMP比较指令
  用寄存器Rn的值减去寄存器operand2的值,根据操作的结果更新CPSR中相应的条件标志位,以便后面的指令根据相应的条件标志位判断是否执行,指令格式:
  CMP[con] Rn,operand2
  B、CMN负数比较指令
  CMN[con] Rn,operand2
  CMN指令用于把一个寄存器的内容和另一个寄存器的内容或立即数取反后进行比较,同时更新CPSR中条件标志位的值。该指令实际完成操作数1和操作数2相 加,并根据结果更改条件标志位。
  指令示例:
  CMN R1,R0 ;将寄存器R1的值与寄存器R0的值相加,并根据 结果设置CPSR的标志位
  4、乘法指令
  A、MUL 32位乘法指令
  将Rm与Rs中的值相乘,结果的低32位保存到Rd中,指令格式:
  MUL[con][S] Rd,Rm,Rs
  MUL R0,R1,R2
  B、MLA 32位乘法叠加指令
  将Rm与Rs中的值相乘,结果再与Rn相加,低32位保存到Rd中,指令格式:
  MLA[con][S] Rd,Rm,Rs,Rn
  MLA R0,R1,R2,R3
  C、UMULL 64位无符号乘法指令
  将Rm与Rs的值作无符号数相乘,结果的低32位保存到RdLo中,高32位保存到RdHi中,指令格式:
  UMULL[con][S] RdLo,RdHi,Rm,Rs
  UMULL R0,R1,R4,R5;(R1,R0)=R4*R5
  D、SMULL 64位有符号乘法指令
  将Rm与Rs的值作有符号数相乘,结果的低32位保存到RdLo中,高32位保存到RdHi中,指令格式:
  SMULL[con][S] RdLo,RdHi,Rm,Rs
  SMULL R0,R1,R4,R5;(R1,R0)=R4*R5
  ARM跳转指令
  1、B跳转指令
  跳转到指定的地址执行程序,指令格式:
  B[con] label
  B hello
  B #0x30008000
  2、BL带链接的跳转指令
  将下一条指令的地址拷贝到R14(LR)链接寄存器中,然后跳转到指定地址运行程序,指令格式:
  BL[con] label
  BL hello
  BL用于子函数的调用
  3、BX带状态切换的跳转指令
  BX指令的格式为:
  BX{条件}目标地址
  BX指令跳转到指令中所指定的目标地址,目标地址处的指令既可以是ARM指令,也可以是Thumb指令。
  数据交换指令
  1、SWP指令
  SWP指令的格式为:
  SWP{条件} 目的寄存器,源寄存器1,[源寄存器2]
  SWP指令用于将源寄存器2所指向的存储器中的字数据传送到目的寄存器中,同时将源寄存器1中的字数据传送到源寄存器2所指向的存储器中。显然,当源寄存 器1和目的寄存器为同一个寄存器时,指令交换该寄存器和存储器的内容。
  指令示例:
  SWP R0,R1,[R2] ;将R2所指向的存储器中的字数据传送到R0,同时将R1 中的字数据传送到R2所指向的存储单元。
  SWP R0,R0,[R1] ;该指令完成将R1所指向的存储器中的字数 据与R0中的数据交换。
  2、SWPB指令
  SWPB指令的格式为:
  SWP{条件}B 目的寄存器,源寄存器1,[源寄存器2]
  SWPB指令用于将源寄存器2所指向的存储器中的字节数据传送到目的寄存器中,目的寄存器的高24清零,同时将源寄存 器1中的字节数据传送到源寄存器2所指向的存储器中。显然,当源寄存器1和目的寄存器为同一个寄存器时,指令交换该寄存器和存储器的内容。
  指令示例:
  SWPB R0,R1,[R2] ;将R2所指向的存储器中的字节数据传送到 R0,R0的高24位清零,同时将R1中的低8位数据传送到R2所指向的存储单元。
  SWPB R0,R0,[R1] ;该指令完成将R1所指向的存储器中的 字节数据与R0中的低8位数据交换。
  程序状态寄存器访问指令
  1、MRS指令
  MRS指令的格式为:
  MRS{条件} 通用寄存器 程序状态寄存器(CPSR或SPSR)
  MRS指令用于将程序状态寄存器的内容传送到通用寄存器中。该指令一般用在以下两种情况:
  Ⅰ.当需要改变程序状态寄存器的内容时,可用MRS将程序状态寄存器的内容读入通用寄存器,修改后再写回程序状态寄存器。
  Ⅱ.当在异常处理或进程切换时,需要保存程序状态寄存器的值,可先用该指令读出程序状态寄存器的值,然后保存。
  指令示例:
  MRS R0,CPSR ;传送CPSR的内容到R0
  MRS R0,SPSR ;传送 SPSR的内容到R0
  2、MSR指令
  MSR指令的格式为:
  MSR{条件} 程序状态寄存器(CPSR或SPSR)_<域>,操作数
  MSR指令用于将操作数的内容传送到程序状态寄存器的特定域中。其中,操作数可以为通用寄存器或立即数。<域>用于设置程序状态寄存器中需要 操作的位,32位的程序状态寄存器可分为4个域:
  位[31:24]为条件位域,用f表示;
  位[23:16]为状态位域,用s表示;
  位[15:8]为扩展位域,用x表示;
  位[7:0] 为控制位域,用c表示;
  该指令通常用于恢复或改变程序状态寄存器的内容,在使用时,一般要在MSR指令中指明将要操作的域。只有在特权模式下才可以修改状态寄存器。
  指令示例:
  MSR CPSR,R0 ;传送R0的内容到CPSR
  MSR SPSR,R0 ;传送R0的内容到SPSR
  MSR CPSR_c,R0 ;传送R0的内容到SPSR,但仅仅修改CPSR中的控制位域
  ARM协处理器指令
  1、CDP指令
  CDP指令的格式为:
  CDP{条件} 协处理器编码,协处理器操作码1,目的寄存器,源寄存器1,源寄存器2,协处理器操作码2。
  CDP指令用于ARM处理器通知ARM协处理器执行特定的操作,若协处理器不能成功完成特定的操作,则产生未定义指令异常。其中协处理器操作码1和协处理 器操作码2为协处理器将要执行的操作,目的寄存器和源寄存器均为协处理器的寄存器,指令不涉及ARM处理器的寄存器和存储器。
  指令示例:
  CDP P3,2,C12,C10,C3,4 ;该指令完成协处理器P3的初始化
  2、LDC指令
  LDC指令的格式为:
  LDC{条件}{L} 协处理器编码,目的寄存器,[源寄存器]
  LDC指令用于将源寄存器所指向的存储器中的字数据传送到目的寄存器中,若协处理器不能成功完成传送操作,则产生未定义指令异常。其中,{L}选项表示指 令为长读取操作,如用于双精度数据的传输。
  指令示例:
  LDC P3,C4,[R0] ;将ARM处理器的寄存器R0所指向的存储器中的字数 据传送到协处理器P3的寄存器C4中。
  3、STC指令
  STC指令的格式为:
  STC{条件}{L} 协处理器编码,源寄存器,[目的寄存器]
  STC指令用于将源寄存器中的字数据传送到目的寄存器所指向的存储器中,若协处理器不能成功完成传送操作,则产生未定义指令异常。其中,{L}选项表示指 令为长读取操作,如用于双精度数据的传输。
  指令示例:
  STC P3,C4,[R0] ;将协处理器P3的寄存器C4中的字数据传送到ARM处理 器的寄存器R0所指向的存储器中。
  4、MCR指令
  MCR指令的格式为:
  MCR{条件} 协处理器编码,协处理器操作码1,源寄存器,目的寄存器1,目的寄存器2,协处理器操作码2。
  MCR指令用于将ARM处理器寄存器中的数据传送到协处理器寄存器中,若协处理器不能成功完成操作,则产生未定义指令异常。其中协处理器操作码1和协处理 器操作码2为协处理器将要执行的操作,源寄存器为ARM处理器的寄存器,目的寄存器1和目的寄存器2均为协处理器的寄 存器。
  指令示例:
  MCR P3,3,R0,C4,C5,6 ;将ARM处理器寄存器R0中的数据传送到协处 理器P3的寄存器C4和C5中。
  5、MRC指令
  MRC指令的格式为:
  MRC{条件} 协处理器编码,协处理器操作码1,目的寄存器,源寄存器1,源寄存器2,协处理器操作码2。
  MRC指令用于将协处理器寄存器中的数据传送到ARM处理器寄存器中,若协处理器不能成功完成操作,则产生未定义指令异常。其中协处理器操作码1和协处理 器操作码2为协处理器将要执行的操作,目的寄存器为ARM处理器的寄存器,源寄存器1和源寄存器2均为协处理器的寄存器。
  指令示例:
  MRC P3,3,R0,C4,C5,6 ;该指令将协处理器P3的寄存器中的数据传送到 ARM处理器寄存器中。
  ARM伪指令
  ARM伪指令不是ARM指令集中的指令,只是为了编程方便编译器定义了伪指令,使用时可以像其他ARM指令一样使用,但在编译时这些伪指令将被等效的ARM指令代替。
  1、符号定义伪指令
  A、全局变量定义
  GBLA(GBLL/GBLS) 全局变量名
  GBLA 、GBLL 和GBLS 伪指令用于定义一个ARM 程序中的全局变量,并将其初始化。其中:
  GBLA 伪指令用于定义一个全局的数字变量,并初始化为0 ;
  GBLL 伪指令用于定义一个全局的逻辑变量,并初始化为F(假);
  GBLS 伪指令用于定义一个全局的字符串变量,并初始化为空;
  由于以上三条伪指令用于定义全局变量,因此在整个程序范围内变量名必须唯一。
  B、局部变量定义
  LCLA (LCLL 或 LCLS )局部变量名
  LCLA 、LCLL 和LCLS 伪指令用于定义一个ARM 程序中的局部变量,并将其初始化。其中:
  LCLA伪指令用于定义一个局部的数字变量,并初始化为0 ;
  LCLL伪指令用于定义一个局部的逻辑变量,并初始化为F(假);
  LCLS伪指令用于定义一个局部的字符串变量,并初始化为空;
  以上三条伪指令用于声明局部变量,在其作用范围内变量名必须唯一。
  C、变量的赋值
  变量名 SETA (SETL 或 SETS )表达式
  伪指令 SETA 、SETL 、SETS 用于给一个已经定义的全局变量或局部变量赋值。
  SETA伪指令用于给一个数学变量赋值;
  SETL伪指令用于给一个逻辑变量赋值;
  SETS伪指令用于给一个字符串变量赋值;
  其中,变量名为已经定义过的全局变量或局部变量,表达式为将要赋给变量的值。
  D、RLIST
  名称 RLIST { 寄存器列表 }
  RLIST伪指令可用于对一个通用寄存器列表定义名称,使用该伪指令定义的名称可在ARM 指令 LDM/STM中使用。在LDM/STM指令中,列表中的寄存器访问次序为根据寄存器的编号由低到高,而与列表中的寄存器排列次序无关。
  RegList RLIST {R0-R5,R8,R10} 将寄存器列表名称定义为 RegList ,可在ARM指令LDM/STM中通过该名称访问寄存器列表。
  2、数据定义伪指令
  数据定义伪指令一般用于为特定的数据分配存储单元,同时可完成已分配存储单元的初始化。
  常见的数据定义伪指令有如下几种:
  DCB 用于分配一片连续的字节存储单元并用指定的数据初始化。
  DCW(DCWU)用于分配一片连续的半字存储单元并用指定的数据初始化。
  DCD (DCDU)用于分配一片连续的字存储单元并用指定的数据初始化。
  DCFD(DCFDU)用于为双精度的浮点数分配一片连续的字存储单元并用指定的数据初始化。
  DCFS(DCFSU)用于为单精度的浮点数分配一片连续的字存储单元并用指定的数据初始化。
  DCQ(DCQU)用于分配一片以8字节为单位的连续的存储单元并用指定的数据初始化。
  SPACE 用于分配一片连续的存储单元。
  MAP 用于定义一个结构化的内存表首地址。
  FIELD 用于定义一个结构化的内存表的数据域。
  A、DCB
  语法格式:
  标号 DCB 表达式
  DCB伪指令用于分配一片连续的字节存储单元并用伪指令中指定的表达式初始化。其中,表达式可以为0 255的数字或字符串。DCB 也可用"="代替。
  使用示例:
  Str DCB "This is a test" ;分配一片连续的字节存储单元并初始化。
  B、DCW(或DCWU)
  语法格式:
  标号 DCW (或DCWU) 表达式
  DCW(或DCWU)伪指令用于分配一片连续的半字存储单元并用伪指令中指定的表达式初始化。
  其中,表达式可以为程序标号或数字表达式。
  用DCW分配的字存储单元是半字对齐的,而用DCWU分配的字存储单元并不严格半字对齐。
  使用示例:
  DataTest DCW 1 ,2 ,3 ;分配一片连续的半字存储单元并初始化。
  C、DCD(或DCDU)
  语法格式:
  标号 DCD(或DCDU) 表达式
  DCD(或DCDU)伪指令用于分配一片连续的字存储单元并用伪指令中指定的表达式初始化。其中,表达式可以为程序标号或数字表达式。DCD也可 用"&" 代替。
  用DCD分配的字存储单元是字对齐的,而用DCDU分配的字存储单元并不严格字对齐。
  使用示例:
  DataTest DCD 4 ,5 ,6 ;分配一片连续的字存储单元并初始化。
  D、DCFD(或DCFDU)
  语法格式:
  标号 DCFD(或DCFDU) 表达式
  DCFD(或DCFDU)伪指令用于为双精度的浮点数分配一片连续的字存储单元并用伪指令中指定的表达式初始化。每个双精度的浮点数占据两个字单元。用 DCFD分配的字存储单元是字对齐的,而用DCFDU分配的字存储单元并不严格字对齐。
  使用示例: FDataTest DCFD 2E115 ,-5E7 ;分配一片连续的字存储单元并初始化 为指定的双精度数。
  E、DCFS(或DCFSU)
  语法格式:
  标号 DCFS(或DCFSU) 表达式
  DCFS(或DCFSU)伪指令用于为单精度的浮点数分配一片连续的字存储单元并用伪指令中指定的表达式初始化。每个单精度的浮点数占据一个字单元。用 DCFS分配的字存储单元是字对齐的,而用DCFSU分配的字存储单元并不严格字对齐。
  使用示例:
  FDataTest DCFS 2E5 ,-5E -7 ;分配一片连续的字存储单元并初始化为 指定的单精度数。
  F、DCQ(或DCQU)
  语法格式:
  标号 DCQ(或DCQU) 表达式
  DCQ(或DCQU)伪指令用于分配一片以8个字节(双字)为单位的连续存储区域并用伪指令中指定的表达式 初始化。 用DCQ分配的存储单元是字对齐的,而用DCQU 分配的存储单元并不严格字对齐。
  使用示例:
  DataTest DCQ 100 ;分配一片连续的存储单元并初始化为指定的值。
  G、SPACE
  语法格式:
  标号 SPACE 表达式
  SPACE伪指令用于分配一片连续的存储区域并初始化为0 。其中,表达式为要分配的字节数。
  SPACE也可用" % "代替。
  使用示例:
  DataSpace SPACE 100 ;分配连续100字节的存储单元并初始化为0 。
  H、MAP
  语法格式:
  MAP 表达式 { ,基址寄存器 }
  MAP伪指令用于定义一个结构化的内存表的首地址。MAP也可用"^" 代替。
  表达式可以为程序中的标号或数学表达式,基址寄存器为可选项,当基址寄存器选项不存在时,表达式的值即为内存表的首地址,当该选项存在时,内存表的首地址 为表达式的值与基址寄存器的和。
  MAP伪指令通常与FIELD伪指令配合使用来定义结构化的内存表。
  使用示例:
  MAP 0x100 ,R0 ;定义结构化内存表首地址的值为0x100+R0 。
  I、FILED
  语法格式:
  标号 FIELD 表达式
  FIELD伪指令用于定义一个结构化内存表中的数据域。FILED 也可用"#" 代替。
  表达式的值为当前数据域在内存表中所占的字节数。
  FIELD伪指令常与MAP伪指令配合使用来定义结构化的内存表。MAP伪指令定义内存表的首地址,FIELD伪指令定义内存表中的各个数据域,并可以为 每个数据域指定一个标号供其他的指令引用。
  注意MAP和FIELD伪指令仅用于定义数据结构,并不实际分配存储单元。
  使用示例:
  MAP 0x100 ; 定义结构化内存表首地址的值为0x100。
  A FIELD 16 ; 定义A的长度为16字节,位置为0x100。
  B FIELD 32 ; 定义B的长度为32字节,位置为0x110。
  S FIELD 256 ;定义S的长度为256字节,位置为0x130。
  3、汇编控制伪指令
  汇编控制伪指令用于控制汇编程序的执行流程,常用的汇编控制伪指令包括以下几条:
  IF 、ELSE 、ENDIF
  WHILE 、WEND
  MACRO 、MEND、MEXIT
  A、IF、ELSE、ENDIF
  语法格式:
  IF 逻辑表达式
  指令序列 1
  ELSE
  指令序列 2
  ENDIF
  IF 、ELSE 、ENDIF伪指令能根据条件的成立与否决定是否执行某个指令序列。当IF后面的逻辑表达式为真,则执行指令序列1 ,否则执行指令序 列2 。其中,ELSE及指令序列2可以没有,此时,当IF后面的逻辑表达式为真,则执行指令序列1 ,否则继续执行后面的指令。
  IF 、ELSE 、ENDIF伪指令可以嵌套使用。
  使用示例:
  GBLL Test ;声明一个全局的逻辑变量,变量名为Test
  IF Test = TRUE
  指令序列 1
  ELSE
  指令序列 2
  ENDIF
  B、WHILE、WEND
  语法格式:
  WHILE 逻辑表达式
  指令序列
  WEND
  WHILE 、WEND伪指令能根据条件的成立与否决定是否循环执行某个指令序列。当WHILE后面的逻辑表达式为真,则执行指令序列,该指令序列执行完毕后,再判断 逻辑表达式的值,若为真则继续执行,一直到逻辑表达式的值为假。
  WHILE 、WEND伪指令可以嵌套使用。
  使用示例:
  GBLA Counter ; 声明一个全局的数学变量,变量名为Counter
  Counter SETA 3 ;由变量Counter 控制循环次数
  ……
  WHILE Counter < 10
  指令序列
  WEND
  C、MACRO、MEND、MEXIT
  语法格式:
  MACRO
  [$ 标号]宏名[$ 参数 1 ,$ 参数 2 ,……]
  语句段
  MEXIT
  D、MEXIT
  语法格式:
  MEXIT
  MEXIT用于从宏定义中跳转出去。
  4、其他伪指令
  A、AREA
  语法格式:
  AREA 段名 属性1 ,属性2 ,……
  AREA伪指令用于定义一个代码段或数据段。其中,段名若以数字开头,则该段名需用"|"括起来,如:|1_test| 。
  属性字段表示该代码段(或数据段)的相关属性,多个属性用逗号分隔。常用的属性如下:
  — CODE 属性:用于定义代码段,默认为READONLY 。
  — DATA 属性:用于定义数据段,默认为READWRITE 。
  — READONLY 属性:指定本段为只读,代码段默认为READONLY 。
  — READWRITE 属性:指定本段为可读可写,数据段的默认属性为READWRITE 。
  — ALIGN 属性:使用方式为ALIGN表达式。在默认时,ELF(可执行连接文件)的代码段和数据段是按字对齐的,表达式的取值范围为0 31,相应的对齐方式为2 表达式次方。
  — COMMON 属性:该属性定义一个通用的段,不包含任何的用户代码和数据。各源文件中同名的COMMON段共享同一段存储单元。
  一个汇编语言程序至少要包含一个段,当程序太长时,也可以将程序分为多个代码段和数据段。
  使用示例:
  AREA Init ,CODE ,READONLY ; 该伪指令定义了一个代码段,段 名为Init ,属性为只读。
  B、ALIGN
  语法格式:
  ALIGN { 表达式 { ,偏移量 }}
  ALIGN伪指令可通过添加填充字节的方式,使当前位置满足一定的对齐方式。其中,表达式的值用于指定对齐方式,可能的取值为2的幂,如1 、2 、4 、8 、16 等。若未指定表达式,则将当前位置对齐到下一个字的位置。偏移量也为一个数字表达式,若使用该字段,则当前位置的对齐方式为:2的表达 式次幂+偏移 量。
  使用示例:
  AREA Init ,CODE ,READONLY ,ALIEN=3 ;指定后面的指令为8 字节对齐。
  指令序列
  END
  C、CODE16、CODE32
  语法格式:
  CODE16(或CODE32)
  CODE16伪指令通知编译器,其后的指令序列为16位的Thumb指令。
  CODE32伪指令通知编译器,其后的指令序列为32位的ARM指令。
  若 在汇编源程序中同时包含ARM指令和Thumb指令时,可用CODE16伪指令通知编译器其后的指令序列为16位的Thumb指令,CODE32伪指 令 通知编译器其后的指令序列为32位的ARM指令。因此,在使用ARM指令和Thumb指令混合编程的代码里,可用这两条伪指令进行切换,但注意他们只 通知 编译器其后指令的类型,并不能对处理器进行状态的切换。
  使用示例:
  AREA Init ,CODE ,READONLY ……
  CODE32 ; 通知编译器其后的指令为32位的 ARM指令
  LDR R0 ,=NEXT+1 ;将跳转地址放入寄存器R0
  BX R0 ; 程序跳转到新的位置执行, 并将处理器切换到Thumb工作状态
  ……
  CODE16 ; 通知编译器其后的指令为16位的 Thumb指令
  NEXT LDR R3,=0x3FF
  ……
  END ;
  D、ENTRY
  语法格式:
  ENTRY
  ENTRY伪指令用于指定汇编程序的入口点。在一个完整的汇编程序中至少要有一个ENTRY(也可以有多个,当有多个ENTRY时,程序的真正入口点由链 接器指定),但在一个源文件里最多只能有一个ENTRY(可以没有)。
  使用示例:
  AREA Init ,CODE ,READONLY
  ENTRY ; 指定应用程序的入口点
  ……
  E、END
  语法格式:
  END
  END伪指令用于通知编译器已经到了源程序的结尾。
  使用示例:
  AREA Init ,CODE ,READONLY
  ……
  END ;指定应用程序的结尾
  F、EQU
  语法格式:
  名称 EQU 表达式 { ,类型 }
  EQU伪指令用于为程序中的常量、标号等定义一个等效的字符名称,类似于C语言中的#define 。其中EQU可用"*"代替。名称为EQU伪指令定义的字符名称,当表达式为32位的常量时,可以指定 表达式的数据类型,可以有以下三种类型:
  CODE16 、CODE32 和DATA
  使用示例:
  Test EQU 50 ; 定义标号Test 的值为50。
  Addr EQU 0x55 ,CODE32 ; 定义Addr的值为0x55 ,且该处为32位的ARM指令。
  G、EXPORT(或GLOBAL)
  语法格式:
  EXPORT 标号 {[WEAK]}
  EXPORT伪指令用于在程序中声明一个全局的标号,该标号可在其他的文件中引用。EXPORT 可用GLOBAL代替。标号在程序中区分大小写,[WEAK] 选项声明其他的同名标号优先于该标号被引用。
  使用示例:
  AREA Init ,CODE ,READONLY
  EXPORT Stest ;声明一个可全局引用的标号Stest
  END
  H、IMPORT
  语法格式:
  IMPORT 标号 {[WEAK]}
  IMPORT伪指令用于通知编译器要使用的标号在其他的源文件中定义,但要在当前源文件中引用,而且无论当前源文件是否引用该标号,该标号均会被加入到当 前源文件的符号表中。标 号在程序中区分大小写,[WEAK] 选项表示当所有的源文件都没有定义这样一个标号时,编译器也不给出错误信息,在多数情况下 将该标号置为0 ,若该标号为B或BL指令引用,则将B或BL指令置为NOP操作。
  使用示例:
  AREA Init ,CODE ,READONLY
  IMPORT Main ;通知编译器当前文件要引用标号Main,但Main在其他源文件中定 义。
  END
  I、EXTERN
  语法格式:
  EXTERN 标号 {[WEAK]}
  EXTERN伪指令用于通知编译器要使用的标号在其他的源文件中定义,但要在当前源文件中引用,如果当前源文件实际并未引用该标号,该 标号就不会被加入 到当前源文件的符号表中。标号在程序中区分大小写, [WEAK] 选项表示当所有的源文件都没有定义这样一个标号时,编译器也不给出错误信息,在多数情 况下将该标号置为0 ,若该标号为B或BL指令引用,则将B或BL指令置为NOP操作。
  使用示例:
  AREA Init ,CODE ,READONLY
  EXTERN Main ;通知编译器当前文件要引用标号Main,但Main在其他源文件中定 义。
  END
  J、GET(或INCLUDE)
  语法格式:
  GET 文件名
  GET伪指令用于将一个源文件包含到当前的源文件中,并将被包含的源文件在当前位置进行汇编处理。可 以使用INCLUDE代替GET。
  汇编程序中常用的方法是在某源文件中定义一些宏指令,用EQU定义常量的符号名称,用MAP和FIELD定义结构化的数据类型,然后用GET伪指令将这个 源文件包含到其他的源文件中。使用方法与C 语言中的"include" 相似。
  GET伪指令只能用于包含源文件,包含目标文件需要使用INCBIN伪指令
  使用示例:
  AREA Init ,CODE ,READONLY
  GET a1.s ; 通知编译器当前源文件包含源文件a1.s
  GET C:a2.s ; 通知编译器当前源文件包含源文件C:a2.s
  END
  K、INCBIN
  语法格式:
  INCBIN 文件名
  INCBIN伪指令用于将一个目标文件或数据文件包含到当前的源文件中,被包含的文件不作任何变动的存放在当前文件中,编译器从其后开始继续处理。
  使用示例:
  AREA Init ,CODE ,READONLY
  INCBIN a1.dat ; 通知编译器当前源文件包含文件a1.dat
  INCBIN C:a2.txt ;通知编译器当前源文件包含文件C:a2.txt
  END
  L、RN
  语法格式:
  名称 RN 表达式
  RN伪指令用于给一个寄存器定义一个别名。采用这种方式可以方便程序员记忆该寄存器的功能。其中,名称为给寄存器定义的别名,表达式为寄存器的编码。
  使用示例:
  Temp RN R0 ;将R0定义一个别名Temp
  M、ROUT
  语法格式:
  {名称} ROUT
  ROUT伪指令用于给一个局部变量定义作用范围。在程序中未使用该伪指令时,局部 变量的作用范围为所在的AREA,而使用ROUT后,局部变量的作为范围为当前ROUT和下一个ROUT之间。
  嵌入式arm汇编指令这是最全的了,都记住了吗?记不住也没事,收藏起来可以备以后来使用,但是必须要理解才行。

库班拒绝欧文2。7亿续约索要独行侠管理权太离谱双方暂停对话谈判达拉斯晨报记者凯文谢林顿最新报道,独行侠老板马克库班未同意凯里欧文5年2。73亿美元的续约要价,同时也没答应欧文提出的续约附加条件。双方已经暂停续约对话,休赛期各自视情况再进行讨论看电影不奢求灵魂伴侣但一定要真心爱人爱情的发生是一种神奇的化学反应,两人相爱就像合并同类项,看似不经意的组合,就遇到了合适的,自然而然水到渠成,反之,一厢情愿地拧巴追逐,自说自话,则可能南辕北辙,结出苦涩的果实。意大刘亦菲当年头戴鲜花,漂亮,但有点艳俗,但她戴花环如仙女一样看电视剧,其实服装和发型都不是重点,重点是观众们主要还是看脸。我个人还是更喜欢以前的古装剧,特别是里面的古典美女更有辨识度,虽然穿着打扮花花绿绿的,都是喜欢头戴鲜花,甚至艳丽的有点ampampquot张静初以郑灵华之名挑战伦理风险?ampampquot张静初是一位著名的影视演员,最近因为在电视剧郑灵华发声中戴粉红色假发而引发了舆论热议。有人认为这种做法具有严重的伦理风险,但也有人认为这种行为是对新进入娱乐圈的演员和模特们的尊重。利物浦惨遭皇马逆转克洛普被球员气笑了一般情况下,如果克洛普露出笑容,基本意味着利物浦又赢得一场大胜,但今晨的欧冠18决赛首回合却成了例外。看着红军从2比0领先到2比5落败,总是情绪外露的渣叔又露出了笑容,只不过,这次穆雷吐槽全明星,主帅再次下课,特雷杨成教练杀手?今年的NBA全明星赛无趣无聊已经遭到了太多人吐槽,要表演没表演要对抗没对抗。掘金主帅马龙当场炮轰这是他执教过最烂的比赛,今天其弟子穆雷再次提及今年的全明星令人尴尬,没有人在场上认真颠覆软件开发华为自研IDE!未来IDE将不可预测!今天,我们要来谈论一个在软件开发中非常重要的技术根基IDE。IDE是软件开发生态的入口,但目前我们所使用的IDE基本都是由国外巨头提供,比如VisualStudioEclipseJ这个专业门槛有多高?未来趋势又如何?首批人工智能专业本科毕业生调查杭州日报讯ChatGPT(ChatGenerativePretrainedTransformer)在全球狂飙,也带热了人工智能教育的相关话题。我们身边就有一群特别的00后浙江大学首喜欢把谢谢挂嘴边的,往往就这3种人!管理之父德鲁克说一个人必须知道该说什么必须知道什么时候说必须知道对谁说必须知道怎么说。说话,展现做人的尺度,也显露出一个人的层次。你说什么样的话,就是什么样的人。没心没肺的人,只想华硕天选4图赏颜值也是硬实力新潮轻薄游戏本!(共19P)华硕天选4在延续上代备受好评的魔幻青日蚀灰两种二次元高颜配色的基础上,内部核心实现双升级,酷睿版至高搭载i913900H旗舰处理器,锐龙版则为锐龙97940H或锐龙77735H,配吴倩男人装封面穿吊带配黑丝露细腰美背性感撩人红裙妖娆妩媚头条创作挑战赛吴倩登男人装封面,一身黑色皮质抹胸搭配超短裤,这是一次新的惊喜,新的尝试。首页封面,吴倩以一袭黑色吊带抹胸亮相,长卷发自然垂落,仰着脸神情看上去十分享受。慵懒随意地躺
德记者回德国后,我立刻就开始想念中国参考消息网8月28日报道德国商报网站8月24日刊登题为北京哪些地方比柏林先进的文章,通过对比,记者讲述了中国数字经济的强大和便利性。全文编译如下当我时隔三年再次在德国购物时,我感到半年亏上亿,年轻人不爱香飘飘了?但它有喜茶撼动不了的地盘一年卖出3亿多杯,杯子连起来可绕地球一圈!2009年,香飘飘打出的这句广告词被各大地方卫视轮番播出,金句一响,黄金万两2011年,香飘飘已经能卖10亿多杯,绕地球三圈了。2017年如何不靠运气致富?印度穷小子逆袭硅谷新贵,分享赚钱技巧今天,咱们来聊一本励志型的新书,名叫纳瓦尔宝典。副标题明晃晃的,就叫做财富与幸福指南。这个纳瓦尔是谁?有人说他是21世纪的查理芒格,有人说他是硅谷创投教父,还有人说,他是全球股权众文案总有一句话值得你收藏1。我为我喜欢的东西大费周章,所以我才能快乐如斯。海明威2。人生的路程就像爬山一样,看起来走了许多冤枉的路,但最终都会到达山顶。3。人生就是自己的往事和他人的序章。余华4。这路遥马把梦画在纸上思念虚空时,我祈求梦夜夜光临梦来了,寂寞就逃散在安静的早晨,我用回忆把梦画到纸上作为蓝本,我会用记忆去雕刻那些美好的过去与向往玫瑰玫瑰玫瑰秋风敲响窗户时穿围裙的母亲总是举头望天一行vivo和中兴5G新机入网水滴屏侧边指纹近日,vivo的一款新机通过了工信部认证,该机的型号为V2069BA。根据工信部证件照来看,该机将会配备一块水滴屏,后置竖排双摄,采用侧边指纹识别,内置一块4910mAh电池。支持时隔两年强势归来!华为Mate50系列,预约量已突破百万如果芯片规则没有被修改,华为会按部就班地发布新品,比如今年上半年发布P60系列,下半年发布Mate60系列,但芯片规则被修改后,华为发布新机的节奏也彻底被打乱了。原本是去年上半年发厂商别尬吹,触摸屏成不了笔记本电脑的首要卖点在文章开始前,我想问大家一个问题,智能手机发展至今,其带来最大的改变是什么,是助力了互联网进一步普及和升级还是将硕大的相机模组融入到小小的手机当中?在我看来,智能手机最大的进化点是外媒iPhone14系列加速曝光,iPhone13沦为百元机超低价致敬从外媒的爆料来看,苹果的秋季新品发布会,会发布iPhone14系列手表AppleWatch8代系列AirPodsPro2耳机以及搭载新处理器的平板,当然其中关注度最高的,应该就是已小米13采用两种屏幕四边等窄直屏四向无边微曲屏ampampamp最高支持210w根据博主数码闲聊站爆料小米13系列将采用两个屏幕方案,一个是尺寸友好的四边等窄的直屏,另一款则采用四向无边微曲屏,处理器将搭载最新的骁龙8Gen2,小米13标准版将采用6。36英寸视频博主手绘王者荣耀开场画面从油画中获得灵感,视频被赞德芙般丝滑棕与灰从未在自己的视频里出镜,甚至连声音也没出现过,但他每期的视频最低也有10万以上的播放量,最高的甚至超过1000万。作为知名视频门户B站的动画区视频博主,棕与灰最初在学习油画时从两连败到两连胜,从展现问题到解决问题,滕哈赫以谋略改变曼联昨天晚上的英超联赛,曼联客场10战胜南安普顿,在开局两连败之后,曼联的两连胜,使他们在英超积分榜上止住颓势。从展现问题到解决问题,滕哈赫以谋略改变曼联。一,曼联问题的冰冻三尺非一日广东宏远最新消息!曝马尚无法回归,朱芳雨选择全华班,让人唏嘘距离CBA新赛季揭幕只有不到2个的月的时间,很多球队的外援都已经抵达国内开始合练。然而广东宏远方面现在似乎还没有确定新赛季的阵容,在周鹏离队之后,赵睿的去留还没有定论。根据广东媒体火箭波特将完成续约,11合同对双方都有利火箭波特的续约拉锯战终于落下帷幕,最新消息,火箭和波特达成签约协议,双方签订了一份11的合同,第二年有球员选项,据知情者爆料合同金额第一年为950万美元,这份合同对于火箭和波特应该周琦郭艾伦归属确定?一旦成真辽粤只能争八强,五队争四强距离8月31日CBA国内球员注册还有整整4天时间,随着高诗岩永久加盟山东,最受球迷关注的只剩下郭艾伦与周琦的归属,按照篮协规定,两人正随国家队征战可延时注册,但是两大巨星最终花落谁是谁非要把谷爱凌逼走吗?在2022年中国举办的冬奥会18岁的谷爱凌在大跳台U型场地技巧坡面障碍技巧三个项目上为中国斩获2金1银,为中国的奥运精神锦上添花。谷爱凌作为一名归化运动员,从小在美国出生,因为她生2分钟破门,4分钟破门,5分钟破门!中超诞生3场梦幻开局,嗨翻了北京时间8月28日,中超联赛第15轮,19点30分同时有三场比赛开踢,令人意外的是,这三场比赛,全都早早就进球了,分别是2分钟破门,4分钟破门,5分钟破门,同时出现还是挺罕见的,简潘长江,65岁,越活越糊涂了65岁的潘长江今年有些流年不利,原本他是大家心中的表演艺术家,如今却成许多观众心中的不良艺人。他去年的抖音粉丝多达2600万,短短一年掉粉150多万,现在无论他发什么,评论区都是骂61岁刘德华也老了!新照哈腰驼背还颈纹抢镜,女儿刘向蕙却才10岁年过六旬的刘德华虽然比同龄人年轻,但是不服老也不行了,他拍戏时记录自己一天工作的视频曝光,没想到昔日偶像意气风发不再,而是老成了一个老头儿,只是他的女儿还没有成年,还在拼命工作估计(体育)排球女排亚洲杯中国队晋级决赛当日,在菲律宾帕西格市举行的2022年女排亚洲杯半决赛中,中国队以3比2战胜泰国队,晋级决赛。8月28日,中国队球员吴梦洁(上)在比赛中扣球。新华社发(乌马利摄)8月28日,中国队郝伟家中有事返回山东,日本籍教练黑崎久志指挥泰山队vs长江记者季禹8月27日晚1930,山东泰山即将客战武汉长江。本场比赛,泰山队主教练一职由日本助教黑崎久志代理,郝伟家中有事返回济南。泰山队于8月25日晚抵达武汉,并进入闭环管理,本场比TES零封EDG晋级决赛!关键局落后一万经济翻盘,要夺冠的节奏吗?相信很多的网友们在最近都在关注着LPL赛区的夏季赛,今年的比赛也是相当的精彩,不少战队的表现都相当优秀,比如说我们熟知的TES战队,不仅在常规赛表现出色,在季后赛中也并没有掉链子,