版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第3章章 S12指令系统指令系统3.1 指令系统简介 丰富、强大、灵活,16位处理,共400多条。与硬件系统对应。 按功能分类: 数据传送、算术运算、逻辑运算、位操作、 移位、控制、特殊。 寻址方式多。3.1.1 S12CPU的内部寄存器 特点:n默认地址空间: $0000$03FF(1K),实际使用512Bn除一般数据读/写外,还可直接移位、置位、清零、位测试等复杂操作n数据传送速度较RAM快S12XCPU寄存器 n累加器D 16位=累加器A(高8位)+累加器B(低8位)。 常用于数据处理。n 变址寄存器X、Y 各16位,常用于寻址操作。n 堆栈指针寄存器SP( 16位) 指向堆栈区的顶部
2、 。 自动处理中断、子程序返回地址。 参数传递,零时保存数据。初始化。n 程序计数器PC 16位,程序运行的地址指向下一条将 要执行的指令,可读,不可写 。 取指令后自动增加。 n 程序状态寄存器CCR 8位 复位默认值:1101 0000BBit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0SXHINZVCn S-STOP指令禁止位。复位1,1:禁止CPU执行STOPn X-非屏蔽中断屏蔽位。复位1:屏蔽来自XIRQ引脚的中断请求n H-辅助进位。BCD操作时累加器A的低4位的进位n I-中断屏蔽位。复位1,1:屏蔽所有可屏蔽中断源nN-符号位。当指令运算结果为负时置1nZ-0标
3、志位。当指令运算结果为0时置1nV-补码溢出标志位。当指令运算结果出现补码溢出时置1nC-进位标志。当加法运算结果产生进位(减法借位)时置14.2 寻址方式 寻址:寻找操作数地址的过程。有效地址(effective address):操作数所在的地址。寻址方式:通过确定操作数所在的地址,提取操作数的方法。 S12有7大种寻址方式:一. 隐含寻址(INH) - 特点单字节指令 如 ROLA ;循环左移,操作数A隐含在指令中 EDIV ;助记符中无寄存器名称出现 INCA ;加一,操作数A隐含在指令中 有效地址包含在操作码中,操作数是CPU的寄存器。 操作码 指令 操作 1 87 CLRA $00
4、A 2 67 CLRB $00Bn立即寻址:指令的操作数是一个8位或16位二进制数;n指令中出现的操作数称为立即数;n立即寻址常用来给寄存器赋值;二. 立即数寻址(IMM)如 LDDA #$FF (将十六进制数FF调入A中,#表示立即数) 机器码 指令 操作 1 86 0D LDAA#13 ; $0DA 2 CF 02FE LDS#$02FF ; $02FFSP 3 CE 12 34 LDX#$1234; $1234X 4 CD 00 67 LDY#$67 ; $0067Y 5 8A 0B ORAA#%00001011 ; (A)$0BA 三. 直接寻址(DIR)- zero page add
5、ressing 地址范围:$00 TO $FF = $0000 TO %00FF; CUP 自动添加高8位为$00. 特点:指令短、速度快。 机器码 指令 操作 96 55 LDAA $55 ;($0055)A DC 20 LDX $20 ;($0020:$0021)X四. 扩展寻址(EXT) 如 LDAA $F03B (16位地址) LDAA #$F03B ? 机器码 指令 操作:($0040)A 86 40 LDAA $40 ;直接寻址 B6 00 40 LDAA $0040 ;使用扩展寻址五. 相对寻址(REL) SHIFT: LDAA #$55 BRA SHIFT (相对地址跳转) 2
6、0 FE TRAP: BRA TRAP ;PC-2PC 程序利用转移指令返回到指令首址,程序在该行落入陷阱,称为“原地踏步”。这是一种终止程序的普通方法,广泛用于程序调试。nn六.变址寻址 以某个寄存器的内容为基本地址,然后在这个基本地址上加上地址偏移量,形成操作数地址或存放操作数地址的地址,并将这个地址单元的内容作为指令的操作数。1.变址方式一般形成过程: 操作数地址= 偏移量 + 寄存器的内容 (16位)2.偏移量定义范围: 3 位正数 1 - 8 ; 不含0 5 位数 -16 - 15 9 位数 -256 - 255 16位数 -32768 - 32767 累加寄存器内容A、B、D作为偏
7、移量3.寄存器定义范围: X 、Y、SP 、PC : 5、9、16累加器的偏移量 X、Y、SP : 3 位正数 1 - 8 3.1 操作数地址 = 偏移量 + a ) 类寄存器集合 地址 指令 操作数C008 LDDA 1 , X ; 2字节 5位偏移量C00A LDDA 15 , X ;2字节 5位偏移量C00C LDAA 255 , X ;3字节 9位偏移量C00F LDAA 0 , X ;2 5位偏移量C011 LDAA 32767 , X ;4 16位偏移量C015 LDAA A , X ;2 累加器偏移量 C017 - 偏移量在指令中 IDX , 2字节指令。 偏移量多1个字节 ID
8、X1, 3字节指令。 偏移量多2个字节 IDX2, 4字节指令。 LDAA , X ;无偏移量 , 指令为2B IDX ,等效指令 LDAA 0, X ;无偏移量 , 指令为2B IDX ,等效指令 LDAA X ;无偏移量 , 指令为2B IDX ,等效指令 LDDA 7 , X ; 偏移量 = 5位 ,2B IDX LDAA -150 , X ; 偏移量 = 9位 ,3B IDX1 LDAA 10000, X ; 偏移量 = 16位 ,4B IDX2v语法: operation , r ;无偏移 operation 0 , r ;无偏移 operation n , r ;正常数偏移量 op
9、eration -n, r ;负常数偏移量 r是变址寄存器(IX,IY,SP,PC),n/-n是带符号偏移量(5位、9位、16位)。 3.2 操作数地址 = 偏移量 + b)类寄存器集合 带指针自动调整功能的变址寻址(IDX) 调整范围在1- 8正数 ,寄存器:X、Y、S 。 MOVW 2, X+ , 4 ,+Y STAA 1 , -SP STX 2 , -SP LDX 2 , SP+ LDAA 1 , SP+ 问题:下列指令属于哪一类偏移量? LDAA 3 ,X ; LDAA 3 ,X+ ; 5位偏移量 -16 - 15 ; 3位 1-8偏移量4. IDX 类变址寻址方法总结: 偏移量或偏移
10、量寄存器隐含在指令中,共有3种对应变址方法:n 偏移量1 8正数, xyp 和 1 8 正数 ,xyp 。 INST oprx3 ,- xys INST oprx3 , +xys INST oprx3 , xys- INST oprx3 , xys+n 5位偏移量 -16 - 15 , 变址寄存器xysp INST oprx5 , xyspn 寄存器偏移量A,B,D ,变址寄存器 xysp INST abd ,xysp注:FREESCALE资料中,上述偏移量统一表示为oprx0_xysp 5.间接指针寻址INST OPRX16,XYSPn间接16位常数偏移量变址寻址 IDX2例:设指令执行前X
11、 = $1000,($100A) = $20,($100B) = $00,($2000) = $3A,($2001) = $1F。比较以下两条指令的执行情况: LDAA $0A,X ;(X)+$0A)A ( X) + $0A = $1000 + $0A = $100A ($100A) = $20 A = $20 LDAA $0A,X ;(X)+$0A)A ( X) + $0A = $1000 + $0A = $100A ($100A) = $2000 ($2000) = $3A A= $3AINST D,XYSPn间接D变址寻址 D、IDX偏移量范围从-32768到+32767 INC $10
12、00 ;EXT INC 3,X+ ;IDX 1 - 8 INC 3,X ;IDX -16 - 15 INC D,X ;IDX INC 255 ,X ;IDX1 INC $1000,X ;IDX2 16偏移量 INC $1000,X ;IDX2 INC D,X ;D,IDX6.内存地址加一指令寻址方法4.3常用基本指令 4.3.1 传输类指令 1.寄存器加载指令 LOADn 功能:将内存数据加载到寄存器n 源操作数内容不变。n 支持寻址方式: IMM 、DIR、EXT、IDX、IDX1、IDX2、IDX2 、D,IDX。 不支持 INH 、REL 寻址。n 对CCR 影响: V =0, N ,Z
13、 ,与C 无关。 列:LDAA #$01 LDAA $01 LDAA $0001 如果内存 ( 0008)= 8F、(0009) = 00 , LDD $08 寄存器: A = 8F ,B = 00 。n M:M+1 M低地址 , M+1高地址 (M)( M+1)寄存器加载指令列表寄存器加载指令列表 STX Y ;X写入Y指向数据地址 STX , Y ;等同上一条命令 STAB, ; STD$2000 ;2000 (A) 2001=(B) ;地址向高地址发展。寄存器存储指令STOREn功能:累加器或寄存器内容写入内存单元。 源操作数不发生变化。n源操作数 A、B、D、X、Y、SPn寻址方式:
14、DIR、EXT、 IDX、IDX1、IDX2 、 IDX2 、 D,IDX nCCR: N ,Z,V=0 ,与C无关寄存器存储指令列表寄存器存储指令列表3.寄存器传送指令寄存器传送指令 (TAB TBA TFR 以外指令是以外指令是8位机兼容指令位机兼容指令)16位寄存器内容传到位寄存器内容传到8位时,位时, 低低8位内容装入位内容装入8位寄存器;位寄存器;8位寄存器内容传到位寄存器内容传到16位时,位时, 8位寄存器内容装入低位寄存器内容装入低8位,位, 并符号扩展并符号扩展 寄存器传送指令特点:寄存器传送指令特点:n 传到传到CCR ,X不会发生不会发生0 到到 1 变化,即不能置位;变化
15、,即不能置位;n TFR指令(除传到指令(除传到CCR以外)不会影响以外)不会影响CCR的标志。的标志。n 注意:注意:TAB TBA 对对CCR影响同影响同LOAD ,STORE。n 所有指令在编译后,所有指令在编译后, 实际上隐含寻址方式。实际上隐含寻址方式。 列:列: TFR A , Y ; A=$0F , Y = $000F TFR X , B ; X=$0FEE , B = $EE TFR A , CCR 4.寄存器交换指令寄存器交换指令 EXG nEXG A/B/CC R , X/Y/SP ; 8位与位与16位交换位交换 X = $00:A/B/CCRnEXG X/Y/SP , A
16、/B/CCR ; 16位与位与8位交换位交换 X = $00:A ;X = $FF : B/CCRn 源寄存器不同,结果不同!源寄存器不同,结果不同!n对对CCR没有影响没有影响 。EXG A,BEXG X,YEXG B,XEXG X,BEXG X,A注意:注意:EXG 编译后是隐含寻址方式。建议一般不使用不编译后是隐含寻址方式。建议一般不使用不匹配长度寄存器之间的交换指令匹配长度寄存器之间的交换指令5.内存数据传送指令内存数据传送指令n功能:功能:内存到内存内存到内存的数据传送。源操作数内容不变化。的数据传送。源操作数内容不变化。n支持寻址方式:支持寻址方式:IMM -EXT ,IMM -I
17、DX ,EXT-EXT EXT - IDX , IDX-EXT , IDX-IDXn不影响标志位不影响标志位;唯一不与寄存器发生关系的传送指令;唯一不与寄存器发生关系的传送指令;nIMM 寻址可以用于初始化内存块;寻址可以用于初始化内存块;列:列:MOVB $2000 , X MOVB $80 , 8 , Y ;(Y+8)=($0080) MOVW #$1234 ,1,Y+ ;(Y) = $12 , (Y+1)=$34 MOVW 2,X+ , 4,Y+ ; (Y)=(X),(Y+1)=(X+1) MOVB #12 , $0001 ; 6.堆栈操作指令进堆栈先减,再存储数据;出堆栈先保存数据,再
18、加进堆栈先减,再存储数据;出堆栈先保存数据,再加。PSHX = STX 2,-SPPULX = LDX 2,SP+n堆栈操着指令堆栈操着指令寻址方式寻址方式SP 间接寻址。间接寻址。不影响不影响CCR,除除CCR相关弹出指令外。相关弹出指令外。隐含寻址。隐含寻址。 用途:参数传递。用途:参数传递。一种数据结构。一种数据结构。特点:1、各寄存器都可以入栈、出栈2、可以做8位、16位操作3、入栈时SP-1(2),出栈时SP+1(2)CPS $1000DES INSLDS $2000LEAS 4, XSTS , XTSX TSYTXSTYSn堆栈指针指令堆栈指针指令7.有效地址加载指令n功能:将寻址
19、模式的有效地址加载到寄存器功能:将寻址模式的有效地址加载到寄存器n特点:不影响特点:不影响 CCRn支持寻址方式:支持寻址方式: IDX IDX1 IDX2,不支持间址方式不支持间址方式列:列:LDY #$2000 LEAS 4,Y+ ; SP=$2000, Y=2004 LDS 4,Y+ ; SP = (Y) LEAX B,Y ; X = B+Y LDX B,Y ; X = (B+X) 4.3.2运算类指令特点特点:所有加减指令结果都存放在寄存器所有加减指令结果都存放在寄存器R R 的加减法,寻址方式的隐含,没有带借进位的加减法,寻址方式的隐含,没有带借进位. ABX 和和 ABY 不影响不
20、影响CCR.ABX = LEAX B , X ; ABY = LEAY B , XR-M 加减法寻址方法8种:IMM、DIR、EXT、IDX、IDX1、IDX2、IDX2 、D,IDX 2.加减加减1指令指令特点特点1:不影响借进位。方便循环控制:不影响借进位。方便循环控制特点特点2:对寄存器对寄存器 X、Y的增减,仅影响的增减,仅影响Z位位其它指令影响其它指令影响 :N,Z,VINS ,DES 指令指令 不影响不影响 CCR 特点特点3:SP的操作编译自动转变位的操作编译自动转变位LEAS指令指令列:列: INS - LEAS 1, SP对A、B、X、Y寄存器操作,效率高,指令仅1字节长3.
21、比较测试指令比较测试指令特点:比较指令对同等长度的数据进行比较;特点:比较指令对同等长度的数据进行比较; 不改变操作数的内容。不改变操作数的内容。寻址:寻址:IMM、DIR、EXT、IDX、IDX1、IDX2、IDX2 、D,IDX A,B 比较隐含寻址比较隐含寻址 影响:影响: C、V、N、Z 列:列: CMPA #$30 , CPD 5,Y n测试指令用于测试内存、寄存器是否为测试指令用于测试内存、寄存器是否为$00;n不改变操作数的内容不改变操作数的内容,测试单位是字节;测试单位是字节;n V ,C位始终清零;影响位始终清零;影响 N ,Z;n寻址:寻址:EXT、IDX、IDX1、IDX
22、2、IDX2 、D,IDX n无:无: IMM . DIR 列: TST $1000 4.求补运算指令求补运算指令n功能:求出寄存器或内存单元的补码值;功能:求出寄存器或内存单元的补码值;n支持:支持:EXT、IDX、IDX1、IDX2、IDX2 、D,IDXnCCR: N、Z、V、Cn对内存操作是按字节长度操作对内存操作是按字节长度操作问题:问题: LDAA #$80 NEGA 答案:答案: A=$80 v=1 对于一位十进制加法,每位数变化范围对于一位十进制加法,每位数变化范围09 。 对应的加法结果是对应的加法结果是0到到18。 BCD码:用码:用4位二进制码表示一位十进制数位二进制码表
23、示一位十进制数 比如:比如: %0100 - 4 , %1000 -8 对于两个对于两个 0110 0000 0000 0000 0.0110 0000 0000 0000- 1/4 +1/8 = 0.375注意:是无符号数的除法!注意:是无符号数的除法!例例:分别用无符号和有符号乘法指令计算分别用无符号和有符号乘法指令计算$8000 $4000LDD#$8000 ;32768LDY#$4000 ;16384EMUL ;Y=$2000,D=$0000,按无符号数运算,按无符号数运算 32768 16384=536870912=$20000000LDD#$8000 ;-32768LDY#$400
24、0 ;+16384EMULS ;Y=$E000,D=$0000,按有符号数运算,按有符号数运算 -32768 16384=-536870912=$E0000000 EMUL和EMULS指令的区别在于,EMULS指令的结果用补码表示【例】计算$4000$407F单元所有字节数据的平方,并把计算结果存放在$4080开始的单元中,按字方式存储。ORG$8000MAIN: LDS #$0800;定义堆栈 LDX#$4000;初始化数据块指针 LDY#$4080;LOOP1: JSR SQUARE;求平方循环 INX;指向下一个数据 CPX #$4080;所有数据的平方是否计算完毕? BNELOOP1;
25、未完,循环HERE: BRAHERE;原地踏步SQUARE : LDAA$00, X;(X)A,取1个数据 TAB;(A) B MUL;计算数据的平方 STD $02, Y+;保存结果 RTS4.3.3逻辑指令逻辑指令寄存器CCR只有立即数寻址方式且无异或操作特点:特点:A、B、CCR 、X、Y与与 立即数、或内存逻辑操立即数、或内存逻辑操作,结构放于作,结构放于寄存器;寄存器;用途:寄存器清零某位或置位某位用途:寄存器清零某位或置位某位,测试内存数据。测试内存数据。CCR影响:影响:V=0, 2.清零和取反指令清零和取反指令清零指令执行后,清零指令执行后, CCR : Z=1, N=0,V=
26、0,C=0取反指令执行后,取反指令执行后, CCR : V=0,C=13.位操作和位检测指令位操作和位检测指令ANDA #opr8BITA #opr8A #opr8 AA #opr8BCLR:将屏蔽码为1的对应位清0,操作对象仅内存;BSET:将屏蔽码为1的对应位置1,操作对象仅内存;列:列:BCLR $2000 , #$81 ;最高最低位清零;最高最低位清零 BSET $55 , #$80 ;最高位置;最高位置 1 TST 、 AND 、BIT 、BCLR BSET 区别:区别:TST 对象内存、寄存器,是否为对象内存、寄存器,是否为0,操作数内容不变,强调数;,操作数内容不变,强调数;AN
27、D 对象内存和寄存器,操作数内容变化;强调位!对象内存和寄存器,操作数内容变化;强调位! BIT 对象内存和寄存器,操作数内容部不变,强调位!对象内存和寄存器,操作数内容部不变,强调位!BCLR、BSET位操作指令位操作指令 对象仅内存对象仅内存 ,操作数内容变化。,操作数内容变化。4.移位指令移位指令n逻辑移位、循环移位:控制操作逻辑移位、循环移位:控制操作n算术移位算术移位 :快速乘法,除法。:快速乘法,除法。协助记忆:n 算术:Arithmeticn 逻辑:Logicn 左:Leftn 右:Rightn 循环:Rotate 算术左移(算术左移(ASL) 逻辑左移(逻辑左移(LSL) 算术
28、右移(算术右移(ASR) 逻辑右移(逻辑右移(LSR) 循环左移(循环左移(ROL) 循环右移(循环右移(ROR)【例】阅读该程序段。程序运行前,($3800)$36。ORG$B000;程序起始地址LDX #$3800;数据地址LDAB0, X;(X)B TFRB, A; ANDA#$0F;屏蔽高8位STAA 1, X;(A) (X)+1=$3801LSRB;右移1次LSRB;LSRB;LSRB;STAB0, X;HERE: BRA HERE;原地踏步程序功能: 将地址$3800存放的压缩BCD码解压缩,存放在$3800:$3801单元中,高位在低地址单元。程序执行后:($3800)$03,(
29、$3801)$06,A$06,B$03。4.3.4 程序控制类指令程序控制类指令1.无条件转移指令无条件转移指令JMP , LBRA ,BRA2.短分支跳转指令短分支跳转指令2.短分支跳转指令短分支跳转指令 功能:在当前功能:在当前PC的值加上一个的值加上一个8位带符号数的偏移量,位带符号数的偏移量,即跳转范围:即跳转范围:128 127 无符号 有符号$88 = 136 , -120CMPA #$88 ;136BHI L1.CMPA #$88 ;-120BGT L2 注意:注意:n 1、只作检测,满足条件转移,不影响标志位、只作检测,满足条件转移,不影响标志位n 2、结果不回传、结果不回传n
30、 例:例:BRCLR $20, #$81, LP1n BRSET $20, #$81, LP2 位条件转移指令位条件转移指令3.长分支跳转指令长分支跳转指令 功能:在当前功能:在当前PC的值加上一个的值加上一个16位带符号数的偏移量,位带符号数的偏移量,即跳转范围:即跳转范围:32768 327674.循环控制指令特点:特点:1、不影响、不依赖标志位、不影响、不依赖标志位 2、转移范围是、转移范围是 256 2554字节数加法程序:字节数加法程序:ADD: LDX #$0B00 ;加数起始地址加数起始地址 LEAY 4, X ;被加数地址;被加数地址 LDAB #4 ; 计数值计数值 CLC ;清进位位;清进位位LOOP: LDAA X ADCA 1,Y+ STAA 1,X+ DBNE B, LOOPADD: LDX #$0B00 LEAY 4, X LDAB #4 CLCLOOP: LDAA X ADCA 1,Y
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年圣诞节装饰协议
- 2025年商业责任不足额保险条款设定
- 二零二五版木屑生物质颗粒燃料研发与推广合同4篇
- 二零二五年度木工行业技术标准制定合作协议3篇
- 二零二五年度汽车抵押贷款购车二手车过户合同
- 二零二五年度科技创业项目股权众筹委托投资合同
- 二零二五年度车辆绿色出行补贴购买合同
- 二零二五年度经典实习合同(法律事务实习)
- 2025年度证券公司内部控制体系建设及风险管理体系优化委托合同
- 二零二五年度金融机构与个人客户协议存款业务合同
- 机电安装工程安全培训
- 洗浴部前台收银员岗位职责
- 2024年辅警考试公基常识300题(附解析)
- GB/T 43650-2024野生动物及其制品DNA物种鉴定技术规程
- 暴发性心肌炎查房
- 工程质保金返还审批单
- 【可行性报告】2023年电动自行车项目可行性研究分析报告
- 五月天歌词全集
- 商品退换货申请表模板
- 实习单位鉴定表(模板)
- 数字媒体应用技术专业调研方案
评论
0/150
提交评论