单片机指令系统Word下载.docx

上传人:b****6 文档编号:17251707 上传时间:2022-11-29 格式:DOCX 页数:31 大小:55.49KB
下载 相关 举报
单片机指令系统Word下载.docx_第1页
第1页 / 共31页
单片机指令系统Word下载.docx_第2页
第2页 / 共31页
单片机指令系统Word下载.docx_第3页
第3页 / 共31页
单片机指令系统Word下载.docx_第4页
第4页 / 共31页
单片机指令系统Word下载.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

单片机指令系统Word下载.docx

《单片机指令系统Word下载.docx》由会员分享,可在线阅读,更多相关《单片机指令系统Word下载.docx(31页珍藏版)》请在冰豆网上搜索。

单片机指令系统Word下载.docx

用户可以通过相应的指令来选择一种运算模式。

I

中断屏蔽位(I):

该位用于使能/禁止除“非屏蔽中断源(NMI)”以外的所有中断源。

将该位置1,CPU将忽略中断请求,置0,CPU将接受中断请求。

Z

零标志位(Z):

数据和算术运算结果标志位。

当数据或算术运算结果为0时,该位被置1;

为其它值时,该位被置0。

C

进位标志(C):

当加法操作中产生进位或减法操作中没有产生借位时,该位被置1。

此外,移位或循环指令也会改变该位的值。

#dd

8位(BIT)的立即数

Label

程序标号

程序注释前缀

Adr08

8位存储器地址

Adr16

16位存储器地址

aa

aaaa

Cycles

指令周期数,1个Cycle的时间为1个CPU时钟周期,即1/FSYS

SPMC65系列单片机的汇编指令格式规定

汇编指令包括四部分,格式如下:

[标号:

]操作码[操作数][;

注释]

[]中的内容为可选项

标号:

标识了一条指令的位置,可以使用标号作为访问该指令的地址。

标号应以字母或下划线‘_'

开头(局部标号还可以用问号‘?

'

开头),以冒号‘:

'

结束;

标号的命名可以取数字、字母和下划线的组合,长度为2~32个字符,区分大小写。

不要用指令记助符、寄存器名称或系统保留字的字符串作为标号。

而宏名可以字母、下划线或百分号(%)开头。

标号的后缀可以是字母、下划线、问号或井号‘#'

操作码:

指令区域,用于写指令。

操作数:

操作数可以是程序中的数据或地址。

当操作码为单字节时,无操作数。

当进行立即数寻址时,操作数为一个字节数据,使用一个符号来标识其所在位置。

当操作数作为程序地址时,其实就是一个标号。

注释:

注释可以提高程序的可读性。

在注释语句的前面应该加一个分号‘;

例如:

LDA#5;

将8位立即数5载入累加器A

STACounter;

将累加器A中的数载入变量Counter中

数制

  汇编器默认数制为十进制,如果要表示成其它数制,需要给数字加上后缀或前缀。

下表列出了各种数制的表达方式。

应用时,将其与数值组合即可。

二进制

以“%”为前缀或以“B”、“b”为后缀

10101011B

八进制

以“O”、“o”或“Q”、“q”为后缀

253Q

十进制

以“D”或“d”为后缀或无后缀

171

十六进制

以“H”、“h”为后缀或以“$”、“0X”、“0x”为前缀

$AB

字符串定义

字符串必须放在双引号(“”)或单引号(‘'

)内表示,除非语法上另有所指。

2.2 寻址方式

  在计算机中,寻找操作数的方法定义为指令的寻址方式,根据这个原则,SPMC65系列单片机的寻址方式分为以下11种:

•立即数寻址(Immediateaddressingmode)

•绝对寻址(Absoluteaddressingmode)

•零页寻址(Zeropageaddressingmode)

•绝对变址寻址(Absoluteindexedaddressingmode)

•零页变址寻址(Zeropageindexedaddressingmode)

•间接跳转寻址(Indirectaddressingmode)

•变址间接寻址(Indexedindirectaddressingmode)

•间接变址寻址(Indirectindexedaddressingmode)

•隐含寻址(Impliedaddressingmode)

•累加器寻址(Accumulatoraddressingmode)

•相对寻址(Relativeaddressingmode)

•立即数寻址(ImmediateAddressingMode)

  这种寻址方式的操作数以8位立即数的形式出现,紧跟在操作码的后面,立即数用“#”号表示,以区别直接地址。

汇编格式:

操作码#dd

AND#$08

  立即数寻址过程如图2.1所示,首先xx是由累加器A提供,这是由AND的操作数决定的,08就是立即数,然后进行逻辑与操作。

由于AND操作数是两个字节,所以执行该操作数后PC向后移动两个字。

就是mmmm+2,以下同。

图2.1立即数寻址方式示意图

绝对寻址用两个字节(Adr16)来指明目标操作数地址。

操作码Adr16

例子:

AND$E030

绝对寻址过程如图2.2所示,操作码(指令)AND的一个操作数从$E030指向的存储单元里直接取得。

图2.2绝对寻址过程示意图

零页寻址采用零页(地址范围$0000~$00FF)的低字节来指明操作数地址(高位地址默认为零)。

操作码Adr08

AND$30

零页寻址过程如图2.3所示,操作码(指令)AND的一个操作数从零页存储单元$30中直接取得。

图2.3零页寻址过程示意图

绝对变址寻址使用一个双字节基址和一个变址指针(寄存器X或Y)来指明目标操作数地址。

操作码Adr16,X

或:

操作码Adr16,Y

LDA$E500,X

绝对变址寻址的过程如图2.4所示,由绝对地址(基址)与变址指针(X寄存器)的地址相加得到的地址里的数作为操作数。

图2.4绝对变址寻址过程示意图

零页变址寻址使用零页地址作为基址,基址与变址指针(寄存器X或Y)相加来指明目标操作数地址。

操作码Adr08,X

操作码Adr08,Y

LDA$75,X

零页变址寻址的过程如图2.5所示,由零页地址(基址)与变址指针(X寄存器)的地址相加得到的地址里的数作为操作数。

图2.5零页变址寻址过程示意图

间接跳转寻址只能用于JMP指令中,它用16位地址作为程序跳转地址的指针。

操作码(Adr16)

JMP($F600)

如下图所示,间接跳转寻址将$F600与$F601两单元中的数据组成的16位地址$ppqq作为PC的跳转地址($pp、$qq为存储器中的数值)。

图2.6间接跳转寻址过程示意图

变址间接寻址采用“8位地址+变址指针X”来指明目标操作数地址。

在此寻址模式下,只能采用X寄存器作为变址指针。

操作码(Adr08,X)

AND($30,X)

变址间接寻址如图2.7所示,首先$30与变址指针(X寄存器)中的值$63相加,其结果$93作为目标操作数地址的指针,它所指向的数值$qq与下一个存储单元中的数值$pp共同组成了16位的目标操作数地址。

地址$ppqq指向的内容$yy就是目标操作数。

图2.7变址间接寻址过程示意图

间接变址寻址采用“8位地址”来指明目标操作数的基址,再加上变址指针(Y寄存器)作为目标操作数的地址。

在此寻址模式下,只能采用Y寄存器作为变址指针。

操作码(aa),Y

LDA($20),Y

间接变址寻址如图2.8所示,由地址$20里的数据$32作为基址地址的低8位,下一个地址$21里的数据$01作为基址地址的高8位,二者组成的16位基址$0132加上指针(Y寄存器)中的数据$15形成目标操作数地址$0147,目标操作数地址里的数据作为操作数。

图2.8间接变址寻址

隐含寻址是特殊指令对应的特殊寻址方式,它的源操作数和目标操作数的地址都由指令默认。

操作码

TAX;

将累加器内容传送到X寄存器中

CLC;

清除进位标志

累加器寻址采用累加器A作为指令操作数。

操作码A

ROLA;

累加器A内容循环左移

ASLA;

累加器A的内容算数左移

相对寻址使用一个8位地址来定义目标操作数的地址,该寻址方式仅用在条件跳转指令中,最大的向前跨度为127字节,最大向后跨度为128字节。

操作码Adr08

BCCM127

BCCP128

相对地址寻址过程如图2.9所示,其中M127与P128都是标号

图2.9相对寻址过程示意图

2.3 指令系统

•指令概述

  指令依照其用途可分为六类:

数据传送类指令、算术运算类指令、逻辑运算类指令、位操作指令、转移类指令、控制类指令。

它们的具体分类及用途详见表2.2。

表2.2SPMC65指令分类列表

类别

用途

指令

数据传送指令

立即数到寄存器、寄存器到寄存器、寄存器到存储器、存储器到寄存器的数据传送操作

LDA、LDX、LDY、STA、STX、STY、TAX、TXA、TAY、TYA、TXS、TSX、PHA、PHP、PLA、PLP

算术运算指令

加、减、比较运算

ADC、SBC、DEC、DEX、DEY、INC、INX、INY、CMP、CPX、CPY

逻辑运算指令

与、或、异或、移位等操作

AND、ORA、EOR、ASL、LSR、ROL、ROR、BIT

控制转移指令

条件转移、无条件转移、中断返回、子程序调用等操作

BCS、BCC、BEQ、BNE、BMI、BPL、BVS、BVC、JMP、JSR、RTS、RTI

位操作指令

位置位、位清除、位取反、位测试等操作

SET、CLR、INV、TST

处理器控制指令

开中断、关中断、清除进位、清除负标志等操作

CLC、CLD、CLI、CLV、SEC、SED、SEI、NOP

•数据传送指令

数据传送是把源操作数传送到目标地址的过程,是计算机最基本、最重要的一种操作。

在实际应用中,数据传送指令使用的比例是最高的。

1.LDA

LDA的作用是将数据送入累加器A中,具体格式参见下表:

表2.3指令LDA

汇编指令格式

操作码

字节数

指令周期(Cycles)

LDA#dd

A9H

2

LDAaa

A5H

3

LDAaa,X

B5H

4

LDAaaaa

ADH

LDAaaaa,X

BDH

4*

LDAaaaa,Y

B9H

LDA(aa,X)

A1H

6

LDA(aa),Y

B1H

6*

*如果数据寻址时超出了一页的范围,需要再加一个指令周期,一页的大小为256个字节。

该指令对P标志位的影响见下表:

表2.4LDA指令对P标志位的影响

!

-

N:

将bit7的值赋给N

Z:

结果为0时置1

[例]:

LDA#$F0;

把立即数$F0传送至累加器A

LDA$F0;

把位于$F0地址的数据复制到累加器A

2.LDX

LDX的作用是将数据送入X寄存器中。

具体格式参见下表:

表2.5指令LDX

LDX#dd

A2H

LDXaa

A6H

LDXaa,Y

B6H

LDXaaaa

AEH

LDXaaaa,Y

BEH

*如果数据寻址时超出了一页的范围,需要再加一个指令周期

表2.6LDX指令对P标志位的影响

结果为0置1

LDX#$F0;

把立即数$F0传送至X寄存器

LDX$F0;

把位于$F0地址的数据复制到X寄存器

3.LDY

LDY的作用是将数据送入Y寄存器中。

表2.7指令LDY

LDY#dd

A0H

LDYaa

A4H

LDYaa,X

B4H

LDYaaaa

ACH

LDYaaaa,X

BCH

*如果数据寻址时超出了一页的范围,需要再加一个指令周期

表2.8LDY指令对P标志位的影响

LDY#$F0;

把立即数$F0传送至Y寄存器

LDY$F0;

把位于$F0地址的数据复制到Y寄存器

LDX#$12;

把立即数$12传送至X寄存器

LDY$E005,X;

把地址为$E017($E005+$12)的数据复制到Y寄存器

4.STA

STA的作用是将累加器A的值送入存储器。

表2.9指令STA

STAaa

85H

STAaa,X

95H

STAaaaa

8DH

STAaaaa,X

9DH

STAaaaa,Y

99H

STA(aa,X)

81H

STA(aa),Y

91H

该指令对标志寄存器P不产生影响。

LDA#$12;

把立即数$12送至累加器

STA$78;

把累加器中的数据$12复制到地址为$78的存储单元

STX

STX的作用是将寄存器X的值送入存储器中。

表2.10指令STX

STXaa

86H

STXaa,Y

96H

STXaaaa

8EH

把立即数12送至寄存器X

STX$78;

把寄存器X中的数据$12复制到地址为$78的存储单元

6.STY

STY的作用是将寄存器Y的值送入存储器中。

表2.11指令STY

STYaa

84H

STYaa,X

94H

STYaaaa

8CH

LDY#$12;

把立即数$12送至寄存器Y

STY$78;

把寄存器Y中的数据$12复制到地址为$78的存储单元

LDX#$10;

把立即数$10送至寄存器X

STY$63,X;

把寄存器Y中的数据$12复制到地址为$73($63+$10)的存储单元

7.TAX

TAX的作用是将累加器A的值送入寄存器X中。

表2.12指令TAX

TAX

AAH

1

表2.13TAX指令对P标志位的影响

N:

Z:

运算结果为零置1

LDA#$17;

把立即数$17送至累加器A

TAX;

把累加器A中的数值$17复制到寄存器X中

8.TXA

TXA的作用是将X寄存器的值送入累加器A中。

参见下表:

表2.14指令TXA

TXA

8AH

表2.15TXA指令对P标志位的影响

LDX#$17;

把立即数$17送至寄存器X

TXA;

把寄存器X中的数值$17复制到累加器A中

9.TAY

TAY的作用是将累加器A的值送入寄存器Y中。

表2.16指令TAY

TAY

A8H

表2.17TAY指令对P标志位的影响

TAY;

10.TYA

TYA的作用是将Y寄存器的值传送到累加器A中。

表2.18指令TYA

TYA

98H

表2.19TYA指令对P标志位的影响

LDY#$17;

把立即数$17送至寄存器Y

TYA;

把寄存器Y中的数值$17复制到累加器A中

11.TXS

TXS的作用是将X寄存器的值传送到堆栈指针SP的低8位中。

表2.20指令TXS

TXS

9AH

TXS指令对标志寄存器P不产生影响。

LDX#$FC;

把立即数$FC送至寄存器X

TXS;

把X中的值赋给堆栈指针SP的低8位,SP的值将变为$FC

12.TSX

TSX的作用是将堆栈指针SP中的值送入X寄存器中。

表2.21TSX指令对P标志位的影响

TSX

BAH

表2.22TAY指令对P标志位的影响

13.PHA

PHA的作用是将累加器A的值压入堆栈。

该指令产生的操作是:

首先将累加器A的值传送到堆栈指针SP所指向的存储单元,然后使SP的值减小1。

表2.23指令PHA

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1