任何微机只有硬件是不能工作的,必须配备各种功能的软件才能完成其运算、测控等功能,而软件中最基本的就是指令系统。不同类型的CPU有不同的指令系统。
指令就是CPU根据人的意图来执行某种操作的命令。一台微机所能执行的全部指令的集合称为这个CPU的指令系统。
1.指令格式
指令格式是指指令码的结构形式。通常由操作码、助记符字段和操作数字段两部分组成。指令格式如下:
操作码 [目的操作数],[源操作数]
例如:MOV A,#00H指令中,MOV是操作码,用以规定指令所实现的操作功能;A、#00H是目的操作数和源操作数。操作数可以是一个数,也可以是一个数据所在的空间地址。
2.寻址方式
寻址就是寻找指令中操作数或操作数所在的地址。8051单片机的寻址方式共有7种。
(1)寄存器寻址 寄存器寻址就是由指令指出寄存器组R0~R7中某一位或其他寄存器A、B、DPTR等的内容作为操作数,例如:MOV A,R0 ;R0→A
(2)直接寻址 在指令中直接给出操作数所在存储单元的地址,称为直接寻址方式。此时,指令中的操作数部分是操作数所在地址,例如:MOV A,3AH ;(3AH)→A
(3)立即数寻址 指令操作码后面紧跟的是一字节或两字节操作数,用“#”表示,以区别直接地址。例如:MOV A,#3A ;3AH→A
MOV DPTR,#2000H;2000H→DPTR
(4)寄存器间接寻址 操作数的地址事先放在某个寄存器中,寄存器间接寻址是把指定寄存器的内容作为地址,由该地址所指定的单元内容作为操作数。例如:
MOV A,@R0;(R0)→A
若R0中的内容为65H,此命令将片内RAM 65H单元的内容送入A中。
(5)变址寻址(基址寄存器+变址寄存器间接寻址) 变址寻址是以某个寄存器的内容为基地址,然后在这个基地址的基础上加上地址偏移量形成真正的操作数地址。
例如:
MOVC A,@A+DPTR ;((A)+(DPTR))→A
若DPTR=02F1H,A=11H,则指令将程序存储器02F1H+11H=0302H中的内容送入A中。
(6)相对寻址 相对寻址只出现在相对转移指令中。相对转移指令执行时,是以当前的PC值加上指令中规定的偏移量rel而形成实际的转移地址。一般将相对转移指令操作码所在的地址成为源地址,转移后的地址称为目的地址。于是有:
目的地址=源地址+2(相对转移指令字节数)+rel
例如:JC rel;设rel=75H,Cy=1,PC=1000H,则转移的目的地址为1000H+75H+2H=1077H。
(7)位寻址 采用位寻址方式的指令的操作数将是8位二进制数中的某一位。指令中给出的是位地址,即片内RAM某一单元中的一位。位地址在指令中用bit表示。例如:CLR bit。
3.指令系统
8051指令系统由111条指令组成,见表7-10~表7-14。
表7-10 数据传送指令
(续)(www.daowen.com)
表7-11 算术运算指令
表7-12 位操作指令
(续)
表7-13 逻辑运算指令
表7-14 控制程序转移
(续)
这些指令分为5大类:数据传送指令(28条)、算术运算指令(24条)、逻辑运算及移位指令(25条)、控制转移指令(17条)和位操作指令或布尔操作指令(17条)。在此不对每一条指令进行详细介绍,只列出指令一览表。
addr11 11位地址
addr16 16位地址
bit 位地址
rel 相对位移量,为8位有符号数(补码形式)
direct 直接寻址单元(RAM,SFR,I/O)
#data 立即数
Rn 工作寄存器R0~R7
A 累加器
Ri i=0或1,数据指针R0或R1
X 片内RAM中的直接地址或寄存器
@ 间接寻址方式中,表示间址寄存器的符号
(x) 在直接寻址方式中,表示直接地址X中的内容,在间接寻址方式中,表示间址寄存器X指出的地址单元的内容。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。