飞思卡尔单片机教学第3章_指令系统自学

上传人:kms****20 文档编号:56773929 上传时间:2018-10-15 格式:PPT 页数:47 大小:397.50KB
返回 下载 相关 举报
飞思卡尔单片机教学第3章_指令系统自学_第1页
第1页 / 共47页
飞思卡尔单片机教学第3章_指令系统自学_第2页
第2页 / 共47页
飞思卡尔单片机教学第3章_指令系统自学_第3页
第3页 / 共47页
飞思卡尔单片机教学第3章_指令系统自学_第4页
第4页 / 共47页
飞思卡尔单片机教学第3章_指令系统自学_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《飞思卡尔单片机教学第3章_指令系统自学》由会员分享,可在线阅读,更多相关《飞思卡尔单片机教学第3章_指令系统自学(47页珍藏版)》请在金锄头文库上搜索。

1、,第三章 MC9S12单片机指令系统,3-1 指令格式及寻址方式 3-2 指令系统,内容提要:,指令格式,一条指令可以看成是由操作码和操作数两部分组成,将指令按寻址方式分类,实际上是按操作数的含义分类。如:label: MOVB #$66 , X ;注释标号 操作码 源操作数 目的操作数 注释 9S12单片机指令系统每条指令必须有操作码,操作数可以是0-3个。根据操作数的不同定义,9S12的指令可以分成8类,称为8种寻址方式。,3-1 指令格式及寻址方式,寻址方式,隐含寻址 立即数寻址 直接寻址 扩展寻址 相对寻址 变址寻址 累加器变址寻址 带自动加、减的5位偏移量变址寻址,隐含寻址,定义:只

2、有操作码,没有操作数或操作数为寄存器,不显示操作数。 如:NOP、PSHA、PSHB、PSHX、PSHY,PSHC,PSHD,隐含操作数分别为无、A、B、X、Y、CCR、D。 一般是单字节指令。,隐含寻址举例,; PC=C003 NOP ; PC=C004,A=CB,SP=500 PSHA ;A=CB,SP=4FF ,4FF=CB;NOP是单字节指令,只让程序计数器PC加一 ;PSHA首先移动SP指针,再压入数值,立即数寻址,指令操作码后有一或两个8位或16位操作数,是确定的数值。 如: LDAA #$55;表示将十六进制立即数$55加载到累加器A中 LDX #1234;表示将十进制数1234

3、加载到累加器X中 LDY #%01010101;表示将二进制数00100110加载到累 加器Y中 注:立即数前加#,直接寻址,零页寻址,范围是$00$ff,共256个单元,一般访问I/O寄存器。 如: LDAA $55;表示将零页$0055内存单元的数据加载到累加器A。也可以表示为:LDAA $55;“”在老版本CodeWarrior中表示零页寻址,新版本中不需要加“”。,直接寻址举例,LDAA $55 执行前:55=0,A=CB 执行后:55=0,A=0,扩展寻址,操作数为16位地址,可访问64K空间。如: LDX $4000;将$4000和$4001内存单元的数据加载到X。 FREESCA

4、LE的MCU采用“低字节数放高位地址单元,高字节数放低位地址单元”。若: $4000=$12, $4001=$34执行 LDX $4000 指令后,XH=$12, XL=$34又如: STAA $4000;执行结果为A的内容存到$4000单元,相对寻址,相对转移指令。操作数为单字节,跳转范围为-128+127,称为短跳转。长跳转则在短跳转指令前加“L”使用16位偏移量,范围为64K。 如:,LABEL1: BRA LABEL1,-128,LABEL1: LBRA: LABEL LABEL: ,64K 范围,+127,变址寻址,操作数由基地址寄存器(X、Y、SP、PC)加偏移量构成。 偏移量为0

5、位,5位,9位,16位。 如: 若X=$1000LDAA 0, X ;A=$1000LDAA 7, X ;A=$1000+7LDAA -150, X ;A=$1000-150LDAA 1000, X ;A=$1000+1000LDAA 1000,X ;将X+1000地址单元中的;值作为指针,指向的内存单元的值加载到累加器A中 5位偏移量隐含在指令字节中(2字节指令)9位偏移量多占一个字节(3字节指令)16位偏移量多占二个字节(4字节指令),累加器变址寻址,偏移量非立即数,存放在累加器A、B、D中。 如: LDAB A, X ;B=X+ALDAA D, X ;A=X+DLDAA D,X ;将XD

6、地址单元中的值作;为指针,指向的内存单元的内容加载到累加器A其中A和D中的偏移量均为无符号数。,带自动加减的5位偏移量间接寻址,有“先加、先减、后加、后减”四种方式。范围为 寄存器的值加、减1到8。 基址寄存器可以是X,Y,SP。 主要用于数据块复制。如: MOVW 2, X+, 4, +Y;执行该指令,将X开始单元的两个单元内容(一个字)传送到Y+4开始的两个单元,传送完成后X内容加2。 注:5位偏移量最高位是符号位。思考: LDAA 8,-X LDAA 8,+SPLDAA 3,SP- LDAA 5,Y+,常量的表示,十进制:100,255 十六进制:$55、$1234 八进制:77,100

7、0 二进制:%01010101 字符串: jkl”990、”ADDX008” 立即数:#,3-2 指令系统,指令系统,数据传输(加载寄存器、传送到内存、内存之间的传输、寄存器间的传输、数据交换、加载有效地址、堆栈操作)指令 数学运算(加减乘除、十进制调整、最值等)指令 逻辑运算(移位、求补、取反等)指令 比较测试指令 条件转移、无条件转移、循环指令 查表插值指令 模糊运算指令 系统控制指令(中断、调用、返回等),数据传输指令1,LOAD指令指从内存到寄存器数据传送LOAD指令源操作数共支持8种寻址方式:IMM、DIR、EXT、IDX、IDX1、IDX2、D,IDX、IDX2。LOAD指令影响标

8、志寄存器CCR的N、Z、V标志。 LDAA:(M) A LDAB: (M) BLDD:(M : M+1) A : B LDS:(M : M+1) SP LDX:(M : M+1) X LDY:(M : M+1) Y 如:LDAA #$55 ;将 立即数$55加载到ALDX $2000 ;将$2000和$2001单元数据加载到X,数据传输指令2,STORE指令指从寄存器到内存数据传送操作不改变累加器或寄存器的值。源操作数为A、B、D、X、Y或SP。目的操作数共支持7种寻址方式:DIR、EXT、IDX、IDX1、IDX2、D,IDX、IDX2。STORE指令影响标志寄存器CCR的N、Z、V标志。

9、STAA:(A) M STAB:(B) M STD:(A : B) M : M + 1 STS:(SPH : SPL) M : M + 1 STX:(XH : XL) M : M + 1 STY: (YH : YL) M : M + 1 如:STAA $1000 ;将A的内容存到$1000单元 STY $2000 ;将Y的内容存到$2000和$2001单元,数据传输指令3,MOVE指令指从内存到内存数据传送共支持六种寻址方式:IMMEXT,IMMIDX,EXTEXT,EXTIDX,IDXEXT和IDXIDX。MOVE指令不影响程序状态寄存器CCR。 MOVB:(M1) M2 MOVW:(M1:

10、M11) M2:M21 如:MOVB $2000,X ;将$2000单元内容存到X内容指向单元MOVW 2,X+,4,Y+;将X和X+1内容指向单元存到Y和Y+1指向单元,数据传输指令4,TRANSFER传送指令指从寄存器到寄存器数据传送:当目的寄存器是CCR时,X位将保持原来的状态或被清0,其余的位变为源操作数中对应的位的值。 TAB:(A) B TBA:(B) A TFR:(A、B、CCR、D、X、Y、SP) A、B、CCR、D、X、Y、SP TAP:(A) CCR 等同TFR A,CCR TPA:(CCR) A 等同TFR CCR,A TSX:(SP) X 等同TFR SP,X TSY:

11、(SP) Y 等同TFR SP,Y TXS:(X) SP 等同TFR X,SP TYS:(Y) SP 等同TFR Y,SP 如: 若累加器A中的数据为$55执行TAB指令后,累加器B中的数据为$55。,数据传输指令5,EXCHANGE交换指令指寄存器的数据与寄存器数据交换: EXG:(A、B、CCR、D、X、Y、SP)(A、B、CCR、D、X、Y、SP) 例如:EXG A,B ;将A与B的内容相交换EXG B,X ;将X的低8位B,$FF:BX, EXG X,A ;将$00:AX,X的低8位A XGDX:(D)(X) 等同EXG D,X XGDY:(D)(Y) 等同EXG D,Y SEX:将8

12、位寄存器的内容进行符号扩展后送入16位寄存器 如: 若A中数据为$55,B中数据为$aa执行EXG A,B 后,A中数据为$aa,B中数据为$55。SEX A,D ;将A的内容存放到B,如果A的最高位是 1,则操作后A的内容变为 $FF,如果是0,则操作后A的内容变为$00,数据传输指令6,LEA有效地址加载指令:将各种寻址模式的有效地址加载到累加器X、Y、SP 。该类指令支持的寻址方式是IDX、IDX1、IDX2。 LEAS :将有效地址加载到堆栈指针寄存器SP 例如:LDY #$2000LEAS 4,Y;SP的值为$2000,然后Y的值加,Y的值变为$2004 LEAX :将有效地址加载到

13、变址寄存器X 例如: LEAX D,Y ;将Y的内容加上D的内容加载到X寄存器 LEAY :将有效地址加载到变址寄存器Y 例如:LEAY B,X ;将X的内容加上B的内容加载到Y寄存器,数据传输指令7,堆栈操作指令: 单字节压栈出栈 PSHA、PSHB、PSHCPULA、PULB、PULC 如PSHA指SP减一,A数据传送到SP指向单元PULA指SP指向单元数据传送到A,SP加一 双字节压栈出栈 PSHD、PSHX、PSHYPULD、PULX、PULY如PSHD指SP减二,D数据高位(A)传送到SP指向单元,低位(B)传送到SP+1指向单元。PULD指SP指向单元数据传送到D高位(A),SP+

14、1指向单元数据传送到低位(B), SP加二。,数据传输指令举例,;+加载/存储+LDAA #$55 ;A累加器加载$55STAA $480 ;把A的内容存到内存$480LDAB $480 ;$480内容加载到BINCB ;B内容自加1STD $485 ;D内容送$485;+传送交换指令+LDAB #$AA ;立即数$AA送BTAB ;A送BLDAB #$AA ;立即数$AA送BEXG A,B ;A B交换;+MOVE指令+MOVW #$1234,$490;立即数$1234传送到$490和$491单元,数学运算指令1,加法指令ADD: ABA:(A)(B) A ADDA:(A)(M) A ADD

15、B:(B)(M) B ADCA:(A)(M) C A ADCB:(B)(M) C B ABX:(B)(X) X ABY:(B)(Y) Y ADDD:(A:B)(M:M1) A:B 例如:ADDA X;将A的内容加上X单元的内容,结果存在A中ADCA D, X ;将XD内存单元为指针指向的数据加上A的内容加进位位C的值,结果存在A中,数学运算指令2,减法指令SUB: SBA:(A)(B) A SUBA:(A)(M)A SUBB:(B)(M) B SBCA:(A)(M) C A SBCB:(B)(M) C B SUBD:(A:B)(M:M1) A:B 例如:SBCA $1000 ;将A的内容减去$1000地址单元的数据再减去借位位C,结果存在A中SBCA 1,X;将A的内容减去X指向的数据单元的内容再减去借位位C,结果存在A中。然后X自动加1,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号