单片机原理及应用:第4章指令系统_第1页
单片机原理及应用:第4章指令系统_第2页
单片机原理及应用:第4章指令系统_第3页
单片机原理及应用:第4章指令系统_第4页
单片机原理及应用:第4章指令系统_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章S12指令系统3.1指令系统简介丰富、强大、灵活,16位处理,共400多条。与硬件系统对应。按功能分类:数据传送、算术运算、逻辑运算、位操作、移位、控制、特殊。寻址方式多。3.1.1S12CPU的内部寄存器

特点:默认地址空间:

$0000~$03FF(1K),实际使用512B除一般数据读/写外,还可直接移位、置位、清零、位测试等复杂操作数据传送速度较RAM快S12XCPU寄存器

累加器D16位=累加器A(高8位)+累加器B(低8位)。常用于数据处理。变址寄存器X、Y

各16位,常用于寻址操作。堆栈指针寄存器SP(16位)指向堆栈区的顶部。

自动处理中断、子程序返回地址。参数传递,零时保存数据。初始化。程序计数器PC16位,程序运行的地址指向下一条将要执行的指令,可读,不可写。取指令后自动增加。

程序状态寄存器CCR8位复位默认值:11010000BBit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0SXHINZVC

S---STOP指令禁止位。复位1,1:禁止CPU执行STOPX---非屏蔽中断屏蔽位。复位1:屏蔽来自XIRQ引脚的中断请求

H---辅助进位。BCD操作时累加器A的低4位的进位

I---中断屏蔽位。复位1,1:屏蔽所有可屏蔽中断源N---符号位。当指令运算结果为负时置1Z---0标志位。当指令运算结果为0时置1V---补码溢出标志位。当指令运算结果出现补码溢出时置1C---进位标志。当加法运算结果产生进位(减法借位)时置14.2寻址方式

寻址:寻找操作数地址的过程。有效地址(effectiveaddress):操作数所在的地址。寻址方式:通过确定操作数所在的地址,提取操作数的方。

S12有7大种寻址方式:一.隐含寻址(INH)-----特点单字节指令

如ROLA;循环左移,操作数A隐含在指令中

EDIV;助记符中无寄存器名称出现

INCA;加一,操作数A隐含在指令中有效地址包含在操作码中,操作数是CPU的寄存器。二.立即数寻址(IMM)

如LDDA#$FF

(将十六进制数FF调入A中,#表示立即数)立即寻址:指令的操作数是一个8位或16位二进制数;指令中出现的操作数称为立即数;立即寻址常用来给寄存器赋值;三.直接寻址(DIR)

如LDAA$55(8位地址)四.扩展寻址(EXT)

如LDAA$F03B(16位地址)

LDAA#$F03B?五.相对寻址(REL)

SHIFT:LDAA#$55BRASHIFT(相对地址跳转)nn六.变址寻址1.变址方式一般形成过程:操作数地址=偏移量+寄存器的内容(16位)2.偏移量定义范围:

3位正数1--8;不含05位数-16--159位数-256--25516位数-32768--32767

累加寄存器内容A、B、D作为偏移量3.寄存器定义范围:

X、Y、SP、PC:可以选择除①以外的偏移量

X、Y、SP:仅①规定的偏移量3.1操作数地址=偏移量+a)类寄存器集合

地址指令操作数C008LDDA1,X;2字节5位偏移量C00ALDDA15,X;2字节5位偏移量C00CLDAA255,X;3字节9位偏移量C00FLDAA0,X;25位偏移量C011LDAA32767,X;416位偏移量C015LDAAA,X;2累加器偏移量

C017------

偏移量在指令中IDX,2字节指令。偏移量多1个字节IDX1,3字节指令。偏移量多2个字节IDX2,4字节指令。

LDAA,X;无偏移量,指令为2BIDX,等效指令

LDAA0,X;无偏移量,指令为2BIDX,等效指令

LDAAX;无偏移量,指令为2BIDX,等效指令

LDDA7,X;偏移量《=5位,2BIDXLDAA-150,X;偏移量《=9位,3BIDX1LDAA10000,X;偏移量《=16位,4BIDX23.2操作数地址=偏移量+b)类寄存器集合

带指针自动调整功能的变址寻址(IDX)

调整范围在1---8正数,寄存器:X、Y、S。

MOVW2,X+,4,+YSTAA1,-SPSTX2,-SPLDX2,SP+LDAA1,SP+

问题:下列指令属于哪一类偏移量?

LDAA3,X;LDAA3,X+;

5位偏移量-16--15;3位1-8偏移量4.IDX类变址寻址方法总结:

偏移量或偏移量寄存器隐含在指令中,共有3种对应变址方法:偏移量1–8正数,±xyp

和1–8正数,xyp±。

INSToprx3,-xysINSToprx3,+xysINSToprx3,xys-INSToprx3,xys+5位偏移量-16---15,变址寄存器xyspINSToprx5,xysp寄存器偏移量A,B,D,变址寄存器xyspINSTabd,xysp注:FREESCALE资料中,上述偏移量统一表示为oprx0_xysp

5.间接指针寻址INST[OPRX16,XYSP]间接16位常数偏移量变址寻址

[IDX2]INST[D,XYSP]间接D变址寻址

[D、IDX]偏移量范围从-32768到+65535

INC$1000;EXTINC3,X+;IDX1--8INC3,X;IDX-16--15INCD,X;IDXINC255,X;IDX1INC$1000,X;IDX216偏移量

INC[$1000,X];[IDX2]INC[D,X];[D,IDX]6.内存地址加一指令寻址方法4.3常用基本指令4.3.1传输类指令1.寄存器加载指令LOAD功能:将内存数据加载到寄存器源操作数内容不变。支持寻址方式:IMM、DIR、EXT、IDX、IDX1、IDX2、[IDX2]、[D,IDX]。不支持INH、REL寻址。对CCR影响:V=0,N,Z,与C无关。

列:LDAA#$01LDAA$01LDAA$0001

如果内存(0008)=8F、(0009)=00,LDD$08寄存器:A=8F,B=00。M:M+1M低地址,M+1高地址A=(M)B=(M+1)注:以上指令支持什么寻址方法,需要进一步查手册寄存器加载指令列表STX

Y;X写入Y指向数据地址STX,Y;等同上一条命令STAB2,X+;STD

$2000;$2000=(A)$2001=(B)

;地址向高地址发展。2.寄存器存储指令STORE

功能:累加器或寄存器内容写入内存单元。源操作数不发生变化。源操作数A、B、D、X、Y、SP寻址方式:DIR、EXT、IDX、IDX1、IDX2、 [IDX2]、[D,IDX]

CCR:N,Z,V=0,与C无关寄存器存储指令列表3.寄存器传送指令

(TABTBATFR以外指令是8位机兼容指令)16位寄存器内容传到8位时,低8位内容装入8位寄存器;8位寄存器内容传到16位时,8位寄存器内容装入低8位,并符号扩展寄存器传送指令特点:传到CCR,X不会发生0到1变化,即不能置位;TFR指令(除传到CCR以外)不会影响CCR的标志。注意:TABTBA对CCR影响同LOAD,STORE。所有指令在编译后,实际上隐含寻址方式。

列:TFRA,Y;A=$0F,Y=$000FTFRX,B;X=$0FEE,B=$EETFRA,CCR

4.寄存器交换指令EXG

EXGA/B/CCR,X/Y/SP;8位与16位交换

X=$00:A/B/CCREXGX/Y/SP,A/B/CCR

;16位与8位交换

X=$00:A

;X=$FF:B/CCR

源寄存器不同,结果不同!对CCR没有影响。EXGA,BEXGX,YEXGB,XEXGX,BEXGX,A注意:EXG编译后是隐含寻址方式。建议一般不使用不匹配长度寄存器之间的交换指令5.内存数据传送指令功能:内存到内存的数据传送。源操作数内容不变化。支持寻址方式:IMM->EXT,IMM->IDX,EXT->EXTEXT->IDX,IDX->EXT,IDX->IDX不影响标志位IMM寻址可以用于初始化内存块;列:MOVB$2000,XMOVB$80,8,Y;(Y+8)=($0080)MOVW#1234,1,Y+;(Y)=12,(Y+1)=34MOVW2,X+,4,Y+;(Y)=(X),(Y+1)=(X+1)MOVB#12,$0001;6.堆栈操作指令进堆栈先减,再存储数据;出堆栈先保存数据,再加。PSHX=STX2,-SPPULX=LDX2,SP+堆栈操着指令寻址方式SP间接寻址。不影响CCR,除CCR相关弹出指令外。隐含寻址。用途:参数传递。一种数据结构。特点:1、各寄存器都可以入栈、出栈2、可以做8位、16位操作3、入栈时SP-1(2),出栈时SP+1(2)CPS$1000DESINSLDS$2000LEAS4,XSTS,XTSXTSYTXSTYS堆栈指针指令7.有效地址加载指令功能:将寻址模式的有效地址加载到寄存器特点:不影响CCR支持寻址方式:IDXIDX1IDX2,不支持间址方式列:LDY#$2000LEAS4,Y+;SP=$2000,Y=2004LDS4,Y+;SP=(Y)

LEAXB,Y;X=B+YLDXB,Y;X=(B+X)

4.3.2运算类指令特点:所有加减指令结果都存放在寄存器R–R的加减法,寻址方式的隐含,没有带借进位.ABX和ABY不影响CCR.ABX=LEAXB,X;ABY=LEAYB,XD寄存器没有带借进位的加减法R---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--LEAS1,SP对A、B、X、Y寄存器操作,效率高,指令仅1字节长3.比较测试指令特点:比较指令对同等长度的数据进行比较;不改变操作数的内容。寻址:IMM、DIR、EXT、IDX、IDX1、IDX2、IDX2]、D,IDX]A,B比较隐含寻址影响:C、V、N、Z

列:CMPA#$30,CPD5,Y测试指令用于测试内存、寄存器是否为$00;不改变操作数的内容,测试单位是字节;

V,C位始终清零;影响N,Z;寻址:EXT、IDX、IDX1、IDX2、[IDX2]、[D,IDX]

无:IMM.DIR

列:TST$10004.求补运算指令功能:求出寄存器或内存单元的补码值;支持:EXT、IDX、IDX1、IDX2、[IDX2]、[D,IDX]CCR:N、Z、V、C对内存操作是按字节长度操作问题:LDAA#$80NEGA答案:A=$80v=1

对于一位十进制加法,每位数变化范围0—9。对应的加法结果是0到18。

BCD码:用4位二进制码表示一位十进制数比如:%0100--》4,%1000--》8

对于两个<=9的一位BCD数X,Y

5.十进制调整指令DAA

低4位,大于9或有半进位H加$06修正;高4位,大于9或有进位位C加$60修正;

56+69;16进制加法=BF+66;调整

=25;C=1

1;C=112+21=3425;不需调整列1:1256+2169=?列2:

49+28=71,H=1+06=77例:程序片段¥3275+¥2669LDD#$3275ADDB#$69EXGA,B;不影响C,H位

DAAEXGA,BADCA#$26DAA结果:D=?

$5944总结十进制调整指令特点

1、是在加法操作之后进行2、是对A进行压缩BCD码加法调整3、只有这一条调整指令6、符号扩展指令:SEX说明:

1、根据最高位的值将8位扩展为16位

2、源:A,B,CCR目的:D,X,Y,SP例:SEXA,X;等效于下条指令

TFRA,X;自动转为SEX指令7、乘、除法指令

MULtiply、DIVide列:小数点除法指令FDIVLDD#3LDX#8FDIV结果:X=$6000,D=03/8=0.3756000>0110000000000000

>0.011000000000

0000->1/4+1/8=0.375注意:是无符号数的除法!4.3.3逻辑指令特点:A、B、CCR与立即数、或内存逻辑操作,结构放于寄存器;用途:寄存器清零某位或置位某位,测试内存数据。寄存器CCR只有立即数寻址方式且无异或操作CCR影响:V=0,清零的方法:A=A-AA=A异或ALDAA#$00ANDA#$00CLRA清零某位:ANDA#%010101012.清零和取反指令清零指令执行后,CCR:Z=1,N=0,V=0,C=0取反指令执行后,CCR:V=0,C=1所有操作是字节3.位操作和位检测指令BITA、BITB:相当于AND指令,但不改变结果。

CCR:V=0IMM、DIR、EXT、IDX、IDX1、IDX2、[IDX2]、[D,IDX]

列:BITA#$80;BCLR:将屏蔽码为1的对应位清0,操作对象仅内存;BSET:将屏蔽码为1的对应位置1,操作对象仅内存;寻址方式:DIR、EXT、IDX、IDX1、IDX2列:BCLR$2000,#$81BSET$55,#$80ANDA#opr8BITA#opr8A^#opr8→AA^#opr8

TST、AND、BIT、BCLRBSET区别:TST对象内存、寄存器,是否为0,操作数内容不变,强调数;AND对象内存和寄存器,操作数内容变化;强调位!

BIT对象内存和寄存器,操作数内容部不变,强调位!BCLR、BSET位操作指令对象仅内存,操作数内容变化。4.移位指令逻辑移位、循环移位:控制操作算术移位:快速乘法,除法。协助记忆:算术:Arithmetic

逻辑:Logic左:Left右:Right

循环:Rotate

算术左移(ASL)逻辑左移(LSL)

算术右移(ASR)

逻辑右移(LSR)循环左移(ROL)

循环右移(ROR)逻辑左移(LSL)算术左移(ASL)寄存器:A、B、D操作为隐含寻址方式所有操作不含DIR寻址列:LDX#$1000ASR1,X+ROR1,X+4.3.4程序控制类指令1.无条件转移指令JMP,LBRA,BRA

注意:所有分支指令均不影响CCR2.短分支跳转指令功能:在当前PC的值加上一个8位带符号数的偏移量,即跳转范围:-128~+127无符号有符号$88=136,-12086=134,-1228A=138,-118CMPA#$88;136BHIL1……..CMPA#$88;-120BGTL2注意:1、只作检测,满足条件转移,不影响标志位2、结果不回传例:BRCLR$20,#$81,LP1BRSET$20,#$81,LP2位条件转移指令3.长分支跳转指令功能:在当前PC的值加上一个16位带符号数的偏移量,即跳转范围:-32768~+327674.循环控制指令特点:1、不影响、不依赖标志位

2、转移范围是-256~+2554字节数加法程序:ADD:LDX#$0B00;加数起始地址

LEAY4,X;被加数地址

LDAB#4;计数值

CLC;清进位位LOOP:LDAAXADCA1,Y+STAA1,X+DBNEB,LOOPA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论