资源预览内容
第1页 / 共42页
第2页 / 共42页
第3页 / 共42页
第4页 / 共42页
第5页 / 共42页
第6页 / 共42页
第7页 / 共42页
第8页 / 共42页
第9页 / 共42页
第10页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
重庆大学通信工程学院 任勇、王永东,第3 指令系统与汇编语言程序设计,兼容以前的S12 CPU 丰富、强大、灵活,高速16位处理,共400多条 按功能:数据传送、算术运算、逻辑运算、位操作、移位、控制、特殊等, 寻址方式多。,3.1 CPU内部寄存器 区别于I/O寄存器; 6个16bit: D(A+B), X, Y, SP, PC, CCR,重庆大学通信工程学院 任勇、王永东,3.2 寻址方式 概念-CPU执行指令时确定操作数所在单元地址的方式。 操作数来自:寄存器、指令代码、存储单元(都有地址) S12(X)有9大种寻址方式: (1)隐含寻址(INH) 如 ROLA (循环左移,操作数A隐含在指令中) (2)立即数寻址(IMM) 如 LDAA #$FF (将十六进制数FF调入A中,#表示) (3)直接寻址(DIR) 如 LDAA $55 (8位地址) (4)扩展寻址(EXT) 如 LDAA $200A (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)B LDAA $7200,PC ;($7200+PC)A (7)累加器变址寻址(IDX) 累加器内容做偏移量的变址寻址 如 LDAA B,X ;(B+X)A LDAA D,Y ;(D+Y)A (8)自加自减的变址寻址(IDX) 自动加减(18),先加、先减、后加、后减 如 STAA 1,-X ;X-1X,A(X) STAA 1,-SP ;SP-1SP, A(SP) (等效PSHA) LDX 2,SP+ ;(SP)X, SP+2SP (等效PULX) (9)间接变址寻址(IDX) 16位常数/累加器D偏移量的间接变址寻址 (内存中再取新地址) 如 LDAA 1000,X ;(1000+X)A JMP D,PC ;(D+PC)PC,变址寻址-重要而常用,表象:指令操作码后的操作数是X,Y,SP,PC (指针),重庆大学通信工程学院 任勇、王永东,3.3 指令概览 分类(表3-1): 数据传送指令 算数运算指令 逻辑指令 程序控制指令 中断指令 CPU控制指令 其它指令 注: 1、浏览书中指令内容 2、以后编程时再查阅、体会,助记方法:英语含义,如: CLR = CleaR LDAA = LoaD Accumulator A STAB = STore Accumulator B TAB = Transfer A to B MOVB =Move Byte BEQ =Branch EQual zero ,重庆大学通信工程学院 任勇、王永东,2、寄存器存储指令:STore(影响标志位),STAA $3F STD -$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、不影响标志位 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),重庆大学通信工程学院 任勇、王永东,7、有效地址加载指令:LEA (Load Effective Address),LEAX $100A, Y 注:不影响标志位,重庆大学通信工程学院 任勇、王永东,3.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、不对符号位进行判断,重庆大学通信工程学院 任勇、王永东,5、十进制调整指令:DAA (Decimal Adjust A),特点: 1、是在加法操作之后进行 2、是对A进行压缩BCD码加法调整 3、只有这一条调整指令,例: LDD #$3275 ADDB #$69 EXG A,B DAA EXG A,B ADCA #$26 DAA 结果:D = ?,$5944,重庆大学通信工程学院 任勇、王永东,6、符号扩展指令: SEX,说明:1、根据最高位的值将8位扩展为16位 2、源:A,B,CCR 目的:D,X,Y,SP 例:SEX A, X,7、乘、除法指令:MULtiply、DIVide,重庆大学通信工程学院 任勇、王永东,3.3.3 逻辑指令,1、基本逻辑运算指令,2、清零和取反指令: CLear、COMplement,重庆大学通信工程学院 任勇、王永东,3、位操作和位检测指令,BCLR相当与0的位与操作 ( BCLR $20, #$0F ) BSET相当与1的位或操作 ( BSET $20, #$0F ) 注意该类指令与TST、AND的区别- 指定的1位或几位,非整体;BIT影响标志位,但不修改操作数,重庆大学通信工程学院 任勇、王永东,4、移位指令,LSL Logic Shift Left ASR Arithmetic Shift Right ROR ROtate Right,重庆大学通信工程学院 任勇、王永东,特点:1、ASR补最高位,其余补0 2、移出去的进C标志,重庆大学通信工程学院 任勇、王永东,3.3.4 程序控制类指令,1、无条件转移指令 JMP (Jump),可以在64K范围内跳转 2、短分支跳转指令 是在当前PC的值加上一个8位带符号数的偏移量,即跳转范围:128127 BRA 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 BHI Branch if Higher BHS Branch if Higher or Same BLO Branch if Lower BGT Branch if Greater Than,重庆大学通信工程学院 任勇、王永东,注意: 1、只作检测,满足条件转移,不影响标志位 2、结果不回传 例:BRCLR $20, #$81, LP1 BRSET $20, #$80, LP2,重庆大学通信工程学院 任勇、王永东,3、长分支跳转指令,特点:1、是在当前PC的值加上一个16位带符号数的偏移量,即跳转范围:32768 32767 2、与JMP指令实现的方法稍有不同,只能跳转32K距离。 3、与短跳转指令完全类似,重庆大学通信工程学院 任勇、王永东,4、循环控制指令,特点:1、不影响、不依赖标志位 2、转移范围是 256 255,ADD: LDX #$0B00 LEAY 4, X LDAB #4 CLC LOOP: LDAA X ADCA 1,Y+ STAA 1,X+ DBNE B, LOOP,重庆大学通信工程学院 任勇、王永东,5、子程序调用与返回指令,特点: 1、BSR 调用范围为128127,子程序以RTS指令返回 2、JSR调用范围为3276832767,支持多种寻址方式,直接寻址方式必须在$0000$00FF内 (例: JSR $50 ),子程序以RTS指令返回 3、CALL 用于调用64K以外的子程序,子程序以RTC指令返回,重庆大学通信工程学院 任勇、王永东,3.3.5 中断指令,特点: 1、进入中断时,硬件自动保护现场,RTI指令将恢复现场及断点 2、SWI指令不受I、X的限制,且执行时会自动将I置1(即自动关闭可屏蔽中断),中断向量表入口地址$FFF6-$FFF7 3、各硬件中断有固定的入口地址表,中断服务程序需用RTI指令返回,重庆大学通信工程学院 任勇、王永东,3.3.6 S12CPU控制类指令,特点: 1、STOP进入伪停机模式,时钟被关闭,功耗最低;当有中断或复位时被唤醒 2、WAI 进入等待模式,时钟仍在工作,当有中断或复位时被唤醒,唤醒速度快,重庆大学通信工程学院 任勇、王永东,3.3.7 其它指令 S12X还提供了高级函数指令和模糊运算指令,主要有:小值、大值、插值、乘积累加等 重要的其它指令-程序状态寄存器指令 特殊的数据访问指令,通常被用来改变程序状态寄存器CCR,重庆大学通信工程学院 任勇、王永东,S12X指令系统提供了全局23位地址访问的指令,包括: GLDAA、GLDAB、GLDD、GLDS、GLDX、GLDY、GSTAA、GSTAB、GSTD、GSTS、GSTX、GSTY等, S12X总共新增了84条这类全局寻址指令。 全局地址22:0由CPU本地地址15:0和GPAGE寄存器22:16联合组成。,重庆大学通信工程学院 任勇、王永东,3.4 使用汇编语言的程序设计 程序:完成特定任务的指令的集合 程序设计语言:机器语言(二进制指令代码,可直接执行) 汇编语言(特定助记符指令语句,须编译) 高级语言(通用高级语句,须编译) 单片机应用系统的程序,多用汇编语言编制(*.asm文件)或C 一个汇编程序语句一条单片机指令 多个汇编语言语句汇编语言程序(源代码) 注:程序需要特定的编译程序进行编译,生成二进制机器码 汇编语言: 面向MCU硬件,不易移植,但高效、代码量小,是学习基础,重庆大学通信工程学院 任勇、王永东,汇编语言指令格式 标号: 操作码 操作数1 ,操作数2 ;注释 标号-该指令的符号地址,标定程序入口或转移位置 注:标号必须以字母开始,分大小写 操作码-助记符,指令所实现的操作功能 注:不分大小写;前面无标号时,至少应保留一个空格;必有 操作数-参加操作的数据对象,地址、常数或表达式 注:寄存器寻址已归纳到隐含寻址中,当操作数部分出现寄存器时,通常是寄存器变址寻址;分大小写 注释-为方便阅读、修改而加的注释;可有可无 注:以“;”开始,本行其后的内容不再编译 注意:必须在英文输入法或中文半角字符模式下书写指令,全角字
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号