1、重庆大学通信工程学院 任勇、王永东,第三章 S12指令系统,4.1 指令系统简介丰富、强大、灵活,16位处理,共400多条按功能:数据传送、算术运算、逻辑运算、位操作、移位、控制、特殊等,寻址方式多。,4.1.1 S12CPU的内部寄存器4.1.2 汇编指令组成操作码 和 操作数,重庆大学通信工程学院 任勇、王永东,4.2 寻址方式概念-CPU执行指令时确定操作数所在单元地址的方式。S12有6大种寻址方式: (1)隐含寻址(INH)如 ROLA (循环左移,操作数A隐含在指令中) (2)立即数寻址(IMM)如 LDAA #$FF (将十六进制数FF调入A中,#表示) (3)直接寻址(DIR)如
2、 LDAA $55 (8位地址) (4)扩展寻址(EXT)如 LDAA $F03B (16位地址) (5)相对寻址(REL) SHIFT: LDAA #$55 BRA SHIFT (相对地址跳转),重庆大学通信工程学院 任勇、王永东,(6)变址寻址(IDX)特征:以变址寄存器X、Y、SP、PC的内容为基址,再加或减个值 5位/9位/16位常数偏移量的变址寻址 如 LDD 6,X ;(6+X)D(A), (6+X+1)D(B)LDAB $FF,Y ;($FF+Y)BLDAA $7200,PC ;($7200+PC)A 自动增减的变址寻址如 STAA 1,-SP ;SP-1SP, A(SP) (等
3、效PSHA)LDX 2,SP+ ;(SP)X, SP+2SP (等效PULX) 累加器偏移量的变址寻址如 LDAA B,X ;(B+X)A LDAA D,Y ;(D+Y)A 16位常数/累加器D偏移量的间接变址寻址 (内存中再取新地址)如 LDAA 9,X ;(9+X)A JMP D,PC ;(D+PC)PC,重庆大学通信工程学院 任勇、王永东,4.2 常用基本指令 数据传送指令: LoaD (注意:影响标志位),LDAA #$1FLDAB $40B0LDD 2,X LDY 2,SP+,重庆大学通信工程学院 任勇、王永东,2、寄存器存储指令:STore(影响标志位),STAA $3F STD
4、-$2000,PC STY 2,+SP,重庆大学通信工程学院 任勇、王永东,3、寄存器传送指令: Transfer,注意:TAB、TBA影响标志位,TFR不影响标志位; 实际只有上述3条指令,其余写法是为了兼容老版本MCU 8位到16位:通过符号位扩展后传送 16位到8位:舍弃高8位,只传送低8位,例: TAB TFR A, Y TAP ( 相当于 TFR A, CCR),重庆大学通信工程学院 任勇、王永东,4、寄存器交换指令: Exchange,建议:平常使用时,不应使用位数不匹配的方式进行数据交换。,重庆大学通信工程学院 任勇、王永东,5、内存数据传送指令:Move,特点: 1、不影响标志
5、位 2、允许地址与地址间传送 3、传送方向是 (例 MOVB $1000, $2000 ) 4、16位数据结构是高位在前,低位在后( 例: MOVW #$100A, $1100 )MOVB 1,X 2,Y,重庆大学通信工程学院 任勇、王永东,6、堆栈操作指令:PuSH、PULl,特点: 1、各寄存器都可以入栈、出栈 2、可以做8位、16位操作 3、入栈时SP-1(2),出栈时SP+1(2)注:P53表47包含了所有与堆栈相关的指令,重庆大学通信工程学院 任勇、王永东,7、有效地址加载指令:LEA Load Effective Address,LEAX $100A, Y注:不影响标志位,重庆大学
6、通信工程学院 任勇、王永东,4.3.2 算术运算类指令,1、加、减法指令:ADD、SUBtract说明: ABA Add B to A ( A + B ) SBA Subtract B from A ( A B ),重庆大学通信工程学院 任勇、王永东,2、增量、减量指令 INCrement 、DECrement,重庆大学通信工程学院 任勇、王永东,3、比较、检测指令:CoMPara、TeST,特点: 1、CMP 作减法,结果不回传,只影响标志位 2、TST 固定减0,结果不回传,只影响标志位,重庆大学通信工程学院 任勇、王永东,4、求补运算指令:,特点: 1、用0去减该值 2、不对符号位进行判
7、断,重庆大学通信工程学院 任勇、王永东,5、十进制调整指令:DAA Decimal Adjust A,特点: 1、是在加法操作之后进行 2、是对A进行压缩BCD码加法调整 3、只有这一条调整指令,例: LDD #$3275ADDB #$69EXG A,BDAAEXG A,BADCA #$26DAA 结果:D = ?,$5944,重庆大学通信工程学院 任勇、王永东,6、符号扩展指令: SEX,说明:1、根据最高位的值将8位扩展为16位2、源:A,B,CCR 目的:D,X,Y,SP例:SEX A, X,重庆大学通信工程学院 任勇、王永东,7、乘、除法指令 MULtiply、DIVide,重庆大学通
8、信工程学院 任勇、王永东,4.3.3 逻辑指令,1、基本逻辑运算指令,重庆大学通信工程学院 任勇、王永东,2、清零和取反指令 CLear、COMplement,重庆大学通信工程学院 任勇、王永东,3、位操作和位检测指令,BCLR相当与AND操作 ( BCLR $20, #$0F ) BSET相当与OR操作 ( BSET $20, #$0F ) 注意该指令与TST、AND的区别!,重庆大学通信工程学院 任勇、王永东,4、移位指令,LSL Logic Shift Left ASR Arithmetic Shift Right ROR ROtate Right,重庆大学通信工程学院 任勇、王永东,特
9、点:1、ASR补最高位,其余补02、移出去的进C标志,重庆大学通信工程学院 任勇、王永东,4.3.4 程序控制类指令,1、无条件转移指令:JMP (Jump) 可以在64K范围内跳转,重庆大学通信工程学院 任勇、王永东,2、短分支跳转指令是在当前PC的值加上一个8位带符号数的偏移量,即跳转范围:128127BRA BRanch Always BRN BRanch Never BCC Branch if Carry Clear BCS Branch if Carry Set BEQ Branch if EQual BMI Branch if Minus BPL Branch if Plus BH
10、I Branch if Higher BHS Branch if Higher or Same BLO Branch if Lower BGT Branch if Greater Than,注意: 1、只作检测,满足条件转移,不影响标志位 2、结果不回传 例:BRCLR $20, #$81, LP1BRSET $20, #$80, LP2,重庆大学通信工程学院 任勇、王永东,3、长分支跳转指令,特点:1、 是在当前PC的值加上一个16位带符号数的偏移量,即跳转范围:32768 327672、与JMP指令实现的方法稍有不同,只能跳转32K距离。3、与短跳转指令完全类似,重庆大学通信工程学院 任勇
11、、王永东,4、循环控制指令,特点:1、不影响、不依赖标志位2、转移范围是 256 255,ADD: LDX #$0B00LEAY 4, XLDAB #4CLC LOOP: LDAA XADCA 1,Y+STAA 1,X+DBNE B, LOOP,重庆大学通信工程学院 任勇、王永东,5、子程序调用与返回指令,特点: 1、BSR 调用范围为128127 2、JSR调用范围为3276832767,支持多种寻址方式,直接寻址方式必须在$0000$00FF内 (例: JSR $50 ) 3、CALL 用于调用64K以外的子程序,用RTC指令返回,重庆大学通信工程学院 任勇、王永东,4.3.5 中断指令,
12、特点: 1、进入中断时,硬件自动保护现场,RTI指令将恢复现场及断点 2、SWI指令不受I、X的限制,且执行时会自动将I置1(即自动关闭可屏蔽中断),中断向量表入口地址$FFF6-$FFF7 3、各硬件中断有固定的入口地址表,中断服务程序需用RTI指令返回,重庆大学通信工程学院 任勇、王永东,4.3.6 S12CPU控制类指令,特点: 1、STOP进入伪停机模式,时钟被关闭,功耗最低;当有中断或复位时被唤醒 2、WAI 进入等待模式,时钟仍在工作,当有中断或复位时被唤醒,唤醒速度快,重庆大学通信工程学院 任勇、王永东,4.3.7 其它指令,S12DG128还提供了高级函数指令和模糊运算指令,主要有:小值、大值、插值、乘积累加、模糊运算,重庆大学通信工程学院 任勇、王永东,本章习题:S12指令系统的分类? S12指令系统有几种寻址方式? 变址寻址方式的指令中,作为基址的可以是哪些寄存器? 数据载入寄存器、寄存器数据存入内存、寄存器数据传入寄存器、内存数据移入内存这4类指令对应的助记符的关键字的英文含义是什么? 理解S12CPU的各条指令格式和功能。,