第3章-S12X指令系统PPT课件_第1页
第3章-S12X指令系统PPT课件_第2页
第3章-S12X指令系统PPT课件_第3页
第3章-S12X指令系统PPT课件_第4页
第3章-S12X指令系统PPT课件_第5页
已阅读5页,还剩102页未读 继续免费阅读

下载本文档

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

文档简介

1、MC9S12XS单片机原理及嵌入式系统开发合肥工业大学MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统本章内容v3.1 概述v3.2 S12X汇编指令的格式和符号说明v3.3 寻址方式(Addressing Mode)v3.4 S12X汇编指令系统MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.1 3.1 概述概述【基本概念回顾基本概念回顾】v【指令】计算机能直接识别和执行的命令,即每个有效的编码组。v【指令系统】一种计算机CPU所能执行的全部指令的集合。v【指令助记符】

2、(instruction mnemonic symbol)用一组有一定含义的字符表示的指令,一般采用相关的英文单词缩写。v【汇编语言源程序】利用指令助记符编写的程序。v【操作码】(Opcode)规定一条指令完成何种操作。v【操作数】(Operand)指令所完成操作的对象。MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统本节内容v3.2 S12X汇编指令的格式和符号说明v3.2.1 操作码和操作数v3.2.2 数据类型v3.2.3 数据表示方法v3.2.4 寄存器和存储器表示法MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单

3、片机原理及嵌入式系统开发第3章 S12X指令系统3.2 S12X3.2 S12X汇编指令的格式和符号说明汇编指令的格式和符号说明 标号 操作码 操作数1,操作数2;注释3.2.1 3.2.1 操作码和操作数操作码和操作数vCPU12指令组成:(前导字节)+操作码(+后随字节+扩展字节)v后置字节提供了一定形式的变址寻址、传送、交换和循环的基址寄存器和偏移量的符号等信息。v扩展字节包含有附加的程序信息,例如地址、偏移量和立即数等。v位于第二页的操作码之前均冠以前导字节(prebyte)$18。 MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指

4、令系统3.2 CPU123.2 CPU12汇编指令的格式和符号说明汇编指令的格式和符号说明3.2.2 3.2.2 数据类型数据类型vCPU12X支持8种数据类型:位数据(1位);5位带符号整数;8位带/无符号整数;字节型组合BCD数(8位);9位带符号整数;16位带/无符号整数;16位有效地址;32位带/无符号整数。3.2.3 3.2.3 数据表示方法数据表示方法v十进制整数可直接使用;v16进制数在数字前面加“$”;v二进制数前加“%”;v立即数应在数据前加“#”。MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.2 CPU123

5、.2 CPU12汇编指令的格式和符号说明汇编指令的格式和符号说明3.2.4 3.2.4 寄存器和存储器表示法寄存器和存储器表示法v寄存器用名称表示,不分大小写;M (Memory location)表示由指令有效地址指向的8位存储单元;R (Result)表示算术或逻辑运算结果;I (Intermediate result)表示算术或逻辑运算的中间结果。寄存器和存储器符号加下标“n”时,表示是它的第n位;16位寄存器符号后加下标“H”或“L”时,表示其高位字节或低位字节。vM:M+1表示16位存储器,由M和M+1相邻两个存储单元组成。MM+3表示32位存储器,由4个相邻的存储单元M、M+1、M

6、+2、M+3组成;(M:M+1)表示两个相邻存储单元的内容组成的1个字,(M)为高位字节,(M+1)为低位字节;符号( )表示内容,如M(X)、M(SP)分别是由变址寄存器X和堆栈指针SP所指向的存储单元,M(y+3)是由变址寄存器Y加3后指向的存储单元。MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统本节内容v3.3 寻址方式v3.3.1 隐含/固有寻址(Inherent Addressing,INH)v3.3.2 立即寻址(Immediate Addressing,IMM)v3.3.3 直接寻址(Direct Addressing

7、,DIR)v3.3.4 扩展寻址(Extended Addressing,EXT)v3.3.5 相对寻址(Relative Addressing,REL)v3.3.6 变址寻址(Indexed Addressing,IDX)v3.3.7 全局寻址MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.3 3.3 寻址方式寻址方式v寻址:寻找操作数地址的过程。v有效地址(effective address):操作数所在的地址。v寻址方式(Addressing Mode):通过确定操作数所在的位置(地址),提取操作数的方法。vCPU12共有6

8、类寻址方式,即固有寻址、立即寻址、直接寻址、扩展寻址、相对寻址和变址寻址。MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.3 3.3 寻址方式寻址方式3.3.1 3.3.1 隐含隐含/ /固有寻址固有寻址(Inherent Addressing(Inherent Addressing,INH)INH)v【固有寻址】有效地址包含在操作码中,也称为隐含寻址(Implied addressing),又因为操作数总是处于CPU的寄存器之中,还称为寄存器寻址(Register addressing)。v【特征】指令助记符中出现寄存器的名称,

9、有时甚至连寄存器的名称都不出现。 操作码 指令 操作 1 87 CLRA $00A 2 67 CLRB $00B 3 51 COMB (/B)B 4 12 MUL (A)(B)=A:BD 5 18 16 SBA (A)-(B)A 6 18 0E TAB (A)(B)MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.3 3.3 寻址方式寻址方式3.3.2 3.3.2 立即寻址立即寻址(Immediate Addressing(Immediate Addressing,IMM)IMM)v【立即寻址】指令的操作数是一个8位或16位二进制数

10、。v指令中出现的操作数称为立即数,为了与直接地址相区别,立即数前必须加“#”号。立即寻址常用来给寄存器赋值。 INITSP equ $02FF MAXCNT equ 13 机器码 指令 操作 1 86 00 LDAA#MAXCNT; $0DA 2 CF 12 34 LDS#INITSP; $02FFSP 3 CE 12 34 LDX#$1234; $1234X 4 CD 00 67 LDY#$67 ; $0067Y 5 8A 0B ORAA#%00001011 ; (A)$0BA MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.3

11、 3.3 寻址方式寻址方式3.3.3 3.3.3 直接寻址直接寻址(Direct Addressing(Direct Addressing,DIR)DIR)v【直接寻址】指令中直接给出操作数地址的寻址方式。 机器码 指令 操作 96 55 LDAA $55 ;($0055)A DC 20 LDX $20 ;($0020:$0021)X3.3.4 3.3.4 扩展寻址扩展寻址(Extended Addressing(Extended Addressing,EXT)EXT)v【扩展寻址】指令中直接给出操作数完整16位地址的寻址方式。 STAA$3050;(A)$3050 机器码 指令 操作:($0

12、040)A 86 40 LDAA $40 ;直接寻址 B6 00 40 LDAA $0040 ;使用扩展寻址 B6 00 40 LDAA $0040 ;强制使用扩展寻址 B6 00 40 LDAA $40 ;强制使用扩展寻址 86 40 LDAA 9或标志H=1,则A=A+$06;(2) 如果A中的高4位9或标志C=1,则A=A+$60,同时重置标志C。MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.4 S12X3.4 S12X汇编指令系统汇编指令系统 【例3.8】阅读下列程序段,要求:1)说明程序的功能。2)写出程序执行后D寄存

13、器的最后结果。vLDD #$7527 ;$7527DvADDB #$75 ;(B)+ $75B($9C),c=0,H=0,低半字节大于10,+6调整。vEXG A,B ;AB,将B内容交换到A,以便进行十进制调整。vDAA ;低位字节十进制调整,结果A$02,c=1vEXG A,B ;AB,将低位字节调整结果放回到B,将高位字节换回到AvADDC #$10 ;A+$10+cA($86),c=0,H=0,无需进行十进制调整。vLOOP: BRA LOOP ;原地踏步v程序功能:利用BCD运算求十进制数7527与1075的和,结果放在累加器D中。v程序执行后: D=$8602。MC9S12XSMC

14、9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.4 S12X3.4 S12X汇编指令系统汇编指令系统3.4.2 3.4.2 算术运算指令算术运算指令v【清零指令】v清零指令用来向寄存器或内存单元中写入$00,功能上与加载立即数$00的指令相同,共有6条指令。v寄存器清零针对A、B、X和Y,为固有寻址方式。内存单元清零指令支持6种寻址方式,既可以清零某一个内存单元,也可以清零连续两个内存单元。表中的后3条指令是CPU12X新增的指令。 MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.4 S

15、12X3.4 S12X汇编指令系统汇编指令系统3.4.2 3.4.2 算术运算指令算术运算指令v【符号扩展指令】v单字节无符号数通过高位补0可以扩展成任意宽度,而对于有符号数,由于采用补码表示,高位可能需要补0或补1,因此,S12X设置了符号扩展指令SEX,为固有寻址方式。符号扩展过程是,将原数据符号位复制到已扩展数据的所有高位。指令要求源操作数是A、B或CCR中的内容,扩展后的结果存放在D、X、Y或SP中。vSEX还可以扩展双字节数,是CPU12X新增的指令,此时要求源操作数是D中的内容,扩展后的结果存放在X或Y中。此时,如果16位数据的最高位为0,结果寄存器存入$0000,如果16位数据的

16、最高位为1,结果寄存器存入$FFFF。v指令格式为: SEX R1, R2 ;R1=A、B或CCR,R2=D、X、Y或SP,相当于TFR R1, R2MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.4 S12X3.4 S12X汇编指令系统汇编指令系统3.4.2 3.4.2 算术运算指令算术运算指令v【乘法指令】vS12X乘法全部在寄存器内完成,可以实现两个8位或16位的硬件乘法运算,共有3条指令,均为固有寻址方式。vMUL指令将A、B内容按无符号数相乘,结果存在寄存器D中,同时将结果的D7位(累加器B中的最高位)送到标志C中,作为

17、按四舍五入的依据,后跟一条ADCA #$00指令便可实现四舍五入。因此,这时的进位位C与加法时的含义完全不同。 vEMUL和EMULS指令的区别在于,EMULS指令的结果用补码表示。MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.4 S12X3.4 S12X汇编指令系统汇编指令系统3.4.2 3.4.2 算术运算指令算术运算指令v【乘法指令】v例如,分别用无符号和有符号乘法指令计算$8000$4000vLDD #$8000;32768vLDY #$4000;16384vEMUL;Y=$2000,D=$0000,按无符号数运算 32

18、76816384=536870912=$20000000vLDD #$8000;-32768vLDY #$4000;+16384vEMULS;Y=$E000,D=$0000,按有符号数运算 -3276816384=-536870912=$E0000000MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统v【乘法指令】v【例3.9】计算$4000$407F单元所有字节数据的平方,并把计算结果存放在$4080开始的单元中,按字方式存储。vORG$8000vMAIN: LDS#$0800;定义堆栈vLDX#$4000;初始化数据块指针vLDY

19、#$4080;vLOOP1:JSRSQUARE;求平方循环vINX;指向下一个数据vCPX#$4080;所有数据的平方是否计算完毕?vBNELOOP1;未完,循环vHERE: BRAHERE;原地踏步vSQUARE :LDAA$00, X;(X)A,取1个数据vTAB;(A) BvMUL;计算数据的平方vSTD $02, Y+;保存结果vRTSMC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.4 S12X3.4 S12X汇编指令系统汇编指令系统3.4.2 3.4.2 算术运算指令算术运算指令v【除法指令】vS12X除法全部在寄存器内

20、完成,可以实现16/16位或32/16位的硬件除法运算,共有5条指令,均为固有寻址方式。vFDIV 、IDIV 、IDIVS 3条是16/16除法指令,被除数在D中,除数在X中,商在X中,余数在D中。MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.4 S12X3.4 S12X汇编指令系统汇编指令系统3.4.2 3.4.2 算术运算指令算术运算指令v【除法指令】vFDIV是小数除法指令,实际上是求真分数D/X的值。其中D、X都是无符号整数或小数点位置相同的小数,因此,商是一个小于1的二进制小数。运算过程相当于先将D内容乘以216,然

21、后进行32位除以16位(X内容)的除法运算,商在X中,余数在D中,然后商(X内容)再除以216,相当于将小数点移到最高位的左边。保存商,然后再恢复除数X,可以让余数(D)再次除以X,如此循环反复,可以使商的位数向小数点后面不断延伸,直到满足要求为止。vIDIV和IDIVS分别是无符号和有符号整数16/16除法指令,区别在于IDIVS指令的商和余数用补码表示。MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统【例3.10】阅读下列程序,要求:1)说明程序的功能。2)写出D、X寄存器和相关内存单元的最后结果。已知程序执行前($A000)=$

22、80,($A001)=$03,($A002)=$00,($A003)=$53。vLDD $A000 ;($A000:$A001)D,装载分子vLDX $A002 ;($A002:$A003)X,装载分母vIDIV ;16位除16位无符号整数除法vSTX $A004 ;X$A004:$A005,保存整数结果vLDX $A002 ;($A002:$A003)X,重新装载分母vFDIV ;除以前面的余数,得到小数。16位除16位小数除法。vSTX $A006 ;X$A006:$A007,保存小数vLAST: BRA LAST ;原地踏步程序功能:v将内存单元$A000:$A001中的两个字节数据除以

23、$A002:$A003中的两个字节数据,把整数结果保存在$A004:$A005单元中,小数保存在$A006:$A007单元中。被除数为$8003(32771),除数为$0053(83),结果为$018A.D4D1,即十进制的394.831,32771/83=394.831,0.831=54481/65536,D4D154481。程序执行后:vX=$ D4D1,D=$003D,($A004)=$01,($A005)=$8A,($A006)=$D4,($A007)=$D1。MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.4 S12X3

24、.4 S12X汇编指令系统汇编指令系统3.4.2 3.4.2 算术运算指令算术运算指令v【比较指令】v比较指令用于将寄存器的内容与立即数或内存单元内容进行比较,实际上进行的是两个操作数的减法运算,因此将其划归在算术运算类指令。但它们并不回送运算结果,只是根据差值设置相应的状态位,作为跳转、循环等的判断条件。v这类指令影响标志位N、Z、V、C。v比较指令共有11条,除了CBA为固有寻址方式外,其余10条指令允许使用8种寻址方式,可派生出80条指令。v其中,表中后4条带借位位的16位比较指令是CPU12X新增的指令。MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开

25、发第3章 S12X指令系统3.4 S12X3.4 S12X汇编指令系统汇编指令系统3.4.2 3.4.2 算术运算指令算术运算指令v【比较指令】MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统v【比较指令】 【例3.11】阅读该程序段,要求:1)说明程序的功能。2)写出程序执行后涉及到的寄存器和内存单元的最后结果。程序运行前,($2005)$0A,($2006)$5C,($2007)$71,($2008)$3E,($2009)$89,($200A)$15,($200B)$B2,($200C)$00,($200D)$B6,($200E)

26、$6C,($200F)$CD。vORG $E000;程序起始地址vLDS #$FF;初始化SP,$00FFSPvLDAB $2005;($2005)B,读取计数值,数据块长度在$2005中vCLRA;清累加器A,初始比较值为0vLDX #$2006;$2006X,指向数据块的起始地址vTHERE:CMPA 0,X;(A)(M)?,当前最大值当前值吗?vBHI NOCHG;如果C|Z=0,则PC+2+relPC,是,保持最大值vLDAA 0,X;不是,用当前值替代最大值,(X) AvNOCHG:INX;X+1X,指向下一个数据vDECB;B-1B,计数器减1vBNE THERE;如果B0,则转移

27、;未查找完,则循环vSTAA $2004;保存最大值vHERE:BRA HERE ;原地踏步v程序功能: 从地址为$2006开始的10个单元中,找出数据块中最大的数,并存入$2004单元。v程序执行后:($2004)$CD,A$CD,X$2010。MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.4 S12X3.4 S12X汇编指令系统汇编指令系统3.4.2 3.4.2 算术运算指令算术运算指令v【测试指令】v测试指令用于检测累加器A、B、X、Y或内存单元的内容是否0,相当于一次减0操作。操作后,源操作数不变,也不保存结果,只是根据

28、结果设置标志位。v该类指令有6条,其中,TSTA、TSTB、TSTX和TSTY为固有寻址,TST和TSTW允许使用6种寻址方式,表中最后3条指令是CPU12X新增的指令。MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.4 S12X3.4 S12X汇编指令系统汇编指令系统3.4.3 3.4.3 逻辑运算指令逻辑运算指令vS12X的逻辑运算指令包括基本逻辑运算、取反和求补、移位、位操作、位逻辑运算和位测试等指令。v【基本逻辑运算指令】v基本逻辑运算指令按字节或字进行“与”、“或”、“异或”逻辑运算,用于将寄存器中的某些位清0或置1,共

29、有14条指令。其中,针对CCR的操作只允许立即寻址,针对累加器A、B、X和Y的操作支持8种寻址方式,派生出96条指令。按字进行逻辑运算的指令是CPU12X新增的指令。MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.4 S12X3.4 S12X汇编指令系统汇编指令系统3.4.3 3.4.3 逻辑运算指令逻辑运算指令v【基本逻辑运算指令】MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.4 S12X3.4 S12X汇编指令系统汇编指令系统3.4.3 3.4.3 逻辑运算指令

30、逻辑运算指令v【取反、求补指令】v取反、求补指令将累加器A、B、X、Y或内存单元内容取反和求补,结果放回原处,共有12条指令。v针对累加器A、B、X、Y的操作为固有寻址,针对内存单元的操作支持6种寻址方式,派生出24条指令。v按字进行取反和求补操作的指令是CPU12X新增的指令。MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.4 S12X3.4 S12X汇编指令系统汇编指令系统3.4.3 3.4.3 逻辑运算指令逻辑运算指令v【取反、求补指令】v取反指令相当于执行一次$FF-(r)或$FF-(M)操作,显然V=0,C也应该为0,但

31、为了兼容以前M6800系列而将C置1,N、Z标志意义不变。v求补指令实际上进行一次$00-(r)或$00-(M)的减法操作,可以理解为取反加1操作,因此,对标志位的影响与减法一致。其中,N、Z标志的意义不变,但V、C则比较特殊:v(1)当操作数$80时,执行结果仍为$80,此时,V=1;当操作数$80时,执行后V=0。v(2)当操作数0时,C=0;否则,C=1,因为0减去任何不为0的数,都要产生借位。MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统v【取反、求补指令】v【例3.12】阅读下列程序段,要求:1)说明程序的功能。2)若程序

32、执行前($3000)=$D8,写出程序执行后A、B寄存器的最后结果。vFD-ABS: LDAA $3000 ;($3000)AvCMPA #$00 ;(A)- $00,检验A中是否为正数。以下3行是求绝对值。vBGE A_PLUS ;如果N V=0,即A$00,是正数,转移。vNEGA ;$00-(A)A,是负数,求其相反数(求补码)。vA_PLUS: TAB;(A)B,得到A的绝对值并放在B中。vLOOP: BRA LOOP;原地踏步vM2P:LDAA $3000;($3000)A,A=$D8,这两行程序求补数$64-(A)的值。vNEGA;$00-(A)A,是负数,求其相反数。vADDA

33、#$64;(A)+$64A,$64+$D8$3C,c=1vLOOP:BRA LOOP;原地踏步v程序功能: 分别求一个对应两位十进制数的十六进制数的负数的绝对值和其补数。v程序执行后:B=$28,A=$3C。MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.4.3 3.4.3 逻辑运算指令逻辑运算指令v【位操作与位测试指令】v位操作与位测试指令共有9条指令。v位操作指令5条,用于将内存单元中的某1位或某几位清0或置1。其中,CCR特征位操作指令CLC、CLI、CLV的助记符汇编程序自动汇编成ANDCC指令,为立即寻址方式。v内存单元

34、清0、置1指令BCLR和BSET支持5种寻址方式。MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.4.3 3.4.3 逻辑运算指令逻辑运算指令v【位操作与位测试指令】vBCLR指令将一个8位屏蔽字节取反后,与内存单元中的内容作“逻辑与”运算,结果送回原处,实际上8位屏蔽字节被用于指定内存单元的哪些位为0,即若8位屏蔽数的某位为1,则内存单元的对应位被清0。vBSET指令将一个8位屏蔽字节与内存单元中的内容作“逻辑或”运算,结果送回原处,相当于将8位屏蔽字节中的1送到内存单元的对应位。v位测试指令4条,支持8种寻址方式。位测试指令将

35、累加器A、B或X、Y内容与立即数或内存单元内容进行“逻辑与”运算,但结果并不回送,仅仅根据运算结果设置标志位N、Z、V,目的是检测累加器的特征,如通过将不需要测试的位加以屏蔽,通过检测Z特征位的状态,以判定未屏蔽的位是否为0,根据N的状态,判断最高位是否为0。因为不可能溢出,所以V被清0。v针对X、Y内容进行位测试的指令是CPU12X新增的指令。MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.4.3 3.4.3 逻辑运算指令逻辑运算指令v【逻辑移位指令】v逻辑移位指令共有14条指令,分为逻辑左移LSL和逻辑右移LSR两种。v针对累

36、加器A、B、D、X、Y的操作为固有寻址,针对内存单元的操作支持6种寻址方式。v寄存器X、Y和内存单元双字节逻辑移位的指令是CPU12X新增的指令。MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统v【逻辑移位指令】v【例3.13】阅读该程序段,要求:1)说明程序的功能。2)写出程序执行后涉及到的寄存器和内存单元的最后结果。程序运行前,($3800)$36。vORG$B000;程序起始地址vLDX#$3800;数据地址vLDAB0, X;(X)Bv TFRB, A; vANDA#$0F;屏蔽高8位vSTAA 1, X;(A) (X)+1=

37、$3801vLSRB;右移1次vLSRB;vLSRB;vLSRB;vSTAB0, X;vHERE: BRA HERE;原地踏步v程序功能: 将地址$3800存放的压缩BCD码解压缩,存放在$3800:$3801单元中,高位在低地址单元。v程序执行后:($3800)$03,($3801)$06,A$06,B$03。MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.4 S12X3.4 S12X汇编指令系汇编指令系统统3.4.3 3.4.3 逻辑运算指令逻辑运算指令v【算术移位指令】v算术移位指令共有13条指令,分为算术左移ASL和算术右

38、移ASR两种。v针对累加器A、B、D、X、Y的操作为固有寻址,针对内存单元的操作支持6种寻址方式。v寄存器X、Y和内存单元双字节算术移位的指令是CPU12X新增的指令。MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.4 S12X3.4 S12X汇编指令系汇编指令系统统3.4.3 3.4.3 逻辑运算指令逻辑运算指令v【循环移位指令】v循环移位指令共有12条指令,分为循环左移ROL和循环右移ROR两种。v针对累加器A、B、X、Y的操作为固有寻址,针对内存单元的操作支持6种寻址方式。v寄存器X、Y和内存单元双字节循环移位的指令是CPU

39、12X新增的指令。MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.4 S12X3.4 S12X汇编指令系统汇编指令系统3.4.4 3.4.4 高级函数指令高级函数指令vS12X的高级函数指令具有高级语言中某些函数的功能,如求最大值、最小值,乘积累加,内插值运算等。v【求最大值、最小值指令】MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.4 S12X3.4 S12X汇编指令系统汇编指令系统3.4.4 3.4.4 高级函数指令高级函数指令v【求最大值、最小值指令】v求最大

40、值、最小值指令用于在累加器A、D与内存操作数之间取最大或最小的一个,共有8条指令,求最大值和最小值各有4条指令,支持5种寻址方式。v以字母M开头的4条为8位指令,以字母E开头的4条为16位指令。v虽然这些指令自动完成数据的比较和传送,但标志位显示了比较的结果和是否发生了数据传送。 MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.4 S12X3.4 S12X汇编指令系统汇编指令系统3.4.4 3.4.4 高级函数指令高级函数指令v【乘积累加指令】v乘积累加指令常用于多字节的乘法运算。v乘积累加指令只有1条EMACS,采用特殊寻址方式

41、。可实现带符号数的16位乘法和32位累加运算,隐含使用寄存器X和Y,指令功能为: EMACS opr16a;(M(X):M(X+1) (M(Y):M(Y+1)+(MM+3)MM+3v【操作过程】先将X和Y所指向的两个16位内存操作数相乘,然后将32位乘积与一个扩展寻址的32位内存操作数相加,结果仍然保存在该地址。v指令要求两个乘数及32位内存被加数均为有符号数。v指令执行前,必须另外设置X和Y寄存器。v指令执行后,标志位C反映最终结果的低位字是否产生进位,有进位时C=1,否则C=0,C可用于最终结果的四舍五入操作。MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统

42、开发第3章 S12X指令系统v【乘积累加指令】【例3.14】计算x1y1+x2y2+xnyn ,n=8,xi, yi为数据字vMAC_EX:LDX#MA_TB;X指向第一个乘数vLDY#MB_TB;Y指向第二个乘数vMOVW MR_TB, #0;首先将累加和清0,共4个单元vMOVW MR_TB+2, #0;vLDB#8;循环计数器,共8对乘数vMAC_LP:EMACS MR_TB;求乘积并累加到MR_TBvBVSMAC_ERR;检查是否溢出,是,则转出错处理vLEAX2, X;指向下一个被乘数vLEAY2, Y;指向下一个乘数vDBNEB, MAC_LP;B-1B,B=0?,若B0,未完,继

43、续循环vANDCC #$FE;等同于CLC,表示无溢出vRTS;结束返回vMAC_ERR:ORCC #$01;C=1,表示溢出vRTS;出错返回vORG$0800;被乘数、乘数、结果在RAM区vMA_TB RMB16;第一个乘数vMB_TB RMB16;第二个乘数vMR_TB RMB4;累加和MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.4 S12X3.4 S12X汇编指令系统汇编指令系统3.4.4 3.4.4 高级函数指令高级函数指令v【查表与插值指令】v查表与插值指令有2条,采用变址寻址IDX方式。vTBL为8位内插值操作,

44、结果保存在累加器A中;vETBL为16位内插值操作,结果保存在累加器D中。【指令功能】vTBL oprx0_xysppc;(M)+(B)(M +1)- (M)AvETBL oprx0_xysppc ;(M:M+1)+(B)(M+2:M+3)- (M:M+1)DMC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.4 S12X3.4 S12X汇编指令系统汇编指令系统3.4.5 3.4.5 程序控制指令程序控制指令v程序控制指令通过改变程序计数器PC的内容,使MCU从正常的执行顺序改变到不同的程序流程。v程序控制指令分为转移和调用两大类,前

45、者为永久转移,不再返回;后者执行完新的任务后,返回原地继续执行。v转移指令分为无条件转移和有条件转移两种。MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.4.5 3.4.5 程序控制指令程序控制指令v【无条件转移指令】v无条件转移共有5条指令,前4条(两对)指令采用相对寻址方式,指令中需给出地址偏移量。其中,BRA为无条件固定短转移,使用8位地址偏移量;BRN为不转移,相当于空操作指令。无条件固定长转移,也有相应的LBRA、LBRN指令,采用16位地址偏移量。v两条不转移指令BRN和LBRN主要用于程序的调试。vJMP指令支持6种

46、寻址方式,允许直接或间接给定目标地址。JMP指令的转移范围是64KB空间,执行时不影响标志位,但将清除指令队列。MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.4 S12X3.4 S12X汇编指令系统汇编指令系统3.4.5 3.4.5 程序控制指令程序控制指令v【条件短转移指令】v条件短转移指令分为两类。v一类是根据标志位的状态决定是否转移,但指令只检查有关标志位状态,而不管这些状态如何生成,也不影响任何标志位。该类指令共有16条,采用相对寻址方式,地址偏移量为8位带符号数,最大转移范围是-128+127。v另一类指令包含产生转移

47、条件的操作,且并不影响标志,也不依赖标志,而是根据操作结果决定是否转移,虽然指令中也出现了8位地址偏移量,但却并不单纯为相对寻址,而是包含多种寻址方式,按对源操作数的寻址,有5种寻址方式,该类指令只有2条。MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.4.5 3.4.5 程序控制指令程序控制指令v【条件短转移指令】MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.4 S12X3.4 S12X汇编指令系统汇编指令系统3.4.5 3.4.5 程序控制指令程序控制指令v【条

48、件短转移指令】vBEQ和BNE指令仅仅以特征位Z作为判别基础,因此,既可以用于有符号数,也可用于无符号数。v指令BHS与指令BCC转移条件相同,指令BLO与指令BCS转移条件相同。MC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统v【条件短转移指令】【例】vBRH_LP:CPA #$88;(A)与$88比较(136或-120)取决于后面的指令。vBHI BRH_EX1;用BHI,认为是无符号数比较,;根据C、Z判断(A)是否大于136,大于则转移。vvBRH_EX1:CPA #$88;vBGT BRH_LP;用BGT,认为是有符号数比较,根据Z、;N、V判断(A)是否大于-120,大于则转移。vvBRH_EX2:LSLA;将Acc.7移入c,利用BCS判断是否为1vBCS BRH_EX1;若c=1,则转移到BRH_EX1,c=0,则继续vMC9S12XSMC9S12XS单片机原理及嵌入式系统开发单片机原理及嵌入式系统开发第3章 S12X指令系统3.4.5 3.4.5 程序控

温馨提示

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

评论

0/150

提交评论