- 1、本文档共29页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
XGate 汇编指令集 清华Freescale单片机应用开发研究中心 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 1,R4寄存器左移1位 LSR R4,#3 ;R4 = R4 3,R4寄存器右移3位 8位: ADDL 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,#$12 ADD R4,#$5678 ;会被拆分成两条指令:ADDL R4,#$78; ADDH R4,#$56 单、双、三寄存器寻址 单寄存器寻址: JAL R1 ;Jamp And Link, PC = R1, R1 = PC+2,跳转指令 SIF R2 ;触发R2低字节中存放的中断通道号对应的中断 双寄存器寻址: LSL R4,R5 ; R4 = R4 R5 LSR R4,R5 ; R4 = R4 R5 MOVE RD,RS ; RD=RS 三寄存器寻址: ADC R5,R6,R7 ; R5 = R6 + R7 + Carry SUB R5,R6,R7 ; R5 = R6 - R7 以立即数为偏移量的寄存器间接寻址 把R1+offset地址处的8位数值写入到R4寄存器的低字节中,R4的高字节被清零: LDB R4,(R1,#offset) ; 把R4寄存器中的16位数值写入到R1+offset地址处: STW R4,(R1,#offset) ; 偏移量在寄存器中的寄存器间接寻址 目标寄存器是R4,源地址在R1中,偏移量在R2中,以 R1+R2 找到相关存储器的地址,取其值写入目的寄存器R4: LDB R4,(R1,R2) STW R4,(R1,R2) 带寄存器偏移量和自动加减的寄存器间接寻址 目标寄存器是R4,源地址是R1,偏移量在R2中,执行完指令后R2自动加1或2: LDB R4,(R1,R2+) STW R4,(R1,R2+) 执行指令前R2先减1或2: LDB R4,(R1,-R2) STW R4,(R1,-R2) 相对转移寻址 偏移量是9位: BCC REL9 ;PC = PC + 2 + (REL9 1) BEQ REL9 ;PC = PC + 2 + (REL9 1) 偏移量是10位: BRA REL10 ;PC = PC + 2 + (REL10 1) 由于地址是16位对齐的, 9位偏移量的转移范围是±512B, 10位偏移量的转移范围是±1KB。 CPU 指令集 单寄存器指令 SEX RD Sign Extend Byte to Word 把8位有符号数扩展为16位有符号数 PAR RD Calculate Parity 计算奇偶校验位,奇数时C置位 JAL RD Jamp AndLink 调用以RD为入口地址的子程序,返回地址在RD中 SIF RS Set Interrupt Flag 通过设中断标志触发某个中断, RS低字节中的低7位存放的是中断的通道号 寄存器对存储器读写的指令 RB寄存器用来存放存储器的基地址,例如: LDW RD, (RB, #OFFS5) Load Word from Mem. to RD M[RB, #OFFS5] = RD; STB RS, (RB, #OFFS5) Store Byte from RS to Mem. RS.L = M[RB, #OFFS5] LDB RD, (RB, RI) Load Byte from Mem to RD M[RB, RI] = RD.L;
文档评论(0)