- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
江苏理工学院
4、循环控制指令
特点:1、不影响、不依赖标志位 2、转移范围是 -256 ~ +255
ADD: LDX LEAY LDAB CLC LOOP: LDAA ADCA STAA DBNE
#$0B00 4, X #4 X 1,Y+ 1,X+ B, LOOP
江苏理工学院
5、子程序调用与返回指令
重要的其它指令---程序状态寄存器指令 特殊的数据访问指令,通常被用来改变程序状态寄存器CCR
指令 ANDCC CLC CLI CLV ORCC PSHC PULC SEC SEI SEV 操作 (CCR)∧(M)= →CCR C=0 I=0 V=0 (CCR)∨(M) →CCR (SP)–1=>SP; (CCR) →M(SP) M(SP) =>CCR; (SP)+1→SP C=1 I=1 V=1 寻址方式 IMM IMM IMM IMM IMM INH INH IMM IMM IMM
……
注: 1、浏览书中指令内容 2、以后编程时再查阅、体会
江苏理工学院
3.3.1 数据传送类指令 1、寄存器加载指令: LoaD
助记符 LDAA LDAB LDD LDS LDX LDY 将数据载入寄存器B 将数据载入寄存器D 将数据载入寄存器SP 将数据载入变址寄存器X 将数据载入变址寄存器Y 功能 将数据载入寄存器A
变址寻址---重要而常用,表象:指令操作码后的操作数是X,Y,SP,PC (指针)
江苏理工学院
3.3 指令概览
分类(表3-1): 数据传送指令 算数运算指令 逻辑指令 程序控制指令 中断指令 CPU控制指令 其它指令
助记方法:英语含义,如:
CLR = CleaR LDAA = LoaD Accumulator A STAB TAB MOVB BEQ = STore Accumulator B = Transfer A to B =Move Byte =Branch EQual zero
• STAA $3F • STD -$2000,PC • STY 2,+SP
江苏理工学院
3、寄存器传送指令: Transfer
助记符 TAB TBA 功能 将寄存器A中内容送入寄存器B 将寄存器B中内容送人寄存器A (A)→B (B)→A 操作
TFR
TSX TSY TXS TYS TPA TAP
寄存器之间的数据传送
江苏理工学院
6、堆栈操作指令:PuSH、PULl
特点: 1、各寄存器都可以入栈、出栈 2、可以做8位、16位操作 3、入栈时SP-1(2),出栈时SP+1(2)
江苏理工学院
7、有效地址加载指令:LEA (Load Effective Address)
• LEAX $100A, Y
注:不影响标志位
(注:影响标志位)
操作 (M)→A (M)→B (M:M+1)→(A:B) (M:M+1)→SPH:SPL (M:M+1)→XH:XL (M:M+1)→YH:YL
LDAA #$1F LDAB $40B0 LDD 2,X LDY 2,SP+
江苏理工学院
2、寄存器存储指令:STore(影响标志位)
助记符 STAA STAB STD STS STX STY 功能 将寄存器A中内容送入内存单元 将寄存器B中内容送人内存单元 将寄存器D中内容送入内存单元 将堆栈SP中内容送入内存单元 将变址寄存器x中内容送人内存单元 将变址寄存器Y中内容送入内存单元 (A)→M (B)→M (A)→M, (B)→M+1 (SPH:SPL)→M:M+1 (XH:XL)→M:M+1 (YH:YL)→M:M+1 操作
特点: 1、BSR 调用范围为-128~+127 2、JSR调用范围为-32768~+32767,支持多种寻址方式,直接寻址方式 必须在$0000~$00FF内 (例: JSR $50 ) 3、CALL 用于调用64K以外的子程序,用RTC指令返回
江苏理工学院
3.3.5 中断指令
• 特点: 1、进入中断时,硬件自动保护现场,RTI指 令将恢复现场及断点 2、SWI指令不受I、X的限制,且执行时会 自动将I置1(即自动关闭可屏蔽中断), 中断向量表入口地址$FFF6-$FFF7 3、各硬件中断有固定的入口地址表,中断 服务程序需用RTI指令返回
• 特点: • 1、CMP 作减法,结果不回传,只影响标志位 • 2、TST 固定减0,结果不回传,只影响标志位
江苏理工学院
4、求补运算指令:
• 特点: • 1、用0去减该值 • 2、不对符号位进行判断
江苏理工学院
5、十进制调整指令:DAA (Decimal Adjust A) • 例: LDD #$3275 • ADDB #$69 • EXG A,B • DAA • EXG A,B • ADCA #$26 • DAA • 结果:D = ?
江苏理工学院
注意:
• 1、只作检测,满足条件转移,不影响标志位 • 2、结果不回传 • 例:BRCLR $20, #$81, LP1 • BRSET $20, #$80, LP2
江苏理工学院
3、长分支跳转指令
特点:1、是在当前PC的值加上一个16位带符号数的偏移量,即跳转范围:- 32768 ~ +32767 2、与JMP指令实现的方法稍有不同,只能跳转32K距离。 3、与短跳转指令完全类似
第3 指令系统与汇编语言程序设计
兼容以前的S12 CPU 丰富、强大、灵活,高速16位处理,共400多条 按功能:数据传送、算术运算、逻辑运算、位操作、移位、控制、特殊等, 寻址方式多。
8 位累加器 A 8 位累加器 B
0 7 0 0 0 0 0 0 S X H I N Z V C
3.1 CPU内部寄存器 区别于I/O寄存器; 6个: D,X,Y,SP,PC,CCR
江苏理工学院
3.3.6 S12CPU控制类指令
• 特点: 1、STOP进入伪停机模式,时钟被关闭,功耗最低;当有中 断或复位时被唤醒 2、WAቤተ መጻሕፍቲ ባይዱ 进入等待模式,时钟仍在工作,当有中断或复位时 被唤醒,唤醒速度快
江苏理工学院
3.3.7 其它指令 S12X还提供了高级函数指令和模糊运算指令,主要有:小值、 大值、插值、乘积累加等
7 15 15 15 15 15
8 位累加器 A、 B 16 位累加器 D 变址寄存器 X 变址寄存器 Y 堆栈指针 SP 程序计数器 PC 条件码寄存器 CCR 进位 /借位标志 C 溢出标志 V 零标志 Z 负标志 N 中断屏蔽位 I 半进位标志 H 非屏蔽中断允许位 X 停止 (STOP)模式禁止位 S
4、寄存器交换指令: Exchange
建议:平常使用时,不应使用位数不匹配的方式进行数据交换。
江苏理工学院
5、内存数据传送指令:Move
特点: 1、不影响标志位 2、允许地址与地址间传送 3、传送方向是 -> (例 MOVB $1000, $2000 ) 4、16位数据结构是高位在前,低位在后 ( 例: MOVW #$100A, $1100 ) MOVB 1,X,2,Y
BSET
位置1
(M)|(mm)→M
• BCLR相当于:1.取反然后 2.与0的位与操作 ( BCLR $20, #$F0 ) • 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范围内跳转
江苏理工学院
3.3.2 算术运算类指令
1、加、减法指令:ADD、SUBtract • 说明:ABA Add B to A SBA Subtract B from A (A+B) (A–B)
江苏理工学院
2、增量、减量指令: INCrement 、DECrement
江苏理工学院
3、比较、检测指令:CoMPara、TeST
将寄存器SP中内容送入寄存器X 将寄存器SP中内容送入寄存器Y 将寄存器X中内容送入寄存器SP 将寄存器Y中内容送入寄存器SP 将寄存器CCR中内容送人寄存器A 将寄存器A中内容送人寄存器CCR
(A、B、CCR、D、X、Y、SP) →A、B、CCR、D、X、Y、SP
(SP)→X (SP)→Y (X)→SP (Y)→SP (CCR)→A (A)→CCR
江苏理工学院
3.3.3 逻辑指令
1、基本逻辑运算指令
2、清零和取反指令: CLear、COMplement
江苏理工学院
3、位操作和位检测指令
助记符 BCLR BITA BITB 功能 位清零 寄存器A与内存按位相“与” 寄存器A与内存按位相“与” 操作 (M)&(/mm)→M (A) & (M) (B) & (M)
• 注意:TAB、TBA影响标志位,TFR不 影响标志位; • 实际只有上述3条指令,其余写法是为 了兼容老版本MCU • 8位到16位:通过符号位扩展后传送 • 16位到8位:舍弃高8位,只传送低8位
• • • •
例: TAB TFR A, Y TAP ( 相当于 TFR A, CCR)
江苏理工学院
特点: • 1、是在加法操作之后进行 • 2、是对A进行压缩BCD码 加法调整 • 3、只有这一条调整指令
$5944
江苏理工学院
6、符号扩展指令: SEX 说明:1、根据最高位的值将8位扩展为16位 2、源:A,B,CCR 目的:D,X,Y,SP 例:SEX A, X 7、乘、除法指令:MULtiply、DIVide
2、短分支跳转指令 是在当前PC的值加上一个8位带符号数的偏移量,即 跳转范围:-128~+127
• • • • • • • • • • • BRA BRN BCC BCS BEQ BMI BPL BHI BHS BLO BGT BRanch Always BRanch Never Branch if Carry Clear Branch if Carry Set Branch if EQual Branch if Minus Branch if Plus Branch if Higher Branch if Higher or Same Branch if Lower Branch if Greater Than
江苏理工学院
3.2 寻址方式
概念---CPU执行指令时确定操作数所在单元地址的方式。 操作数来自:寄存器、指令代码、存储单元(都有地址)
S12(X)有9大种寻址方式:
(1)隐含寻址(INH) 如 ROLA (循环左移,操作数A隐含在指令中) (2)立即数寻址(IMM) 如 LDDA #$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) 自动加减(1~8),先加、先减、后加、后减 如 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