资源描述:
《单片机指令系统》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第3章MCS-51单片机指令系统3.1汇编语言3.2寻址方式3.3指令系统3.1汇编语言3.1.1指令、指令系统、程序设计语言指令:是CPU根据人的意图来执行某种操作的命令。指令系统:一台计算机所能执行的全部指令的集合。要使计算机按照人的思维完成一项工作,就必须让CPU按顺序执行各种操作,即一步步地执行一条条的指令。这种按人的要求编排的指令操作序列称为程序。编写程序的过程叫做程序设计。程序设计语言是实现人机交换信息的最基本工具,可以分为机器语言、汇编语言、高级语言。机器语言:是以二进制代码来描述指令功能的语言,计算机只能识别二进
2、制代码。汇编语言:是用助记符、符号和数字等来表示指令的程序语言。汇编语言是便于人们识别、记忆、理解和使用的一种指令形式,它和机器语言指令一一对应,也是由计算机的硬件特性所决定的。例如:“10+20”的例子可写成:汇编语言程序机器语言程序MOVA,#0AH740AHADDA,#14H2414H现在描述计算机指令系统及实际应用中主要采用汇编语言形式。采用机器语言编写的程序称之为目标程序。采用汇编语言编写的程序称之为源程序。计算机能够直接识别并执行的只有机器语言。汇编语言程序不能被计算机直接识别并执行,必须经过一个中间环节把它翻译成机
3、器语言程序,这个中间过程叫做汇编。汇编有两种方式:机器汇编和手工汇编。机器汇编是用专门的汇编程序,在计算机上进行翻译;手工汇编是编程员把汇编语言指令逐条翻译成机器语言指令。现在主要使用机器汇编,但有时也用到手工汇编。3.1.2指令格式MCS-51单片机指令系统具有功能强、指令短、执行快等特点,共有111条指令。从功能上可划分成数据传送、算术操作、逻辑操作、控制程序转移、位操作等五大类;从空间属性上分为单字节指令(49条)、双字节指令(46条)和最长的三字节指令(只有16条)。从时间属性上可分成单机器周期指令(64条)、双机器周期
4、指令(45条)和只有乘、除法两条4个机器周期的指令。指令系统中的指令描述了不同的操作,不同操作对应不同的指令。在结构上,每条指令通常由操作码和操作数两部分组成。操作码表示计算机执行该指令将进行何种操作,操作数表示参加操作的数的本身或操作数所在的地址。MCS-51单片机的指令有无操作数、单操作数、双操作数三种情况。一条汇编语言指令中最多包含4个区段,其格式如下所示:[标号:]操作码[操作数][;注释]4个区段之间要用分隔符分开:标号与操作码之间用“:”隔开,操作码与操作数之间用空格隔开,操作数与注释之间用“;”隔开,如果操作数有两
5、个以上,则在操作数之间要用逗号“,”隔开(乘法指令和除法指令除外)。1.单字节指令(49条)单字节指令中的8位二进制代码既包含了操作码信息,也包含了操作数的信息。a.指令码中隐含着对某个寄存器的操作,例如:CLRA→E4Hb.指令码中rrr三位指定了某个寄存器,例如:MOVA,Rn→2.双字节指令(46条)(11101rrr)双字节指令由两个字节组成,一个字节表示操作码,另一个字节表示操作数或操作数所在的地址,其指令格式:操作码助记符[立即数或地址]例如:MOVA,#10H→74H10H3.三字节指令(16条)三字节指令中,第一
6、个字节为操作码,后两个字节为操作数或操作数所在的地址,其指令格式:操作码助记符[目的操作数][源操作数]例如:MOV40H,#30H→75H40H30H3.2寻址方式所谓寻址方式,就是寻找操作数地址的方式,在用汇编语言编程时,数据的存放、传送、运算都要通过指令来完成。编程者必须自始至终都要十分清楚操作数的位置,以及如何将它们传送到适当的寄存器去参与运算。每一种计算机都具有多种寻址方式。3.2.1寻址方式中常用的符号注释Rn——当前选定的工作寄存器组R0~R7,即n=0~7。Ri——当前选定的寄存器区中可作为地址指针的2个寄存器R
7、0、R1,i=0、1。#data——8位立即数,即包含在指令中的8位常数。#data16——16位立即数,即包含在指令中的16位常数。direct——8位内部RAM单元的地址,它可以是一个内部数据区RAM单元(00H~7FH)或特殊功能寄存器地址(I/O端口、控制寄存器、状态寄存器80H~0FFH)。addr16——16位的目的地址,用于LJMP,LCALL指令,可指向64KB程序存储器地址空间。addr11——11位的目的地址,用于AJMP,ACALL指令。目的地址必须与下一条指令的第一个字节在同一个2KB程序存储器地址空间之
8、内。rel——8位带符号的偏移量字节,用于SJMP和所有条件转移指令中。偏移量相对于下一条指令的第一个字节计算,在-128~+127范围内取值。bit——内部数据RAM或特殊功能寄存器中的可直接寻址位。rrr——工作寄存器地址,rrr=000~111对应R0~R