资源预览内容
第1页 / 共74页
第2页 / 共74页
第3页 / 共74页
第4页 / 共74页
第5页 / 共74页
第6页 / 共74页
第7页 / 共74页
第8页 / 共74页
第9页 / 共74页
第10页 / 共74页
亲,该文档总共74页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第三章 MCS-51单片机的指令系统,本章介绍MCS-51单片机的指令格式、寻址方式(包括立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、基址加变址寄存器间接寻址、相对寻址、隐含寻址等七种方式)、指令系统(包括数据传送类、算术运算类、逻辑运算类、位操作类、控制转移类等五大类指令)。通过本章的学习,要求学生能够熟练掌握MCS-51单片机的指令功能和应用。,http:/www.docin.com/sundae_meng,指令格式,指令的表示方法称之为指令格式,其内容包括指令的长度和指令内部信息的安排等。 一条指令通常由操作码和操作数两部分组成。 操作码规定指令所完成的操作,操作数表示操作的对象。操作数可能是一个具体的数据,也可能是指出取得数据的地址或符号。,http:/www.docin.com/sundae_meng,单片微机执行指令的过程,单片微机执行指令的过程,分为取指令和执行指令两项基本内容。 在取指阶段,单片微机从程序存储器中取出指令操作码,送到指令寄存器IR中,通过指令译码器的译码,产生一系列的控制信号。 在指令执行阶段中,利用指令译码产生的控制信号,进行本指令规定的操作,http:/www.docin.com/sundae_meng,51指令系统专用于51系列单片机,是一个具有255种操作码 (00H至FFH,除A5H外) 的集合。 用汇编语言表达操作代码时,42种助记符代表了33种功能,有的功能如数据传送,可以有几种助记符,如MOV、MOVC、MOVX。 指令功能助记符与操作数各种寻址方式的结合,共构造出111种指令,同一种指令所对应的操作码可以多至8种 (如指令中Rn对应寄存器R0R7) 。,3.1,http:/www.docin.com/sundae_meng,寻址:在指令中给出的寻找操作数或操作数所在地址的方法。 执行任何一条指令都需要使用操作数。 89S5l指令系统中共有7种寻址方式。,http:/www.docin.com/sundae_meng, 立即寻址 在指令中直接给出操作数,出现在指令中的操作数称为立即数。 在立即数前面必需加上前缀“”。 例如:指令 MOV DPTR,1234H 指令功能:把16位立即数1234H送入数据指针DPTR中。,http:/www.docin.com/sundae_meng,http:/www.docin.com/sundae_meng,2直接寻址 在指令中直接给出操作数单元的地址。 例如:指令 MOV A,3AH 功能:把片内RAM中3AH单元内的数据传送给累加器A,如图所示。 直接寻址方式只能给出8位地址,限于片内RAM: 低128单元,在指令中直接以单元地址形式给出。 特殊功能寄存器,可以单元地址形式给出外,还可以寄存器符号形式给出。直接寻址是访问特殊功能寄存器的唯一方法。,http:/www.docin.com/sundae_meng,http:/www.docin.com/sundae_meng,3寄存器寻址 在指令中将指定寄存器的内容作为操作数。 寄存器寻址方式中,用符号名称来表示寄存器。 例如:指令INC R0 功能:把寄存器R0的内容加1,再送回R0中。由于操作数在R0中,指定了R0,也就得到了操作数,如图所示。,http:/www.docin.com/sundae_meng,http:/www.docin.com/sundae_meng,寄存器寻址方式的寻址范围包括: (1)4个寄存器组共32个通用寄存器。 指令中只能使用当前寄存器组。通过指定PSW中的RS1、RS0,以选择使用的当前寄存器组。 (2)部分特殊功能寄存器。 例如累加器A、AB寄存器对以及数据指针DPTR。,http:/www.docin.com/sundae_meng,4寄存器间接寻址 在指令中给出的寄存器内容是操作数的地址,从该地址中取出的才是操作数。 寄存器间接寻址也需以寄存器符号名称的形式表示。 在寄存器间接寻址中,在寄存器的名称前面加前缀“”。 例如:指令ANL A,R1 假定R1寄存器的内容是 60H,指令的功能是以 R1寄存器的内容 60H为地址,将60H地址单元的内容与累加器A中的数相“与” ,其结果仍存放在A中、其功能示意请参见图。,http:/www.docin.com/sundae_meng,http:/www.docin.com/sundae_meng,寄存器间接寻址的寻址范围: 片内RAM的低128单元,只能采用R0或R1为间址寄存器。其形式为Ri(i0,1)。 片外RAM 的64 KB单元,使用DPTR作为间址寄存器。例如:MOVX A,DPTR。 片外RAM低256单元,使用R0或R1作间址寄存器。 例如:MOVX A,R0。 堆栈区:堆栈操作指令PUSH和POP,以SP作间址寄存器的间接寻址方式。,http:/www.docin.com/sundae_meng, 相对寻址 在指令中给出的操作数为程序转移的偏移量。 在相对转移指令中,给出地址偏移量(以“rel”表示),把PC的当前值加上偏移量就构成了程序转移的目的地址。 转移的目的地址可用如下公式表示: 目的地址(转移指令所在地址转移指令字节数)rel 在51的指令系统中,有许多条相对转移指令,这些指令多数均为两字节指令只有个别的是三字节的指令。 偏移量rel是一个带符号的8位二进制补码数,所能表示的数的范围是一128127。因此,以相对转移指令的所在地址为基点,向前最大可转移(127十转移指令字节数)个单元地址,向后最大可转移(128一转移指令字节数)个单元地址。,http:/www.docin.com/sundae_meng,例如:指令JC 80H 若进位位C为0,则程序计数器PC中的内容加2,即顺序往下; 若进位位C为1,则以程序计数器PC中当前值为基地址,加上偏移量80H后所得结果作为该转移指令的目的地址,其执行示意图如图所示。 指令的操作码存在 1000H单元,偏移量存在 1001H单元。执行该指令后,程序计数器PC 指向1002 H(即当前值)。这里80H即128,故1002H与128 ( 80H )相加(补码运算)后得到转移地址 0F82H。,http:/www.docin.com/sundae_meng,http:/www.docin.com/sundae_meng,6变址寻址 以DPTR或PC为基址寄存器,累加器A为变址寄存器,以两者内容相加后形成的16位程序存储器地址作为操作数地址。 又称基址寄存器变址寄存器间接寻址。 例如: MOVC A,ADPTR 功能:把DPTR和A的内容相加所得到的程序存储器地址单元的内容送A。,http:/www.docin.com/sundae_meng,假定指令执行前: (A)54H,(DPTR)1256H 该指令的操作示意参见图。 变址寻址形成的操作数地址为1256H54H12AAH,若12AAH单元的内容为00H,则该指令执行的结果是A的内容为00H 。,http:/www.docin.com/sundae_meng,http:/www.docin.com/sundae_meng,89S51指令系统中的变址寻址指令有如下特点: 变址寻址方式只能对程序存储器进行寻址 。 变址寻址指令只有3条 MOVC A,ADPTR MOVC A,APC JMP ADPTR 这3条指令都是单字节指令。 变址寻址方式用于查表操作。,http:/www.docin.com/sundae_meng,7位寻址 位寻址的寻址范围: (1)片内RAM中的位寻址区。 片内RAM中的单元地址20H2FH,共16个单元128位,为位寻址区,位地址是00H7FH。 例如 MOV C,2BH指令的功能是把位寻址区的2BH位状态送累加位C。 (2) 可位寻址的特殊功能寄存器位。 可供位寻址的特殊功能寄存器共有11个,有寻址位83位,http:/www.docin.com/sundae_meng,寻址位在指令中有以下4种表示方法: 直接使用位地址表示。 单元地址加位。例如 88H单元的位5,则表示为88H.5。 特殊功能寄存器符号加位、例如 PSW寄存器的位5,可表示为:为 PSW .5。 位名称表示方法,特殊功能寄存器中的一些寻址位是有名称的,例如 PSW寄存器位5为F0标志位,则可使用F0表示该位。,http:/www.docin.com/sundae_meng,对于指令中的操作数,因为指令操作常伴有从右向左传送数据的内容,所以常把左边操作数称为目的操作数,而右边操作数称为源操作数。 89S51指令系统的7种寻址方式概括起来如表31所列。,http:/www.docin.com/sundae_meng,7. 隐含寻址 操作数的地址隐含在操作码中,不需要指明,这种方式称为隐含寻址。 不是明显的给出操作数地址,而是在指令中隐含着操作数的地址, 即要寻找的地址包含在操作码中。例如在单地址指令格式中,就是不明显的给出第二操作数的地址,而是以隐含的方式规定累加器作为第二操作数的地址。,http:/www.docin.com/sundae_meng, 单字节指令 指令只有一个字节,操作码和操作数同在一个字节中。 如 MOV A,Rn 指令机器码为单字节11001rrr,其中rrr可表示为000111,分别代表R0R7,http:/www.docin.com/sundae_meng, 双字节指令:其中一个字节为操作码,另一个字节是操作数。 如MOV A,#data 8位立即数data需占一个字节,操作码也需一个字节。 三字节指令:操作码占一个字节,操作数占两个字节。其中操作数既可能是数据,也可能是地址。,http:/www.docin.com/sundae_meng,如ANL direct ,#data 指令需3个字节,第1字节为操作码,第2字节为8位直接地址direct,第3字节为8位立即数data。 从指令执行时间来看,单机器周期指令有64种,双机器周期指令有45种,只有乘法、除法指令的执行时间为4个机器周期。在12MHz晶振条件下,89S51的指令执行时间分别为1S、2S、4S。,http:/www.docin.com/sundae_meng,指令分类 89S51的指令系统,共有111条指令,按其功能可分为5大类: 数据传送类指令(28条); 算术运算类指令(24条); 逻辑运算类指令(25条); 控制转移类指令(17 条); 布尔操作(位)类指令(17条)。,http:/www.docin.com/sundae_meng,指令系统中使用符号说明,Rn n07,表示当前寄存器组的8个通用寄存器R0R7 中的一个。 Ri i0,l,可用作间接寻址的寄存器,只能是R0、R1 两个寄存器中的一个。 direct 内部的8位地址,既可以指片内RAM的低128个单元地址,也可以指特殊功能寄存器的地址或符号名称,因此,direct表示直接寻址方式。 #data 指令中所含的8位立即数。 #data16 指令中所含的16位立即数。,http:/www.docin.com/sundae_meng,addr16 16位目的地址,只限于在LCALL和LJMP指令中 使用。 addr11 11位目的地址,只限于在ACALL和AJMP指令 中使用。 rel 相对转移指令中的偏移量,为8位带符号数。为 SJMP和所有条件转移指令所用。转移范围为相 对于下一条指令笫一字节地址的-128127。 DPTR 数据指针。 bit 片内 RAM (包括部分特殊功能寄存器)中的 直接寻址位。,http:/
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号