第三章 MCS-51单片机的指令系统
MCS-51指令系统专用于MCS-51系列的单片机,是一个具有255种操作代码的集合。42种指令功能助记符与各种可能的寻址方式相结合,一共构造出111种指令。111种指令中,单字节指令49种,双字节指令46种,三字节指令仅16种。指令系统的功能强弱在很大程度上决定了计算机智能的高低。MCS-51指令系统功能很强,例如,他有四则运算指令,丰富的条件转移指令、位操作指令等,使用灵活方便。
§3.1 指 令 系 统 概 述
3.1.1 基 本 概 念
指令是CPU根据人的意图来执行某种操作的命令。一台计算机所能执行的全部指令的集合称为这个CPU的指令系统。
MCS-51汇编语言指令由操作码助记符字段和操作数字段两部分组成。
操作码字段指示了计算机所要执行的操作,由2~5个英文字母表示,如,MOV、ADD等。 操作数字段指出了参与操作的数据来源和操作结果存放的目的单元。操作数可以是一个常数(立即数),或者是一个数据所在的空间地址,即在执行指令时可以从指定的地址空间取出操作数。
操作码和操作数都有对应的二进制代码,指令代码由若干字节组成。对于不同的指令,指令的字节数不同。
一、常用符号的意义
1
Rn--当前选中的寄存器区的8个通用工作寄存器R0~R7(n=0~7)。当前选中的通用工作寄存器区由程序状态字PSW中的D3,D4位(即RS0,RS1)确定,通用工作寄存器在片内数据存储器中的地址为00H~1FH。
Ri--当前选中的寄存器区中可作间址寄存器的2个通用工作寄存器R0、R1(i=0、1) @Ri--通过寄存器R0或R1间接寻址的8位内部数据RAM单元(0~255),i=0,1。 Direct--8位内部数据存储器单元地址。可以是一个内部RAM单元的地址(0~127/255)或一个专用寄存器的地址,如I/O端口、控制寄存器、状态寄存器等(128~255)。
#data--8位立即数,即包含在指令中的8位常数。 #data16--16位立即数,即包含在指令中的16位常数。
addr11--11位的目的地址。用于ACALL和AJMP指令中,目的地址必须放在与下一条指令第一字节同一个2KB程序存储器区地址空间之内。
addr16--16位的目的地址。用于LCALL和LJMP指令中,目的地址的范围是64KB程序存储器地址空间。
Rel--补码形式的8位地址偏移量。用于SJMP和所有的条件转移指令中。偏移量相对下一条指令的第一个字节计算,在-128B~+127B范围内取值。
DPTR--数据指针,可用作16位的地址寄存器。 Bit--内部RAM或专用寄存器中的直接寻址位。 A--累加器。
B--专用寄存器,用于MUL和DIV指令中。 C--进位标志或进位位,或布尔处理机中的累加器。 @--间址寄存器或基址寄存器的前缀,如@Ri、@DPTR。
/--位操作数的前缀,表示对该位操作数先取反再参与操作,但不影响该操作数,如/bit。 X--片内RAM中的直接地址或寄存器。 (X)--X中的内容。
((X))--由X寻址的单元中的内容。
← --箭头左边的内容被箭头右边的内容所代替。
2
二、指令分类
按指令的功能,可以把MCS-51的111种指令分成下面5类: 1.数据传送类(29条) 2.算术操作类(24条) 3.逻辑操作类(24条) 4.控制转移类(17条) 5.布尔变量操作类(17条)
§3.2 寻 址 方 式
所谓寻址方式就是如何找到存放操作数的地址,把操作数提取出来的方法。MCS-51系列单片机共有七种寻址方式:寄存器寻址、立即寻址、直接寻址、寄存器间址、相对寻址、变址寻址、位寻址。
一、寄存器寻址
寄存器寻址就是由指令指出寄存器R0~R7中某一个或其他寄存器(A、B、DPTR等) 的内容作为操作数。
例如:MOV A,R0
;将寄存器R0的内容送累加器A
注:分号“;”后为注释,起到说明指令功能的作用。 二、立即寻址
立即寻址方式是指操作数包含在指令字节中,其数值由程序员在编制程序时指定,以指令字节的形式存放在程序存储器中。
例如:MOV A,#00H
指令功能是将立即数00H送入累加器A中,操作数00H跟在操作码后面,以指令形式存放在程序存储器中。
三、直接寻址
3
在指令中直接给出操作数所在存储单元的地址,称为直接寻址方式。此时指令中操作数
部分就是操作数所在地址。在MCS-51系统中,使用直接寻址方式可访问片内RAM的128个单元以及所有的特殊功能寄存器(SFR)。对于特殊功能寄存器,既可以使用它们的地址,也可以使用它们的名字。专用功能寄存器只能使用直接寻址方式进行访问。
例如:MOV 31H,30H;将30H单元的内容送31H单元。 一条直接寻址方式的指令至少占内存两个单元。 四、寄存器间址
由指令指出某一个寄存器中的内容作为操作数的地址,这种寻址方式称为寄存器间接寻址。
寄存器间接寻址只能使用寄存器R0或R1作为地址指针来寻址内部RAM(00H~0FFH)中的数据;寄存器间接寻址也适用于访问外部RAM,可使用用R0、R1或DPTR作为地址指针。寄存器间接寻址用符号@表示。
例如:MOV A,@R0
指令功能是将R0所指出的内部RAM单元中的内容送累加器A。若R0的内容为20H,20H单元的内容为00H,则执行指令后累加器A的内容被赋值为00H。
五、相对寻址
相对寻址只出现在相对转移指令中。相对转移指令执行时,是以当前的PC值加上指令中规定的偏移量rel而形成实际的转移地址。这里所说的PC的当前值是执行完相对转移指令后的PC值。一般将相对转移指令操作码所在地址称为源地址,转移后的地址称为目的地址。于是有:
目的地址=源地址+2(相对转移指令字节数)+rel
例如:执行指令“JC rel”。
这是一条以CY为条件的转移指令。若源地址为3021H,rel=20H,CY=1,则该指令执行结束后目的地址为3043H。
在实际中,经常需要根据已知的源地址和目的地址计算偏移量rel。 六、变址寻址(基址寄存器+变址寄存器间接寻址)
4
变址寻址是以某个寄存器的内容为基地址,然后在这个基地址的基础上加上地址偏移量形成真正的操作数地址。这种寻址方式只能访问程序存储器,访问的范围为64KB。当然这种访问只能从ROM中读取数据而不能写入。在MCS-51系统中使用DPTR或PC作为基址寄存器,累加器A为变址寄存器。
例如:MOVC A,@A+DPTR;
若DPTR的内容为3000H,A的内容为05H,则该指令是将程序存储器中的单元3005H的内容读入累加器A中。即,若(DPTR)=3000H,(A)=05H,(3005H)=35H,则执行完这条指令后累加器A的内容为35H。
这种寻址方式多用于查表操作。 七、位寻址
采用位寻址方式的指令的操作数将是8位二进制数中的某一位。指令中给出的是位地址,即片内RAM某一单元中的一位。位地址在指令中用bit表示。
例如:CLR bit
MCS-51系统单片机片内RAM有两个区域可以位寻址:一个是20H~2FH的16个单元中的128位,另一个是字节地址能被8整除的特殊功能寄存器。
在51系统中,位地址常用下列两种方式表示:
1.直接使用位地址。对于20H~2FH的16个单元共128位的位地址分布是00H~7FH。如,20H单元的0~7位位地址是00H~07H,而21H的0~7位位地址是08H~0FH,?依此类推。
2.对于特殊功能寄存器,可以直接用寄存器名加位数表示,如PSW.0等。
§3.3 指 令 系 统
3.3.1 数 据 传 送 指 令
5
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库单片机指令系统在线全文阅读。
相关推荐: