好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

【大学课件】MCS51单片机的指令系统P74.ppt

74页
  • 卖家[上传人]:大米
  • 文档编号:584716436
  • 上传时间:2024-08-31
  • 文档格式:PPT
  • 文档大小:763.52KB
  • / 74 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第三章第三章 MCS-51单片机的指令系统单片机的指令系统        本章介绍本章介绍MCS-51单片机的指令格式、寻单片机的指令格式、寻址方式址方式(包括立即寻址、直接寻址、寄存器寻址、包括立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、基址加变址寄存器间接寻址、寄存器间接寻址、基址加变址寄存器间接寻址、相对寻址、隐含寻址等七种方式相对寻址、隐含寻址等七种方式)、指令系统、指令系统(包包括数据传送类、算术运算类、逻辑运算类、位括数据传送类、算术运算类、逻辑运算类、位操作类、控制转移类等五大类指令操作类、控制转移类等五大类指令)通过本章通过本章的学习,要求学生能够熟练掌握的学习,要求学生能够熟练掌握MCS-51单片机单片机的指令功能和应用的指令功能和应用 指令格式指令格式•指令的表示方法称之为指令格式,其内容包括指指令的表示方法称之为指令格式,其内容包括指令的长度和指令内部信息的安排等令的长度和指令内部信息的安排等•          一条指令通常由操作码和操作数两部分组一条指令通常由操作码和操作数两部分组成•操作码规定指令所完成的操作,操作数表示操操作码规定指令所完成的操作,操作数表示操作的对象。

      操作数可能是一个具体的数据,也可作的对象操作数可能是一个具体的数据,也可能是指出取得数据的地址或符号能是指出取得数据的地址或符号 单片微机执行指令的过程单片微机执行指令的过程•单片微机执行指令的过程,分为取指令和执行单片微机执行指令的过程,分为取指令和执行指令两项基本内容指令两项基本内容•在取指阶段,单片微机从程序存储器中取出指在取指阶段,单片微机从程序存储器中取出指令操作码,送到指令寄存器令操作码,送到指令寄存器IR中,通过指令译码中,通过指令译码器的译码,产生一系列的控制信号器的译码,产生一系列的控制信号•在指令执行阶段中,利用指令译码产生的控制在指令执行阶段中,利用指令译码产生的控制信号,进行本指令规定的操作信号,进行本指令规定的操作  •51指令系统专用于指令系统专用于51系列单片机,是一个具有系列单片机,是一个具有255种操作码种操作码 (00H至至FFH,除,除A5H外外) 的集合•用汇编语言表达操作代码时,用汇编语言表达操作代码时,42种助记符代种助记符代表了表了33种功能,有的功能如数据传送,可以有几种功能,有的功能如数据传送,可以有几种助记符,如种助记符,如MOV、、MOVC、、MOVX。

      •指令功能助记符与操作数各种寻址方式的结合,指令功能助记符与操作数各种寻址方式的结合,共构造出共构造出111种指令,同一种指令所对应的操作码种指令,同一种指令所对应的操作码可以多至可以多至8种种 (如指令中如指令中Rn对应寄存器对应寄存器R0~~R7) 寻址方式寻址方式 3.1 •寻址寻址:在指令中给出的寻找操作数或操作数所:在指令中给出的寻找操作数或操作数所在地址的方法在地址的方法•执行任何一条指令都需要使用操作数执行任何一条指令都需要使用操作数•89S5l指令系统中共有指令系统中共有7种寻址方式种寻址方式 •⒈⒈ 立即寻址立即寻址• •在指令中直接给出操作数,出现在指令中的操在指令中直接给出操作数,出现在指令中的操作数称为立即数作数称为立即数•在立即数前面必需加上前缀在立即数前面必需加上前缀“##”•     例如:指令例如:指令 MOV  DPTR,#,#1234H•指令功能:把指令功能:把16位立即数位立即数1234H送入数据指针送入数据指针DPTR中 •2..直接寻址直接寻址•在指令中直接给出操作数单元的地址在指令中直接给出操作数单元的地址 •例如:指令例如:指令 MOV  A,,3AH•功能:把片内功能:把片内RAM中中3AH单元内的数据传送给累加器单元内的数据传送给累加器A,如,如图图所示。

      所示•直接寻址方式只能给出直接寻址方式只能给出8位地址,限于片内位地址,限于片内RAM::•    ⑴⑴ 低低128单元,在指令中直接以单元地址形式给出单元,在指令中直接以单元地址形式给出•    ⑵⑵ 特殊功能寄存器,可以单元地址形式给出外,还可特殊功能寄存器,可以单元地址形式给出外,还可以寄存器符号形式给出直接寻址是访问特殊功能寄存器以寄存器符号形式给出直接寻址是访问特殊功能寄存器的唯一方法的唯一方法  •    3..寄存器寻址寄存器寻址• •         在指令中将指定寄存器的内容作为操作数在指令中将指定寄存器的内容作为操作数•     寄存器寻址方式中,用符号名称来表示寄存器寄存器寻址方式中,用符号名称来表示寄存器•     例如:指令例如:指令INC R0•功能:把寄存器功能:把寄存器R0的内容加的内容加1,再送回,再送回R0中由于操作数在由于操作数在R0中,指定了中,指定了R0,也就得到了操作,也就得到了操作数,如数,如图图所示 •寄存器寻址方式的寻址范围包括:寄存器寻址方式的寻址范围包括:•    ((1))4个寄存器组共个寄存器组共32个通用寄存器个通用寄存器。

      •指令中只能使用当前寄存器组通过指定指令中只能使用当前寄存器组通过指定PSW中中的的RS1、、RS0,以选择使用的当前寄存器组以选择使用的当前寄存器组•    ((2)部分特殊功能寄存器部分特殊功能寄存器•例如累加器例如累加器A、、AB寄存器对以及数据指针寄存器对以及数据指针DPTR  •4..寄存器间接寻址寄存器间接寻址•     在指令中给出的寄存器内容是操作数的地址,从该地在指令中给出的寄存器内容是操作数的地址,从该地址中取出的才是操作数址中取出的才是操作数•     寄存器间接寻址也需以寄存器符号名称的形式表示寄存器间接寻址也需以寄存器符号名称的形式表示•在寄存器间接寻址中,在寄存器的名称前面加前缀在寄存器间接寻址中,在寄存器的名称前面加前缀“@@”•例如:指令例如:指令ANL A,,@R1•       假定假定R1寄存器的内容是寄存器的内容是 60H,指令的功能是以,指令的功能是以 R1寄寄存器的内容存器的内容 60H为地址,将为地址,将60H地址单元的内容与累加器地址单元的内容与累加器A中的数相中的数相“与与” ,其结果仍存放在,其结果仍存放在A中、其功能示意请中、其功能示意请参见参见图图。

      •寄存器间接寻址的寻址范围:寄存器间接寻址的寻址范围:•     ⑴⑴ 片内片内RAM的低的低128单元,只能采用单元,只能采用R0或或R1为间址寄存器其形式为为间址寄存器其形式为@Ri((i==0,,1)•     ⑵⑵ 片外片外RAM 的的64 KB单元,使用单元,使用DPTR作为作为间址寄存器例如:间址寄存器例如:MOVX  A,@,@DPTR•     ⑶⑶ 片外片外RAM低低256单元,使用单元,使用R0或或R1作间址作间址寄存器•例如:例如:MOVX  A,@,@R0•     ⑷⑷ 堆栈区:堆栈操作指令堆栈区:堆栈操作指令PUSH和和POP,以,以SP作间址寄存器的间接寻址方式作间址寄存器的间接寻址方式 •⒌⒌ 相对寻址相对寻址•在指令中给出的操作数为程序转移的偏移量在指令中给出的操作数为程序转移的偏移量•在相对转移指令中,给出地址偏移量(以在相对转移指令中,给出地址偏移量(以“rel”表表示),把示),把PC的当前值加上偏移量就构成了程序转移的目的当前值加上偏移量就构成了程序转移的目的地址•转移的目的地址可用如下公式表示:转移的目的地址可用如下公式表示:•  目的地址目的地址==(转移指令所在地址+转移指令字节数转移指令所在地址+转移指令字节数)++rel•在在51的指令系统中,有许多条相对转移指令,这些指的指令系统中,有许多条相对转移指令,这些指令多数均为两字节指令.只有个别的是三字节的指令。

      令多数均为两字节指令.只有个别的是三字节的指令•偏移量偏移量rel是一个带符号的是一个带符号的8位二进制补码数,所能表位二进制补码数,所能表示的数的范围是一示的数的范围是一128~+~+127因此,以相对转移指令因此,以相对转移指令的所在地址为基点,向前最大可转移(的所在地址为基点,向前最大可转移(127十转移指令字十转移指令字节数)个单元地址,向后最大可转移(节数)个单元地址,向后最大可转移(128一转移指令字一转移指令字节数)个单元地址节数)个单元地址 •例如:指令例如:指令JC 80H•     若进位位若进位位C为为0,则程序计数器,则程序计数器PC中的内容中的内容加加2,即顺序往下;,即顺序往下;•     若进位位若进位位C为为1,则以程序计数器,则以程序计数器PC中当前值中当前值为基地址,加上偏移量为基地址,加上偏移量80H后所得结果作为该转后所得结果作为该转移指令的目的地址,其执行示意图如移指令的目的地址,其执行示意图如图图所示•指令的操作码存在指令的操作码存在 1000H单元,偏移量存在单元,偏移量存在 1001H单元执行该指令后,程序计数器单元执行该指令后,程序计数器PC 指向指向1002 H(即当前值)。

      这里(即当前值)这里80H即即–128,故,故1002H与与–128 (( 80H )相加(补码运算)后得)相加(补码运算)后得到转移地址到转移地址 0F82H •6..变址寻址变址寻址•以以DPTR或或PC为基址寄存器,累加器为基址寄存器,累加器A为变址为变址寄存器,以两者内容相加后形成的寄存器,以两者内容相加后形成的16位程序存储位程序存储器地址作为操作数地址器地址作为操作数地址•又称基址寄存器+变址寄存器间接寻址又称基址寄存器+变址寄存器间接寻址•例如:例如: MOVC A,@,@A++DPTR•功能:把功能:把DPTR和和A的内容相加所得到的程序的内容相加所得到的程序存储器地址单元的内容送存储器地址单元的内容送A •假定指令执行前:假定指令执行前: ((A)=)=54H,(,(DPTR)=)=1256H•     该指令的操作示意参见该指令的操作示意参见图图•        变址寻址形成的操作数地址为变址寻址形成的操作数地址为1256H++54H==12AAH,若,若12AAH单元的内容为单元的内容为00H,则该指,则该指令执行的结果是令执行的结果是A的内容为的内容为00H 。

      •89S51指令系统中的变址寻址指令有如下特点:指令系统中的变址寻址指令有如下特点:•     ⑴⑴ 变址寻址方式只能对程序存储器进行寻址变址寻址方式只能对程序存储器进行寻址 •     ⑵⑵ 变址寻址指令只有变址寻址指令只有3条条•       MOVC  A,,@A++DPTR•      MOVC  A,@,@A++PC•      JMP    @A++DPTR•         ⑶⑶ 这这3条指令都是单字节指令条指令都是单字节指令•     ⑷⑷ 变址寻址方式用于查表操作变址寻址方式用于查表操作 •7..位寻址位寻址•位寻址的寻址范围:位寻址的寻址范围:•((1)片内)片内RAM中的位寻址区中的位寻址区•    片内片内RAM中的单元地址中的单元地址20H~~2FH,共,共16个个单元单元128位,为位寻址区,位地址是位,为位寻址区,位地址是00H~~7FH•    例如例如 MOV C,,2BH指令的功能是把位寻址区的指令的功能是把位寻址区的2BH位状态送累加位位状态送累加位C•     ((2)) 可位寻址的特殊功能寄存器位可位寻址的特殊功能寄存器位•   可供位寻址的特殊功能寄存器共有可供位寻址的特殊功能寄存器共有11个,有个,有寻址位寻址位83位位 •寻址位在指令中有以下寻址位在指令中有以下4种表示方法:种表示方法:•    •直接使用位地址表示。

      直接使用位地址表示•    •单元地址加位例如单元地址加位例如 88H单元的位单元的位5,则表示,则表示为为88H.5•    •特殊功能寄存器符号加位、例如特殊功能寄存器符号加位、例如 PSW寄存器寄存器的位的位5,可表示为:为,可表示为:为 PSW .5•    •位名称表示方法,特殊功能寄存器中的一些寻位名称表示方法,特殊功能寄存器中的一些寻址位是有名称的,例如址位是有名称的,例如 PSW寄存器位寄存器位5为为F0标志标志位,则可使用位,则可使用F0表示该位表示该位 •对于指令中的操作数,因为指令操作常伴有从右对于指令中的操作数,因为指令操作常伴有从右向左传送数据的内容,所以常把左边操作数称为向左传送数据的内容,所以常把左边操作数称为目的操作数,而右边操作数称为源操作数目的操作数,而右边操作数称为源操作数•    89S51指令系统的指令系统的7种寻址方式概括起来如种寻址方式概括起来如表表3–1所列 7. 隐含寻址        操作数的地址隐含在操作码中,不需要指明,这种方式称为隐含寻址    不是明显的给出操作数地址,而是在指令中隐含着操作数的地址, 即要寻找的地址包含在操作码中。

      例如在单地址指令格式中,就是不明显的给出第二操作数的地址,而是以隐含的方式规定累加器作为第二操作数的地址    •⑴⑴ 单字节指令单字节指令•     指令只有一个字节,操作码和操作数同在一个指令只有一个字节,操作码和操作数同在一个字节中如如 MOV  A,,Rn   指令机器码为单字节指令机器码为单字节11001rrr,,其中其中rrr可表示为可表示为000~~111,分别代表,分别代表R0~~R7  •⑵⑵ 双字节指令:其中一个字节为操作码,另一个双字节指令:其中一个字节为操作码,另一个字节是操作数字节是操作数如如MOV  A,,#data   8位立即数位立即数data需占一个字节,需占一个字节,操作码也需一个字节操作码也需一个字节⑶⑶ 三字节指令:操作码占一个字节,操作数占两个三字节指令:操作码占一个字节,操作数占两个字节其中操作数既可能是数据,也可能是地址其中操作数既可能是数据,也可能是地址 •如如ANL  direct ,,#data  指令需指令需3个字节,第个字节,第1字字节为操作码,第节为操作码,第2字节为字节为8位直接地址位直接地址direct,第,第3字节为字节为8位立即数位立即数data。

      •从指令执行时间来看,单机器周期指令有从指令执行时间来看,单机器周期指令有64种,双机器周期指令有种,双机器周期指令有45种,只有乘法、除法指种,只有乘法、除法指令的执行时间为令的执行时间为4个机器周期在个机器周期在12MHz晶振条晶振条件下,件下,89S51的指令执行时间分别为的指令执行时间分别为1μS、、2μS、、4μS •指令分类指令分类•89S51的指令系统,共有的指令系统,共有111条指令,按其功能可条指令,按其功能可分为分为5大类:大类:•    ⑴⑴ 数据传送类指令(数据传送类指令(28条);条);•    ⑵⑵ 算术运算类指令(算术运算类指令(24条);条);•    ⑶⑶ 逻辑运算类指令(逻辑运算类指令(25条);条);•    ⑷⑷ 控制转移类指令控制转移类指令(17 条条);;•    ⑸⑸ 布尔操作(位)类指令(布尔操作(位)类指令(17条) 指令系统中使用符号说明指令系统中使用符号说明•Rn    n==0~~7,表示当前寄存器组的,表示当前寄存器组的8个通用寄个通用寄存器存器R0~~R7  中的一个中的一个 •Ri    i==0,,l,可用作间接寻址的寄存器,只,可用作间接寻址的寄存器,只能是能是R0、、R1 两个寄存器中的一个。

      两个寄存器中的一个•            direct   内部的内部的8位地址,既可以指片内位地址,既可以指片内RAM的低的低128个单元地址,也可以指特殊功能寄个单元地址,也可以指特殊功能寄存器的地址或符号名称,因此,存器的地址或符号名称,因此,direct表示直接表示直接寻址方式寻址方式•#data指令中所含的指令中所含的8位立即数位立即数•#data16 指令中所含的指令中所含的16位立即数位立即数 •addr16  16位目的地址位目的地址,只限于在只限于在LCALL和和LJMP指令中指令中    使用•  addr11  11位目的地址,只限于在位目的地址,只限于在ACALL和和AJMP指令指令中使用    •   rel   相对转移指令中的偏移量,为相对转移指令中的偏移量,为8位带符号数位带符号数为为 SJMP和所有条件转移指令所用转移范围为和所有条件转移指令所用转移范围为相相 对于下一条指令笫一字节地址的对于下一条指令笫一字节地址的-128~+~+127•    DPTR 数据指针数据指针•    bit      片内片内 RAM (包括部分特殊功能寄存器)(包括部分特殊功能寄存器)中的中的直接寻址位。

      直接寻址位 •A累加器• B B寄存器•  C     进位标志位,是布尔处理机中的累加器,进位标志位,是布尔处理机中的累加器,称之为称之为累加位• @@   间址寄存器的前缀标志间址寄存器的前缀标志•  /   位地址的前缀标志,表示对该位操作数取反位地址的前缀标志,表示对该位操作数取反•(( ×))     某寄存器或某单元的内容某寄存器或某单元的内容•((((×))由))由×寻址的单元中的内容寻址的单元中的内容•←    箭头左边的内容被箭头右边的内容所取箭头左边的内容被箭头右边的内容所取代 (1)(1)标号:用户定义的符号地址标号:用户定义的符号地址 (2)(2)操作码:该字段必不可少,表示指令进操作码:该字段必不可少,表示指令进行何种操作,即操作性质行何种操作,即操作性质3)(3)操作数:该字段可能有,可能没有操作数:该字段可能有,可能没有4)(4)注释:该字段不是汇编语言的功能部分,注释:该字段不是汇编语言的功能部分,只增加程序的可读性注释前要加只增加程序的可读性注释前要加““; ;”” 1、内部数据传送指令内部数据传送指令 (1)以累加器A为目的地址的指令             指令                   操作          MOV  A,   Rn          (A)←(Rn)    MOV  A,   direct     (A)←(direct)    MOV  A,   @Ri       (A)←((Ri))       MOV  A,   #data     (A)←data         这组指令的功能是将源操作数送入累加器A中。

      源操作数的寻址方式分别为寄存器寻址、直接寻址、寄存器间接寻址和立即寻址方式  (2)以Rn为目的地址的指令               指令                         操作                      MOV  Rn, A               (Rn)←(A)                MOV  Rn, direct        (Rn)←(direct)              MOV  Rn, #data        (Rn)←data         这组指令的功能是将源操作数送入当前工作寄存器区R0~R7中的某一寄存器中源操作数的寻址方式分别为隐含寻址、直接寻址和立即寻址方式 (3)(3)以直接地址为目的地址的指令以直接地址为目的地址的指令 指令指令 操作操作 MOV  direct,A            (direct)←(A)         MOV  direct,Rn          (direct)←(Rn)         MOV  direct,@Ri        (direct)←((Ri))         MOV  direct1,direct2  (direct1)←(direct2)     MOV  direct,#data     (direct)← data 这组指令的功能是将源操作数送入由直这组指令的功能是将源操作数送入由直接地址指出的存储单元中。

      源操作数的寻址接地址指出的存储单元中源操作数的寻址方式分别为隐含寻址、寄存器寻址、寄存器方式分别为隐含寻址、寄存器寻址、寄存器间接寻址、直接寻址和立即寻址方式间接寻址、直接寻址和立即寻址方式 (4)以寄存器间接地址为目的地址的指令以寄存器间接地址为目的地址的指令 MOV @Ri,A ((Ri))←(A) MOV @Ri,direct ((Ri))←(direct) MOV @Ri,# data ((Ri))← data 这组指令的功能是将源操作数送入这组指令的功能是将源操作数送入R0或或R1间址的片内间址的片内RAM存储单元中源操作存储单元中源操作数的寻址方式分别为隐含寻址、直接寻址和数的寻址方式分别为隐含寻址、直接寻址和立即寻址方式立即寻址方式 注意:①目操可以是A、direct、Rn、@Ri中的任一个,源操可以是A、direct、Rn、@Ri、#data中的任一个②#data不能作目操③目操和源操不能同时出现Rn、@Ri④目操和源操不能同时为A⑤目操和源操可以同时为direct类型⑥目操和源操数据长度应保持一致。

      2. 外部数据传送指令 (1) 16位数据传送指令          指令                          操作                     MOV  DPTR, #data16      (DPTR) ← data16 (2)外部RAM数据传送指令MOVX 功能:实现片外数据存储器(或扩展I/O口)与累加器A之间的数据传送 指令 操作 MOVX A,@DPTR (A)←((DPTR)) MOVX A,@Ri (A)←((Ri)) MOVX @DPTR,A ((DPTR))←(A) MOVX @Ri,A ((Ri))←(A) (3)外部ROM数据传送指令MOVCMOVC A, @A+PC ;(A)←((A)+(PC)) MOVC A, @A+DPTR;(A)←((A)+(DPTR)) 3. 数据交数据交换指令指令(1)字节交换指令XCH 指令 操作 XCH A, Rn (A)←→ (Rn) XCH A, direct (A) ←→ (direct) XCH A, @Ri (A) ←→ ((Ri)) (2)半字节交换指令XCHD 指令 操作 XCHD A,@Ri(A) 低4位←→((Ri))低4位 压栈过程压栈过程出栈过程出栈过程(1)压栈指令PUSH     指令                          操作                PUSH  direct           (SP)←(SP)+1                                      ((SP))←(direct)(2)出栈指令POP    指令                           操作                   POP  direct              (direct)←((SP))                                     (SP)←(SP)-14. 堆栈操作指令堆栈操作指令 算术运算类指令算术运算类指令 3.4MCS-51单片机算术运算指令包括: 加法指令带进位加法指令带进位减法指令加1指令减1指令十进制调整指令乘法和除法指令共24条 1、加法指令、加法指令(1)不带进位的加法指令ADD       指令                   操作                    ADD  A, Rn           (A)←(A)+(Rn)           ADD  A, direct      (A)←(A)+(direct)      ADD  A, @Ri        (A)←(A)+((Ri))      ADD  A, #data      (A)←(A)+ data    这组加法指令的功能是将源操作数和累加器A的内容相加,结果存放在A中。

      源操作数分别为寄存器寻址、直接寻址、寄存器间接寻址和立即寻址方式  (2)带进位加法指令ADDC 指令 操作 ADDC A, Rn (A)←(A)+(Rn)+CY ADDC A, direct (A)←(A)+(direct)+CY ADDC A, @Ri (A)←(A)+((Ri))+CY ADDC A, #data (A)←(A)+ data +CY 这组指令的功能是将源操作数、进位标志 CY和累加器A的内容相加,结果存放在A中ADDC指令对标志位的影响与ADD指令相同,这条指令多用于多字节加法运算,使得在进行高字节加法时,考虑到低位字节向高位字节的进位情况 (3)加1指令INC 指令 操作 INC A (A)←(A)+1 INC Rn (Rn)←(Rn)+1 INC direct (direct)←(direct)+1 INC @Ri ((Ri))←((Ri))+1 INC DPTR (DPTR)←(DPTR)+1 这组指令的功能是将源操作数加1,结果仍送给源操作数(因此源操也是目操)。

      若原来为0FFH,则将溢出为00H本组指令除指令INC A影响P标志外,其余不影响任何标志,操作数可采用寄存器寻址、直接寻址或寄存器间接寻址方式 (4)BCD码加法调整指令DA 指令 操作DA A 对(A)进行二—十进制调整BCD码是指用4位二进制编码形式表示1位十进制数0~9如果一个字节存放两位BCD码数,则称为压缩BCD码数调整原则为:如果相加结果的低4位大于9(即出现字母),或AC=1,则进行加06H调整;如果相加结果的高4位大于9(即出现字母),或CY=1,则进行加60H调整调整结果仍存放在A中 2. 减法指令减法指令(1)带进位减法指令SUBB 指令 操作 SUBB A,Rn (A)←(A)-(Rn)-CY SUBB A,direct (A)←(A)-(direct)-CY SUBB A, @Ri (A)←(A)-((Ri))-CY SUBB A, #data (A)←(A)-data—CY 这组指令的功能是将累加器A减去源操作数及进位标志CY,结果存放在A中。

      若需进行不带借位的减法运算,则应该先将CY清0,然后再执行SUBB指令 (2)减1指令DEC 指令 操作 DEC A (A)←(A)-1 DEC Rn (Rn)←(Rn)-1 DEC direct (direct)←(direct)-1 DEC @Ri ((Ri))←((Ri))-1 这组指令的功能是将源操作数减1,结果仍送给源操作数(因此源操也是目操)若原来为00H,减1后下溢为0FFH本组指令除指令DEC A影响P标志外,其余均不影响任何标志 3. 乘法指令乘法指令 MUL    指令  MUL  AB                  这条指令是把累加器A和寄存器B中的8位无符号二进制数相乘,16位乘积的低8位留在累加器A中,高8位存放在寄存器B中         如果乘积大于0FFH,则OV=1,否则OV=0CY标志总是被清0设(A)=50H,(B)=0A0H,执行指令:MUL  AB结果:(B)=32H,(A)=00H(即积为3200H),OV=1,CY=0。

         4. 除法指令除法指令DIV                                    指令  DIV  AB                     这条指令的功能是把累加器A中的8位无符号二进制数除以寄存器B中的8位无符号二进制数,所得商的整数部分存放在累加器A中,余数部分存放在寄存器B中          如果原来B的内容为0,即除数为0,则结果A和B的内容不定,且溢出标志位OV=1CY标志总是被清0设(A)=0FBH,(B)=12H,执行指令:DIV  AB结果为:(A)=0DH,(B)=11H,CY=0,OV=0  逻辑运算指令逻辑运算指令 3.5MCS-51单片机的逻辑运算指令包括:累加器A的逻辑操作指令两个操作数的逻辑与指令逻辑或指令及逻辑异或指令 共25条 1. 两个操作数的逻辑操作指令 (1)逻辑与指令ANL      指令                   操作                   ANL  A,Rn        (A)←(A)∧(Rn)       ANL  A,direct      (A)←(A)∧(direct)    ANL  A,@Ri       (A)←(A)∧ ((Ri))        ANL  A,#data      (A)←(A)∧ data         ANL  direct,A      (direct)←(direct)∧(A)   ANL  direct,#data  (direct)←(direct)∧ data  (2)逻辑或指令ORL   指令                    操作                    ORL  A,Rn        (A)←(A)∨(Rn)     ORL  A,direct      (A)←(A)∨(direct)   ORL  A,@Ri       (A)←(A)∨ ((Ri))      ORL  A,#data      (A)←(A)∨ data        ORL  direct,A      (direct)←(direct)∨(A) ORL  direct,#data   (direct)←(direct)∨ data  (3)逻辑异或指令XRL          指令            操作                    XRL  A,Rn        (A)← (A)⊕(Rn)        XRL  A,direct      (A)← (A)⊕(direct)       XRL  A,@Ri       (A)← (A)⊕((Ri))       XRL  A,#data      (A)← (A)⊕data         XRL  direct,A      (direct)← (direct)⊕(A)   XRL  direct,#data  (direct)← (direct)⊕data  2. 累加器A的逻辑操作指令 (1)清0指令  指令            操作        CLR  A        (A)←00H     这条指令的功能是将累加器A清0。

      只影响P标志2)取反指令  指令           操作_CPL  A        (A)←  这条指令的功能是将累加器A的每一位逻辑取,不影响标志 (3)左循环移位指令             指令           操作                                       RL  A                这条指令的功能是将累加器A的内容向左循环移1位,ACC.7移入ACC.0不影响标志 (4)带进位左循环移位指令 指令 操作 RLC A 这条指令的功能是将累加器A的内容和进位标志(CY)一起向左循环移1位,ACC.7移入CY,CY移入ACC.0影响进位标志和奇偶标志,不影响其它标志 (5)右循环移位指令      指令                   操作                        RR  A                                  累加器A的内容向右循环移1位ACC.0移入ACC.7。

      不影响标志6)带进位右循环移位指令    指令                    操作                   RRC  A        累加器A的内容和进位标志CY的内容一起向右循环移1位,ACC.0移入CY,CY移入ACC.7影响进位标志和奇偶标志,不影响其它标志 (7)累加器半字节交换指令    指令            操作                  SWAP  A        (A)7~4←→(A)3~0         这条指令的功能是将累加器A的高4位与低4位互换,不影响标志位 位操作类指令位操作类指令 3.61.位传送指令位传送指令 指令 操作 MOV C,bit C←bit MOV bit,C bit←C 这组指令的功能是在以bit表示的位和位累加器C之间进行数据传送 2. 位修改指令位修改指令 指令 操作 CLR C C←0 CLR bit bit←0 CPL C C← CPL bit bit← SETB C C←1 SETB bit bit←1 这组指令的功能是将指定的位清0、取反或置1 3. 位位逻辑操作指令操作指令(1)位逻辑与指令 指令 操作 ANL C,bit C←C∧bit ANL C, C←C∧这组指令是将指定的位地址单元内容(或取反后的内容)与位累加器C的内容进行逻辑与操作,结果送入C中,源位地址单元内容不变。

      (2)位逻辑或指令 指令 操作 ORL C,bit C←C∨bit ORL C, C←C∨这组指令与ANL指令类似,是将指定位地址单元中的内容(或取反后的内容)与位累加器C进行逻辑或操作,结果送入C中 控制转移类指令控制转移类指令 3.7控制转移指令分:无条件转移指令条件转移指令调用和返回指令 共有22条 1. 无条件转移指令(1)绝对转移指令        AJMP  addr11 (2)相对转移指令                              SJMP  rel (3)长转移指令        LJMP  addr16        ;(PC)←addr16(4)基址寄存器加变址寄存器间接转移指令(散转指令)       JMP  @A+DPTR     (PC)←(A)+(DPTR)   2. 条件转移指令(1)条件满足转移指令    指令指令            转移条件转移条件 JZ rel (A)JZ rel (A)==0;0;若累加器若累加器A A内容为内容为0 0,则转移,则转移JNZ rel (A)≠0;JNZ rel (A)≠0;若累加器若累加器A A内容不为内容不为0 0,则转移,则转移JC rel CY=1;JC rel CY=1;若进位标志若进位标志CY=1CY=1,则转移,则转移JNC rel CY=0;JNC rel CY=0;若进位标志若进位标志CY=0CY=0,则转移,则转移JB bit,rel bit=1;JB bit,rel bit=1;若直接寻址位值为若直接寻址位值为1 1,则转移,则转移JNB bit,rel bit=0;JNB bit,rel bit=0;若直接寻址位值为若直接寻址位值为0 0,则转移,则转移JBC bit,rel bit=1;JBC bit,rel bit=1;若直接寻址位值为若直接寻址位值为1 1,则转移,则转移, , 然后将该位清然后将该位清0 0 (2)比较不等转移指令CJNE A, direct, rel CJNE A,#data,rel CJNE Rn,#data,rel CJNE @Ri,#data,rel 这组指令的功能是比较指令中两个操作数的值是否相等,如果它们的值不相等,则转移,转移目的地址为PC当前值(本指令地址加3)与偏移量rel相加所得地址。

      如果第一操作数(无符号数)小于第二操作数,则置CY=1,否则CY=0如果两数相等,则程序顺序执行下一条指令 (3)减1不为0转移指令(循环转移指令) DJNZ Rn,rel DJNZ direct,rel 这组指令的功能是将第一操作数减1,结果仍送回第一操作数如果结果不为0,则转移,目的地址为PC当前值(本指令地址加2或3)与偏移量rel相加所得地址如果结果为0,则程序顺序执行下一条指令这组指令常用于循环计数,允许编程者把工作寄存器或片内RAM单元用作程序循环计数器 3. 调用和返回指令    MCS-51单片机的调用指令为ACALL和LCALL,调用返回指令为RET (1)绝对调用指令    ACALL  addr11     该指令的操作为:(PC)←(PC)+2;(SP)←(SP)+1,((SP))←(PCL);(SP)←(SP)+1,((SP))←(PCH);(PC10~PC0) ←addr11,(PC15~PC11)不变 (2)长调用指令                      LCALL  addr 16                     该指令的操作为:(PC)←(PC)+3;(SP)←(SP)+1,((SP))←(PCL);(SP)←(SP)+1,((SP))←(PCH);(PC)←addr 16。

      3)返回指令 ① 调用子程序返回指令                       RET               操作:(PCH)←((SP)),(SP)←(SP)-1;(PCL)←((SP)),(SP)←(SP)-1使得CPU从堆栈中弹出的PC值处开始执行程序② 中断返回指令                       RETI   4. 空操作指令空操作指令 NOP 该指令无任何操作,执行该指令仅使PC加1,然后继续执行下条指令NOP在时间上占用一个机器周期,因此常用于软件延时程序 本章小结本章小结1、介绍了指令格式和寻址方式2、寻址方式就是寻找操作数地址的方式3、 对MCS-51单片机的数据传送类、算术运算类、逻辑运算类、位操作类及控制转移类这五大类指令进行了详细的介绍与分析。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.