单片机指令系统.docx
- 文档编号:4327989
- 上传时间:2022-11-29
- 格式:DOCX
- 页数:31
- 大小:55.49KB
单片机指令系统.docx
《单片机指令系统.docx》由会员分享,可在线阅读,更多相关《单片机指令系统.docx(31页珍藏版)》请在冰豆网上搜索。
单片机指令系统
SPMC65系列单片机指令系统
内容索引
2.1符号约定
2.4常用伪指令
2.2寻址方式
2.5常用程序实例
2.3指令系统
2.1 符号约定:
SPMC65系列单片机指令按其功能可划分为:
•数据传送指令,包括立即数到寄存器、寄存器到寄存器、寄存器到存储器、存储器到寄存器的数据传送操作;
•算术运算,包括加、减、比较运算;
•逻辑运算,包括与、或、异或、移位等操作;
•位操作,包括位测试、位置位、位清除、位取反等操作;
•转移指令,包括条件转移、无条件转移、中断返回、子程序调用等操作;
•控制指令,如开中断、关中断、清除进位、清除负标志等操作;
为了将指令的用法讲解清楚,下表将指令系统叙述过程中要用到的符号列出。
表2.1指令系统叙述过程中要用到的符号
A
累加器(A)
X
X寄存器
Y
Y寄存器
PC
程序指针(PC)
SP
堆栈指针(SP)
P
状态寄存器(P)
N
负标志位(N):
该位指示一个数据或者运算结果的bit7的状态。
用户可以通过该位进行条件跳转。
V
溢出标志位(V):
该位仅用于有符号数的算术运算。
如果两个同符号数相加或两个不同符号数相减,结果大于127或者小于-128,该位置1。
D
十进制模式标志位(D):
在SPMC65系列芯片中有两种算术运算模式:
二进制模式和十进制模式,该位标明了当前的运算模式。
用户可以通过相应的指令来选择一种运算模式。
I
中断屏蔽位(I):
该位用于使能/禁止除“非屏蔽中断源(NMI)”以外的所有中断源。
将该位置1,CPU将忽略中断请求,置0,CPU将接受中断请求。
Z
零标志位(Z):
数据和算术运算结果标志位。
当数据或算术运算结果为0时,该位被置1;为其它值时,该位被置0。
C
进位标志(C):
当加法操作中产生进位或减法操作中没有产生借位时,该位被置1。
此外,移位或循环指令也会改变该位的值。
#dd
8位(BIT)的立即数
Label
程序标号
;
程序注释前缀
Adr08
8位存储器地址
Adr16
16位存储器地址
aa
8位存储器地址
aaaa
16位存储器地址
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立即数寻址方式示意图
•绝对寻址(Absoluteaddressingmode)
绝对寻址用两个字节(Adr16)来指明目标操作数地址。
汇编格式:
操作码Adr16
例子:
AND$E030
绝对寻址过程如图2.2所示,操作码(指令)AND的一个操作数从$E030指向的存储单元里直接取得。
图2.2绝对寻址过程示意图
•零页寻址(Zeropageaddressingmode)
零页寻址采用零页(地址范围$0000~$00FF)的低字节来指明操作数地址(高位地址默认为零)。
汇编格式:
操作码Adr08
例子:
AND$30
零页寻址过程如图2.3所示,操作码(指令)AND的一个操作数从零页存储单元$30中直接取得。
图2.3零页寻址过程示意图
•绝对变址寻址(Absoluteindexedaddressingmode)
绝对变址寻址使用一个双字节基址和一个变址指针(寄存器X或Y)来指明目标操作数地址。
汇编格式:
操作码Adr16,X
或:
操作码Adr16,Y
例子:
LDA$E500,X
绝对变址寻址的过程如图2.4所示,由绝对地址(基址)与变址指针(X寄存器)的地址相加得到的地址里的数作为操作数。
图2.4绝对变址寻址过程示意图
•零页变址寻址(Zeropageindexedaddressingmode)
零页变址寻址使用零页地址作为基址,基址与变址指针(寄存器X或Y)相加来指明目标操作数地址。
汇编格式:
操作码Adr08,X
或:
操作码Adr08,Y
例子:
LDA$75,X
零页变址寻址的过程如图2.5所示,由零页地址(基址)与变址指针(X寄存器)的地址相加得到的地址里的数作为操作数。
图2.5零页变址寻址过程示意图
•间接跳转寻址(Indirectaddressingmode)
间接跳转寻址只能用于JMP指令中,它用16位地址作为程序跳转地址的指针。
汇编格式:
操作码(Adr16)
例子:
JMP($F600)
如下图所示,间接跳转寻址将$F600与$F601两单元中的数据组成的16位地址$ppqq作为PC的跳转地址($pp、$qq为存储器中的数值)。
图2.6间接跳转寻址过程示意图
•变址间接寻址(Indexedindirectaddressingmode)
变址间接寻址采用“8位地址+变址指针X”来指明目标操作数地址。
在此寻址模式下,只能采用X寄存器作为变址指针。
汇编格式:
操作码(Adr08,X)
例子:
AND($30,X)
变址间接寻址如图2.7所示,首先$30与变址指针(X寄存器)中的值$63相加,其结果$93作为目标操作数地址的指针,它所指向的数值$qq与下一个存储单元中的数值$pp共同组成了16位的目标操作数地址。
地址$ppqq指向的内容$yy就是目标操作数。
图2.7变址间接寻址过程示意图
•间接变址寻址(Indirectindexedaddressingmode)
间接变址寻址采用“8位地址”来指明目标操作数的基址,再加上变址指针(Y寄存器)作为目标操作数的地址。
在此寻址模式下,只能采用Y寄存器作为变址指针。
汇编格式:
操作码(aa),Y
例子:
LDA($20),Y
间接变址寻址如图2.8所示,由地址$20里的数据$32作为基址地址的低8位,下一个地址$21里的数据$01作为基址地址的高8位,二者组成的16位基址$0132加上指针(Y寄存器)中的数据$15形成目标操作数地址$0147,目标操作数地址里的数据作为操作数。
图2.8间接变址寻址
•隐含寻址(Impliedaddressingmode)
隐含寻址是特殊指令对应的特殊寻址方式,它的源操作数和目标操作数的地址都由指令默认。
汇编格式:
操作码
例子:
TAX;将累加器内容传送到X寄存器中
CLC;清除进位标志
•累加器寻址(Accumulatoraddressingmode)
累加器寻址采用累加器A作为指令操作数。
汇编格式:
操作码A
例子:
ROLA;累加器A内容循环左移
ASLA;累加器A的内容算数左移
•相对寻址(Relativeaddressingmode)
相对寻址使用一个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
2
LDAaa
A5H
2
3
LDAaa,X
B5H
2
4
LDAaaaa
ADH
3
4
LDAaaaa,X
BDH
3
4*
LDAaaaa,Y
B9H
3
4*
LDA(aa,X)
A1H
2
6
LDA(aa),Y
B1H
2
6*
*如果数据寻址时超出了一页的范围,需要再加一个指令周期,一页的大小为256个字节。
该指令对P标志位的影响见下表:
表2.4LDA指令对P标志位的影响
N
V
D
I
Z
C
!
-
-
-
!
-
N:
将bit7的值赋给N
Z:
结果为0时置1
[例]:
LDA#$F0;把立即数$F0传送至累加器A
LDA$F0;把位于$F0地址的数据复制到累加器A
2.LDX
LDX的作用是将数据送入X寄存器中。
具体格式参见下表:
表2.5指令LDX
汇编指令格式
操作码
字节数
指令周期(Cycles)
LDX#dd
A2H
2
2
LDXaa
A6H
2
3
LDXaa,Y
B6H
2
4
LDXaaaa
AEH
3
4
LDXaaaa,Y
BEH
3
4*
*如果数据寻址时超出了一页的范围,需要再加一个指令周期
该指令对P标志位的影响见下表:
表2.6LDX指令对P标志位的影响
N
V
D
I
Z
C
!
-
-
-
!
-
N:
将bit7的值赋给N
Z:
结果为0置1
[例]:
LDX#$F0;把立即数$F0传送至X寄存器
LDX$F0;把位于$F0地址的数据复制到X寄存器
3.LDY
LDY的作用是将数据送入Y寄存器中。
具体格式参见下表:
表2.7指令LDY
汇编指令格式
操作码
字节数
指令周期(Cycles)
LDY#dd
A0H
2
2
LDYaa
A4H
2
3
LDYaa,X
B4H
2
4
LDYaaaa
ACH
3
4
LDYaaaa,X
BCH
3
4*
*如果数据寻址时超出了一页的范围,需要再加一个指令周期
该指令对P标志位的影响见下表:
表2.8LDY指令对P标志位的影响
N
V
D
I
Z
C
!
-
-
-
!
-
N:
将bit7的值赋给N
Z:
结果为0置1
[例]:
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
汇编指令格式
操作码
字节数
指令周期(Cycles)
STAaa
85H
2
3
STAaa,X
95H
2
4
STAaaaa
8DH
3
4
STAaaaa,X
9DH
3
4
STAaaaa,Y
99H
3
4
STA(aa,X)
81H
2
6
STA(aa),Y
91H
2
6
该指令对标志寄存器P不产生影响。
[例]:
LDA#$12;把立即数$12送至累加器
STA$78;把累加器中的数据$12复制到地址为$78的存储单元
STX
STX的作用是将寄存器X的值送入存储器中。
具体格式参见下表:
表2.10指令STX
汇编指令格式
操作码
字节数
指令周期(Cycles)
STXaa
86H
2
3
STXaa,Y
96H
2
4
STXaaaa
8EH
3
4
该指令对标志寄存器P不产生影响。
[例]:
LDX#$12;把立即数12送至寄存器X
STX$78;把寄存器X中的数据$12复制到地址为$78的存储单元
6.STY
STY的作用是将寄存器Y的值送入存储器中。
具体格式参见下表:
表2.11指令STY
汇编指令格式
操作码
字节数
指令周期(Cycles)
STYaa
84H
2
3
STYaa,X
94H
2
4
STYaaaa
8CH
3
4
该指令对标志寄存器P不产生影响。
[例]:
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
汇编指令格式
操作码
字节数
指令周期(Cycles)
TAX
AAH
1
2
该指令对P标志位的影响见下表:
表2.13TAX指令对P标志位的影响
N
V
D
I
Z
C
!
-
-
-
!
-
N:
将bit7的值赋给N
Z:
运算结果为零置1
[例]:
LDA#$17;把立即数$17送至累加器A
TAX;把累加器A中的数值$17复制到寄存器X中
8.TXA
TXA的作用是将X寄存器的值送入累加器A中。
参见下表:
表2.14指令TXA
汇编指令格式
操作码
字节数
指令周期(Cycles)
TXA
8AH
1
2
该指令对P标志位的影响见下表:
表2.15TXA指令对P标志位的影响
N
V
D
I
Z
C
!
-
-
-
!
-
N:
将bit7的值赋给N
Z:
运算结果为零置1
[例]:
LDX#$17;把立即数$17送至寄存器X
TXA;把寄存器X中的数值$17复制到累加器A中
9.TAY
TAY的作用是将累加器A的值送入寄存器Y中。
具体格式参见下表:
表2.16指令TAY
汇编指令格式
操作码
字节数
指令周期(Cycles)
TAY
A8H
1
2
该指令对P标志位的影响见下表:
表2.17TAY指令对P标志位的影响
N
V
D
I
Z
C
!
-
-
-
!
-
N:
将bit7的值赋给N
Z:
运算结果为零置1
[例]:
LDA#$17;把立即数$17送至累加器A
TAY;把累加器A中的数值$17复制到寄存器X中
10.TYA
TYA的作用是将Y寄存器的值传送到累加器A中。
具体格式参见下表:
表2.18指令TYA
汇编指令格式
操作码
字节数
指令周期(Cycles)
TYA
98H
1
2
该指令对P标志位的影响见下表:
表2.19TYA指令对P标志位的影响
N
V
D
I
Z
C
!
-
-
-
!
-
N:
将bit7的值赋给N
Z:
运算结果为零置1
[例]:
LDY#$17;把立即数$17送至寄存器Y
TYA;把寄存器Y中的数值$17复制到累加器A中
11.TXS
TXS的作用是将X寄存器的值传送到堆栈指针SP的低8位中。
具体格式参见下表:
表2.20指令TXS
汇编指令格式
操作码
字节数
指令周期(Cycles)
TXS
9AH
1
2
TXS指令对标志寄存器P不产生影响。
[例]:
LDX#$FC;把立即数$FC送至寄存器X
TXS;把X中的值赋给堆栈指针SP的低8位,SP的值将变为$FC
12.TSX
TSX的作用是将堆栈指针SP中的值送入X寄存器中。
具体格式参见下表:
表2.21TSX指令对P标志位的影响
汇编指令格式
操作码
字节数
指令周期(Cycles)
TSX
BAH
1
2
该指令对P标志位的影响见下表:
表2.22TAY指令对P标志位的影响
N
V
D
I
Z
C
!
-
-
-
!
-
N:
将bit7的值赋给N
Z:
运算结果为零置1
13.PHA
PHA的作用是将累加器A的值压入堆栈。
该指令产生的操作是:
首先将累加器A的值传送到堆栈指针SP所指向的存储单元,然后使SP的值减小1。
具体格式参见下表:
表2.23指令PHA
汇编指令格式
操
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 指令系统