欢迎来到天天文库
浏览记录
ID:39335683
大小:557.10 KB
页数:94页
时间:2019-07-01
《MCS51单片机的指令与程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第七章MCS-51单片机的指令与程序设计本章教学基本要求1.掌握MCS-51单片机汇编语言的特点和格式。2.掌握MCS-51单片机汇编指令的7种寻址方式和111条指令的使用方法。3.掌握MCS-51单片机汇编程序的设计方法。4.掌握MCS-51单片机C语言程序设计方法。重点与难点汇编指令的寻址方式与指令的使用方法。汇编程序和C程序的结构设计。7.1MCS-51汇编指令格式和寻址方式AT89C51单片机的基本指令共111条,按指令在程序存储器所占的字节来分,可分为以下3种:(1)单字节指令49条;(2)双字
2、节指令45条;(3)三字节指令17条。按指令的执行时间来分,可分为以下3种:(1)1个机器周期(12个时钟振荡周期)的指令64条;(2)2个机器周期(24个时钟振荡周期)的指令45条;(3)只有乘、除两条指令的执行时间为4个机器周期(48个时钟振荡周期)。MCS-51单片机的指令格式与8086类似,一条指令通常由两部分组成:操作码和操作数。AT89C51单片机的汇编语言指令的书写格式如下:标号:操作码操作数;注释例如,一条数据传送指令:MOVA,4CH;将4CH存储单元的内容送到累加器A中,其中:MOV是
3、操作码,A和3AH是操作数,“;”的后面是注释。需要注意是在汇编程序中使用的注释符号“;”,“:”和“,”为英文下的分号,冒号和逗号,而非中文下的“;”,“:”和“,”。一、指令格式1.操作码操作码是由助记符表示的字符串,它规定了指令的操作功能。操作码是指令的核心,不可或缺。2.操作数操作数是指参加操作的数据或数据的地址。MCS-51单片机的指令系统中指令的操作数可以是0~3个。不同功能的指令,操作数的个数和作用有所不同。例如,传送类指令多数有两个操作数。紧跟在操作码后面的第一操作数称为目的操作数,表示操
4、作结果存放的地址;后面的第二操作数称为源操作数,给出操作数或操作数的来源地址。3.标号标号用符号代表其后面的指令的首地址。标号由1~8个字符组成,第一个字符必须是字母,其余字符可以是字母、数字或其他特定符号,标号放在操作码前面,与操作码之间必须用“:”号隔开。标号起标记作用,在指令中是可选项,一般用在一段功能程序的第一条指令前面。4.注释注释是为了便于阅读该条指令所作的说明,注释项是可选项,即可有可无。但为提高程序可读性,多数程序需要进行适当注释。5.其他由指令格式可见,操作码与操作数之间必须用空格分隔;
5、操作数与操作数之间必须用逗号“,”分开;注释与指令之间必须用“;”号分开。操作码和操作数有对应的二进制代码,指令代码由若干字节组成。不同的指令字节数不一定相同,51单片机的指令系统中有单字节、双字节和3字节指令。寻址方式就是在指令中说明操作数所在地址的方法。AT89C51单片机的指令系统有以下7种寻址方式,下面分别予以介绍。寄存器寻址方式寄存器寻址方式就是操作数在寄存器中,因此指定了寄存器就能得到操作数。例如,指令MOVA,Rn;(Rn)→A,n=0~7表示把寄存器Rn的内容传送到累加器A中,由于操作数在
6、Rn中,因此在指令中指定了从寄存器Rn中取得源操作数,所以称为寄存器寻址方式。寄存器寻址方式的寻址范围包括:(1)4组通用工作寄存器区,共32个工作寄存器。但只能寻址当前工作寄存器区的8个工作寄存器,因此指令中的寄存器名称只能是R0~R7。(2)部分特殊功能寄存器,如累加器A、寄存器B以及数据指针寄存器DPTR等。二、寻址方式2.直接寻址方式在直接寻址方式中,指令中直接以单元地址的形式给出操作数。该单元地址中的内容就是操作数。例如,指令MOVA,26H表示把内部RAM的26H字节单元的内容传送到寄存器A。
7、源操作数采用的是直接寻址方式。需要区分8086直接寻址指令格式中直接地址要加“[]”,如8086指令:MOVAX,[1000H]。直接寻址的操作数在指令中以存储单元的形式出现,因为直接寻址方式只能使用8位二进制表示的地址,因此,直接寻址方式的寻址范围只限于:(1)内部RAM的128个单元。(2)特殊功能寄存器。特殊功能寄存器除了以单元地址的形式给出外,还可以用寄存器符号的形式给出。例如,指令MOVA,90H表示把P1口(字节地址为90H)的内容传送给A。也可写为MOVA,P1这也表示把P1口(地址为90H
8、)的内容传送给A,两条指令是等价的。应当说明的是,直接寻址方式是能对所有特殊功能寄存器读写的唯一寻址方式。3.寄存器间接寻址方式前述的寄存器寻址方式,在寄存器中存放的是操作数,而寄存器间接寻址方式,在寄存器中存放的是操作数的地址,即先从寄存器中找到操作数的地址,再按该地址找到操作数。由于操作数是通过寄存器间接得到的,因此称为寄存器间接寻址。为了区别寄存器寻址和寄存器间接寻址,在寄存器间接寻址方式中,应在寄存器名称前面加前缀标志
此文档下载收益归作者所有