XGate汇编指令集_第1页
XGate汇编指令集_第2页
XGate汇编指令集_第3页
XGate汇编指令集_第4页
XGate汇编指令集_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、XGate 汇编指令集汇编指令集清华清华FreescaleFreescale单片机应用开发研究中心单片机应用开发研究中心XGate CPU结构结构XGate 寻址方式寻址方式隐含寻址隐含寻址BRK;Break 进入进入BDM调试方式调试方式RTS;Return to Scheduler 结束当前线程,回空闲状态结束当前线程,回空闲状态NOP;No OPeration空操作空操作SIF;Set Interrupt Flag向向S12X叫中断叫中断 XGate 寻址方式寻址方式立即数寻址立即数寻址4位:位:LSL R4,#1 ;R4 = R4 3,R4寄存器右移寄存器右移3位位8位:位:ADDL

2、R1,#1 ;把;把8位立即数加到位立即数加到R1寄存器寄存器SUBL R2,#2 ;从;从R2寄存器减去寄存器减去8位立即数位立即数LDH R3,#3 ;把;把8位立即数加载到位立即数加载到R3寄存器的高字节上寄存器的高字节上CMPL R4,#4 ;对;对R4寄存器的低字节和寄存器的低字节和8位立即数进行比较位立即数进行比较16位:位:LDW R4,#$1234 ;会被拆分成两条指令:;会被拆分成两条指令:LDL R4,#$34; LDH R4,#$12ADD R4,#$5678 ;会被拆分成两条指令:;会被拆分成两条指令:ADDL R4,#$78; ADDH R4,#$56单、双、三寄存器

3、寻址单、双、三寄存器寻址单寄存器寻址:单寄存器寻址:JAL R1;Jamp And Link, PC = R1, R1 = PC+2,跳转指令跳转指令SIF R2 ;触发触发R2R2低字节中存放的中断通道号对应的中断低字节中存放的中断通道号对应的中断双寄存器寻址:双寄存器寻址:LSL R4,R5 ; R4 = R4 R5MOVE RD,RS; RDRS三寄存器寻址:三寄存器寻址:ADC R5,R6,R7 ; R5 = R6 + R7 + CarrySUB R5,R6,R7 ; R5 = R6 - R7以立即数为偏移量的寄存器间接寻址以立即数为偏移量的寄存器间接寻址把把R1+offset地址处的

4、地址处的8位数值写入到位数值写入到R4寄存器的低字节中寄存器的低字节中,R4的高字节被清零:的高字节被清零:LDB R4,(R1,#offset) ;把把R4寄存器中的寄存器中的16位数值写入到位数值写入到R1+offset地址处:地址处:STW R4,(R1,#offset) ;偏移量在寄存器中的寄存器间接寻址偏移量在寄存器中的寄存器间接寻址目标寄存器是目标寄存器是R4,源地址在,源地址在R1中中,偏移量在,偏移量在R2中中,以以 R1R2 找到相关存储器的地址,取其值写入目找到相关存储器的地址,取其值写入目的寄存器的寄存器R4: LDB R4,(R1,R2) STW R4,(R1,R2)

5、带寄存器偏移量和自动加减的寄存器带寄存器偏移量和自动加减的寄存器间接寻址间接寻址 目标寄存器是目标寄存器是R4R4,源地址是,源地址是R1R1,偏移量在,偏移量在R2R2中,执行完指令中,执行完指令后后R2R2自动加自动加1 1或或2 2:LDB R4,(R1,R2+) STW R4,(R1,R2+) 执行指令前执行指令前R2R2先减先减1 1或或2 2:LDB R4,(R1,-R2) STW R4,(R1,-R2) 相对转移寻址相对转移寻址 偏移量是偏移量是9 9位位: :BCC REL9 ;PC = PC + 2 + (REL9 1)BEQ REL9 ;PC = PC + 2 + (REL

6、9 1)偏移量是偏移量是10位位:BRA REL10 ;PC = PC + 2 + (REL10 RD;STB RS, (RB, #OFFS5) Store Byte from RS to Mem. RS.L = MRB, #OFFS5LDB RD, (RB, RI) Load Byte from Mem to RD MRB, RI = RD.L; $00 = RD.H;STW RS, (RB, RI) Store Word from RS to Mem. RS = MRB, RILDW RD, (RB, RI+) Load word from Mem to RD MRB, RI = RD;

7、RI+2 = RISTB RS, (RB, RI+) Store Byte from RS to Memory RS.L = MRB, RI ; RI+1 = RILDB RD, (RB, RI) Load Byte from memory to RD RI-1 = RI; MRB, RI = RD.L; $00 = RD.H;LDW RD, (RB, RI) Load Word from memory to RD RI-2 = R I; MRB, RI = RDSTB RS, (RB, RI) Store Byte from RS to Memory RI-1 = RI; RS.L = MR

8、B, RI特殊数据传送指令特殊数据传送指令读取条件码寄存器读取条件码寄存器CCR的值的值TFR RD,CCR Transfer CCR to RD写写CCR寄存器寄存器TFR CCR,RS Transfer RS to CCR 读取当前程序计数器读取当前程序计数器PC的值的值TFR RD,PCTransfer PC to RD立即数算术运算指令立即数算术运算指令LDL RD, #IMM8 Load Low RD给给RD低字节加载低字节加载8位立即数位立即数LDH RD, #IMM8 Load High RD给给RD高字节加载高字节加载8位立即数位立即数ADDL RD, #IMM8 Add Lo

9、w RDRD低字节加上低字节加上8位立即数位立即数ADDH RD, #IMM8 Add High RDRD高字节加上高字节加上8位立即数位立即数SUBL RD, #IMM8 Subtract Low RDRD低字节减去低字节减去8位立即数位立即数SUBH RD, #IMM8 Subtract High RDRD高字节减去高字节减去8位立即数位立即数CMPL RS, #IMM8 Compare RS Low with Immediate 比较比较RS低字节和立即数低字节和立即数(RS.L立即数)立即数)CPCH RS, #IMM8 Compare RS with Carry High 比较比较R

10、S高字节和立即数高字节和立即数(RS.H立即数)立即数)操作数为操作数为3 3个寄存器的算术运算指令个寄存器的算术运算指令SUB RD, RS1, RS2Subtract 减法运算减法运算 RDRS1-RS2SBCRD, RS1, RS2Subtract with Carry带借位减法带借位减法 RDRS1-RS2-CADDRD, RS1, RS2Add 加法运算加法运算 RDRS1+RS2ADCRD, RS1, RS2Add with Carry带进位加法带进位加法 RDRS1+RS2+C寄存器与立即数逻辑运算指令寄存器与立即数逻辑运算指令 ANDL RD, #IMM8 AND Low by

11、te RD RD低字节低字节= RD低字节低字节 与与 8位立即数位立即数 ANDH RD, #IMM8 AND High byte RD RD高字节高字节= RD高字节高字节 与与 8位立即数位立即数ORL RD, #IMM8 OR Low bit RD RD低字节低字节= RD低字节低字节 或或 8位立即数位立即数ORH RD, #IMM8 OR High bit RD RD高字节高字节= RD高字节高字节 或或 8位立即数位立即数XNORL RD, #IMM8 eXclusive NOR Low RD RD低字节低字节= RD低字节低字节 异或异或 8位立即数位立即数XNORH RD,

12、#IMM8 eXclusive NOR High RD RD高字节高字节= RD高字节高字节 异或异或 8位立即数位立即数操作数为操作数为3 3个寄存器的逻辑运算指令个寄存器的逻辑运算指令AND RD, RS1, RS2 Logical And 逻辑与逻辑与 RDRS1 与与 RS2OR RD, RS1, RS2Logical Or逻辑或逻辑或 RD= RS1 或或 RS2XNOR RD, RS1, RS2 Logical eX clusive NOR逻辑异或逻辑异或 RD= RS1 异或异或 RS2用立即数表示移位位数的指令用立即数表示移位位数的指令BFFO RD, RS Bit Field

13、 Find First One 找出找出RS中左边第一个中左边第一个1的位置的位置并存入并存入RD,RS为为0时,时,CCR寄存器中的寄存器中的C位被置位被置位,从而区别位,从而区别RS为为0与与RS的第的第0位为位为1两种情况两种情况ASR RD, #IMM4 Arithmetic Shift Right 算术右移算术右移RD,符号位不变,移动位数为,符号位不变,移动位数为4位立即数位立即数LSL RD, #IMM4 Logical Shift Left 逻辑左移逻辑左移RD,高位进入,高位进入C,移动位数为,移动位数为4位立即数位立即数LSR RD, #IMM4 Logical Shift

14、 Right逻辑右移逻辑右移RD,高位进入,高位进入C,移动位数为,移动位数为4位立即数位立即数ROL RD, #IMM4 Logical Shift Left循环逻辑左移循环逻辑左移RD,移动位数用,移动位数用4位立即数表示位立即数表示ROR RD, #IMM4 Logical Shift Right循环逻辑右移循环逻辑右移RD,移动位数用,移动位数用4位立即数表示位立即数表示CSL RD, #IMM4 Logical Shift Left with Carry循环左移循环左移RD,高位进入,高位进入C,移动位数为,移动位数为4位立即数位立即数CSR RD, #IMM4 Logical Sh

15、ift Right with Carry循环右移循环右移RD,高位进入,高位进入C,移动位数为,移动位数为4位立即数位立即数用寄存器表示移位位数的指令用寄存器表示移位位数的指令FFO RD, RSBit Field Find First One 找出找出RS中第一个中第一个1的位置并写入的位置并写入RD,若,若RS为为0,C置位置位ASR RD, RS Asthmatic shift Right 将将RD算术右移若干位算术右移若干位,位数在,位数在RS中中CSL RD, RSLogical Shift Left with Carry含进位借位位的逻辑左移含进位借位位的逻辑左移CSR RD, R

16、SLogical Shift Right with Carry含进位借位位的逻辑右移含进位借位位的逻辑右移LSL RD, RSLogical Shit Left将将RD逻辑左移若干位逻辑左移若干位,位数在,位数在RS中中LSR RD, RSLogical Shit Right 将将RD逻辑右移若干位逻辑右移若干位,位数在,位数在RS中中ROL RD, RSRotate shift left将将RD循环左移若干位循环左移若干位,位数在,位数在RS中中ROR RD, RSRotate Shit Right 将将RD循环右移若干位循环右移若干位,位数在,位数在RS中中转移指令转移指令BCC REL9

17、Branch if Carry Clear 若若C = 0,则转移,此时,则转移,此时PC + $0002 + (REL9 = 若若N V = 0,则转移,则转移 =异或异或BGTREL9Branch if Greater Than 若若Z|(N V) = 0,则转移,则转移BLE REL9Branch if Less than or Equal 若若Z|(N V) = 1,则转移,则转移BLT REL9Branch if Less Than 若若N V = 1,则转移,则转移BRAREL10 Branch Always绝对转移绝对转移位测试指令位测试指令测试测试RD低字节,与低字节,与8位立

18、即数与,影响位立即数与,影响Z,N标志标志:BITL RD, #IMM8BIt Test Low测试测试RD高字节,与高字节,与8位立即数与,影响位立即数与,影响Z,N标志标志: BITH RD, #IMM8 BIt Test High位操作指令位操作指令 BFEXT RD, RS1, RS2Bit Field Extract位提取指令:位提取指令:RS1(n+m):n = RDm:0; 0 = RD15:(m+1)BFINS RD, RS1, RS2Bit Field Insert位插入指令:位插入指令:RS1m:0 = RD(m+n):nBFINSI RD, RS1, RS2Bit Fie

19、ld Insert and Invert位插入并求反指令:位插入并求反指令:!RS1m:0 = RDn+m:nBFINSX RD, RS1, RS2Bit Field Insert and XNOR位插入并异或指令位插入并异或指令 !(RS1m:0 RDn+m:n) = RDn+m:n m = (RS27:4),n = (RS23:0) 信号量操作指令信号量操作指令CSEM IMM3 Clear Semaphore 信号量清零,所操作的信号量由信号量清零,所操作的信号量由3位立即数表述位立即数表述 CSEM RSClear Semaphore信号量清零,所操作的信号量由信号量清零,所操作的信号

20、量由RS表述表述SSEM IMM3 Set Semaphore信号量置位,所操作的信号量由信号量置位,所操作的信号量由3位立即数表述位立即数表述SSEM RSSet Semaphore信号量置位,所操作的信号量由信号量置位,所操作的信号量由RS表述表述程序流程控制及其它指令程序流程控制及其它指令BRKBreak 软件断点,使软件断点,使 XGate 进入进入 Debug 模式模式NOPNo Operation 空操作空操作RTSReturn to Schedule从当前线程返回,从当前线程返回,XGate 回空闲状态回空闲状态SIFSet Interrupt Flag 置某通道中断标志位,若不

21、带参数,即当前通道置某通道中断标志位,若不带参数,即当前通道协处理器汇编程序的例子(协处理器汇编程序的例子(1);#;# XGATE DATA #;#CPU XGATE; 使用使用XGate汇编器汇编器ALIGN 1;按字(;按字(2B)对齐)对齐XGATE_DATA_FLASH EQU* ;当前行,变量参数首地址;当前行,变量参数首地址XGATE_DATA_SCI EQU *-XGATE_DATA_FLASH ;相对地址;相对地址 0 处处DW SCI_REGS ; 定义变量值为定义变量值为 SCI寄存器首地址寄存器首地址XGATE_DATA_IDX EQU *-XGATE_DATA_FLA

22、SH; 相对地址为相对地址为 2 处处DB XGATE_DATA_MSG ; 定义定义1B作为字符指针作为字符指针XGATE_DATA_MSG EQU *-XGATE_DATA_FLASH ; 相对地址为相对地址为 3 处处FCC Hello World! ; 定义定义ASCII字符串字符串 DB $0D; 定义回车符定义回车符 CR协处理器汇编程序的例子(协处理器汇编程序的例子(2);#;# XGATE CODE #;#CPU XGATE; 使用使用XGateXGate汇编器汇编器ALIGN 1XGATE_CODE_FLASH LDW R2,(R1,#XGATE_DATA_SCI); SCI

23、寄存器地址寄存器地址-R2LDB R3,(R1,#XGATE_DATA_IDX); 字符指针字符指针 - R3 LDB R4,(R1,R3+) ; 当前字符当前字符 - R4,R3+STB R3,(R1,#XGATE_DATA_IDX); 指向下一个待发送字符指向下一个待发送字符LDB R0,(R2,#(SCISR1-SCI_REGS); 读读SCI状态寄存器状态寄存器STB R4,(R2,#(SCIDRL-SCI_REGS); 写写SCI寄存器发送字符寄存器发送字符CMPL R4,#$0D; 回车符回车符?BEQ XGATE_CODE_DONE; 是则继续是则继续RTS; 否则本次中断服务完

24、成否则本次中断服务完成XGATE_CODE_DONE LDL R4,#$00 ; R4 清零清零STB R4,(R2,#(SCICR2-SCI_REGS); 关关 SCI 中断中断LDL R3,#XGATE_DATA_MSG; 恢复字符指针恢复字符指针STB R3,(R1,#XGATE_DATA_IDX)XGATE_CODE_FLASH_END RTS ; 中断服务完成中断服务完成XGate C语言范例语言范例interrupt void SCI_Thread(tBuffer* Data) /* XGate SCI中断服务中断服务 */ if (Data-size 0) SCI0SR1; / /* * 读状态寄存器,清中断标志位读状态寄存器,清中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论