《第三章MCS-51单片机指令系统课件.ppt》由会员分享,可在线阅读,更多相关《第三章MCS-51单片机指令系统课件.ppt(77页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第三章第三章第三章第三章 MCS-51MCS-51单片机指令系统单片机指令系统单片机指令系统单片机指令系统 13-1 汇编语言汇编语言一、指令系统一、指令系统指令:是CPU能够识别并指挥计算机执行某种操作的命令。指令系统:CPU所有指令的集合,称为该计算机的指令系统。2二、汇编语言二、汇编语言 (参见参见P97)编写程序时使用的程序设计语言有编写程序时使用的程序设计语言有3种:机器语种:机器语言、汇编语言和高级语言。言、汇编语言和高级语言。机机器器语语言言:用用二二进进制制代代码码表表示示,故故又又称称指指令令代代码码或或机机器器代代码码(机机器器码码),机机器器语语言言是是计计算算机机本本身
2、身固固有有的的软软件件,能能被主机直接识别并加以分析和执行之。被主机直接识别并加以分析和执行之。缺点:不易阅读、不便于记忆、编程烦难且易出错。缺点:不易阅读、不便于记忆、编程烦难且易出错。汇编语言汇编语言:助记符:助记符用以反映指令的功能和主要特征,用它来代替机器指令,用以反映指令的功能和主要特征,用它来代替机器指令,便于人们对指令的理解和记忆。便于人们对指令的理解和记忆。3n例:例:要将一个立即数要将一个立即数80H送入累加器送入累加器A,其指令为:其指令为:机器码:机器码:74H80H汇编语言:汇编语言:MOVA,#80Hn汇编:汇编语言汇编:汇编语言机器语言机器语言n反汇编:机器语言反汇
3、编:机器语言汇编语言汇编语言41.机器码指令机器码指令(P60)以以8位位二二进进制制数数(字字节节)为为基基础础,分分单单字字节节、双双字字节节和和三三字字节指令。其格式为:节指令。其格式为:单字节指令:单字节指令:双字节指令:双字节指令:三字节指令:三字节指令:2汇编语言格式汇编语言格式(P99)标号标号:操作码操作码操作数操作数1,操作数操作数2,操作数操作数3;注释注释只有操作码是必须的只有操作码是必须的操作码操作码地址码地址码操作码操作码地址码地址码数据或地址码数据或地址码操作码操作码数据或地址码数据或地址码数据或地址码数据或地址码5n标号标号:可无,由用户定义,根据需要设置。以字母
4、开始,后面:可无,由用户定义,根据需要设置。以字母开始,后面加加07个字母或数字,并允许有一个下划线;另外,系个字母或数字,并允许有一个下划线;另外,系统保留使用的字符或字符组不能用作标号。统保留使用的字符或字符组不能用作标号。标号标号代表该指令所在的地址(符号地址)代表该指令所在的地址(符号地址),可作为其它指可作为其它指令的操作数,与操作码之间用令的操作数,与操作码之间用“:”分隔。分隔。n操作码操作码:决定:决定(命令命令)主机做何操作。主机做何操作。25个字母或数字个字母或数字,用助记用助记符表示,一般为英语单词的缩写。符表示,一般为英语单词的缩写。n操作数操作数:03个,中间用个,中
5、间用“,”隔开,是指令操作的对象,分目隔开,是指令操作的对象,分目的操作数和源操作数。的操作数和源操作数。操作码和操作数是指令的核心部分,二者之间操作码和操作数是指令的核心部分,二者之间需用空需用空格分离格分离。n注释注释:对指令或程序的解释,可有可无,其作用是便于阅读对指令或程序的解释,可有可无,其作用是便于阅读理解程序。注释必须以理解程序。注释必须以“;”开始。开始。63伪指令伪指令(P100)用用于于提提供供汇汇编编控控制制信信息息,可可以以定定义义程程序序段段的的首首地地址址、变量、参数、表格等。变量、参数、表格等。不是不是CPU能执行的指令,为汇编程序所识别并指导能执行的指令,为汇编
6、程序所识别并指导汇编如何进行。汇编如何进行。7定位伪指令定位伪指令(起始地址伪指令)(起始地址伪指令)n格式:格式:ORGaddr16n作作用用:指指出出该该伪伪指指令令后后面面的的程程序序编编译译后后的的机机器器码码指令存贮地址的起始值指令存贮地址的起始值addr16。定义字节常数伪指令定义字节常数伪指令n格式:格式:DBX1,X2,X3,Xnn作用:定义一个常数表(作用:定义一个常数表(8bit););Xi为单字节数据,为单字节数据,也可以是单引号括起来的字符串也可以是单引号括起来的字符串,还可以是用户还可以是用户定义的数据符号。定义的数据符号。8例例:ORG1000HDB30H,31H,
7、32H,33HDB4,5,0011B结果:结果:地址地址1000H 1001H 1002H 1003H 1004H 1005H 1006H 数据数据 30H 31H32H33H 34H03H35H 9定义字伪指令定义字伪指令n格式:格式:DWY1,Y2,Y3,Ymn作用:定义一个常数表(作用:定义一个常数表(16bit),),Yi为双字节数据为双字节数据例:例:ORG 1000H DW1122H,5566H,30H 依依出出现现的的先先后后顺顺序序存存,高高位位 存低地址单元,低位存高地址单元存低地址单元,低位存高地址单元(先存高八位,后存低八位)(先存高八位,后存低八位)结果结果:1000H
8、 1001H 1002H 1003H 1004H 1005H 11H00H22H 66H55H30H10位定义伪指令位定义伪指令(BIT)格式:格式:X BIT 位地址位地址 其中,位地址可以是绝对地址,也可以是符号地址。其中,位地址可以是绝对地址,也可以是符号地址。例:例:ABC BIT P0.6 ;把把P0.6位地址赋值给位地址赋值给ABC 即:在后面的编程中,即:在后面的编程中,ABC即可作为位地址即可作为位地址P3.1使用。使用。11等效伪指令等效伪指令格式:格式:XEQUY作用:将作用:将X与与Y等效,便于阅读和修改程序。等效,便于阅读和修改程序。X为代号,以字母开头,为代号,以字母
9、开头,18个字符,个字符,Y为地址或立即数。为地址或立即数。n例例:定义一个单元:定义一个单元K=35H,则:则:KEQU35H1)MOVA,K;等价于等价于MOVA,35H;实现的功能是实现的功能是A(35H)此处此处K表示内部表示内部RAM中中35H字节字节单元单元(K代表地址代表地址)2)MOV C,K ;等价于等价于MOV C,35H ;实现的功能是实现的功能是C(35H位)位)此处此处K表示内部表示内部RAM中中35H位位单元单元(K代表地址代表地址)12有些汇编系统定义参数也采用以下有些汇编系统定义参数也采用以下形式:形式:例:例:CODEEQU45HMOVA,#CODE等价于等价
10、于MOVA,#45H(6)汇编结束伪指令汇编结束伪指令n格式:格式:ENDn作用:通知汇编程序需汇编的源程序到此结束,汇编作用:通知汇编程序需汇编的源程序到此结束,汇编程序对程序对END后的所有语句均不汇编。汇编语言程序的后的所有语句均不汇编。汇编语言程序的最后一句必须是最后一句必须是END,一个程序中只允许出现一条一个程序中只允许出现一条END语句。语句。13三、数据形式三、数据形式 二进制数二进制数:0、1表示表示,后带后带字母字母B,例:例:10101100B十进制数十进制数:09组成,后什么都组成,后什么都不带或带不带或带D,例:例:37十六进制数十六进制数:0F组成,后带组成,后带字
11、母字母H,例:例:2AH立即数立即数:“#”开头开头,后跟数值,后跟数值,例:例:23,12H行标号行标号:对应程序空间的:对应程序空间的16位地址,汇编时翻译成相位地址,汇编时翻译成相应的数据(即:地址),可直接用于程序中应的数据(即:地址),可直接用于程序中SFR符号符号:可作为直接地址用于程序:可作为直接地址用于程序例:例:MOVA,#01H等价于等价于MOV0E0H,#01H;因为因为A的地址是的地址是;0E0H143-2 寻址方式寻址方式(P54)定义定义:数据、指令代码在存贮器中存放的位置称为数据、指令代码在存贮器中存放的位置称为地址地址。存放指令代码的地址称为存放指令代码的地址称
12、为指令地址指令地址。存放数据的地址称为存放数据的地址称为操作数地址操作数地址。把寻找操作数地址的方式称为把寻找操作数地址的方式称为寻址方式寻址方式。寻找操作数地址的过程称为寻找操作数地址的过程称为寻址过程寻址过程。15一、立即寻址一、立即寻址n立立即即寻寻址址方方式式是是指指令令直直接接给给出出操操作作数数来来寻寻址址的的。(操操作作数数包包含含在在指指令令中中,即即以以指指令令字字节节形形式式存存放放在在程程序序存存贮贮器器中)中)n通常紧跟指令操作码之后的一个或二个字节数,就是寻通常紧跟指令操作码之后的一个或二个字节数,就是寻址所需的操作数。址所需的操作数。n“#”为立即数指令符号为立即数
13、指令符号n例如例如:指令:指令:MOVA,#70H(机器码机器码)双字节:双字节:74H70H操作码操作码操作数操作数另另:立即寻址还可用于寻址程序存储器:立即寻址还可用于寻址程序存储器例:例:LJMP1000H即:操作数直接在指令中给出即:操作数直接在指令中给出16二、直接寻址二、直接寻址 n直直接接寻寻址址方方式式是是指指令令直直接接给给出出操操作作数数地地址址。(该该地地址址指指出出了参与运算或传送的数据所在的字节或位单元的地址了参与运算或传送的数据所在的字节或位单元的地址)n直接寻址方式可直接寻址方式可访问以下三种地址空间访问以下三种地址空间:(1)特特殊殊功功能能寄寄存存器器地地址址
14、空空间间,这这是是唯唯一一能能访访问问SFR的的寻址方式寻址方式。(2)内部数据存贮器(内部数据存贮器(RAM)的低的低128字节。字节。(3)位地址空间(此时也可称为位寻址)。位地址空间(此时也可称为位寻址)。例:例:指令:指令:MOVA,65H;A(65H)机器码:机器码:E5H65H操作码操作码直接地址直接地址执行结果为将内部执行结果为将内部RAM65H单元单元的内容送的内容送A即:操作数在指令给出的地址单元中即:操作数在指令给出的地址单元中17三、寄存器寻址三、寄存器寻址 n寄寄存存器器寻寻址址是是对对指指定定的的工工作作寄寄存存器器(R0R7)进进行行读读/写写,由由指指令令操操作作
15、码码字字节节的的最最低低3位位指指明明所所寻寻址址的的工工作作寄寄存存器器。(对对A,B,DPTR,Cy等等,也也可可当当作作寄寄存存器器方方式式寻址)寻址)n例:例:INCR0;(;(R0)+1R0机器码:机器码:08H00001000B指明所用寄存器为指明所用寄存器为R0即:操作数在指定的寄存器中即:操作数在指定的寄存器中18四、寄存器四、寄存器间接间接寻址寻址n寄寄存存器器间间址址是是把把指指定定的的寄寄存存器器内内容容作作为为地地址址,由由该该地地址址所指定的单元内容作为操作数所指定的单元内容作为操作数。nMCS-51规定可作为间接寻址的寄存器有:规定可作为间接寻址的寄存器有:1)R0
16、或或R1,用于寻址内部用于寻址内部RAM低低128字节单元的内容。字节单元的内容。(以及外扩(以及外扩RAM的部分单元)的部分单元)2)数据指针数据指针DPTR,用于寻址外部数据用于寻址外部数据RAM的的64K字节字节空间空间注注:不能用本寻址方法寻址特殊功能寄存器。:不能用本寻址方法寻址特殊功能寄存器。n间址用符号间址用符号表示。表示。n例:例:MOVA,R0机器码:机器码:E6H即:操作数在寄存器中数据(地址)指向的存储单元内即:操作数在寄存器中数据(地址)指向的存储单元内19五、相对寻址五、相对寻址 n这与典型微计算机的相对寻址相似。这与典型微计算机的相对寻址相似。n它它以以PC的的当当
17、前前值值为为基基准准,加加上上指指令令中中给给出出的的相相对对偏偏移移量量(rel)形形成成有有效效转转移移地地址址。相相对对偏偏移移量量(rel)是是一一个个带带符符号号的的8位位二二进进制制数数,常常以以补补码码的的形形式式出出现现。因因此此,程程序序的的转转移移范范围围为为:以以PC的的当当前前值值为为起起始始地地址址。相相对对偏偏移移在在128+127个字节单元之间。个字节单元之间。例例:JCrel设设rel=75H,Cy=1,本指令地址为本指令地址为2000H则:执行后,则:执行后,PC=2002H+75H=2077H(本条指令的机器码为两个字节)本条指令的机器码为两个字节)n偏移量
18、偏移量rel:有:有符号数符号数128+127n相对寻址只适用于对相对寻址只适用于对程序存储器程序存储器的访问,转移指令多采用的访问,转移指令多采用这种寻址方式。这种寻址方式。20六、基寄存器加变址寄存器间接寻址六、基寄存器加变址寄存器间接寻址 (又称为变址寻址)(又称为变址寻址)n该寻址方式为该寻址方式为MCS-51所独特的。所独特的。n它它是是以以程程序序计计数数器器PC或或数数据据指指针针DPTR作作为为基基址址寄寄存存器器,以以累累加加器器A作作为为变变址址寄寄存存器器,这这二二者者内内容容之之和和为为有有效效地地址(址(16位)。位)。n共三条:共三条:MOVCA,A+PC;(A)+
19、(PC)AMOVCA,A+DPTR;(A)+(DPTR)AJMPA+DPTR;(A)+(DPTR)PCn专用于寻址专用于寻址程序存贮器程序存贮器,都是单字节指令。,都是单字节指令。21七位寻址七位寻址8051有位处理功能,可以对数据位进行操作,因有位处理功能,可以对数据位进行操作,因此就有相应的位寻址方式。此就有相应的位寻址方式。位寻址的位寻址的寻址范围寻址范围:(1)片内数据存储器中的位寻址区片内数据存储器中的位寻址区 片片内内数数据据存存储储器器中中的的字字节节单单元元地地址址20H2FH,16个个单单元元共共128位位,为为位位寻寻址址区区,位位地地址址是是00H7FH。对这对这128个
20、位的寻址使用直接位地址表示。个位的寻址使用直接位地址表示。(2)可位寻址的特殊功能寄存器位可位寻址的特殊功能寄存器位 可可供供位位寻寻址址的的特特殊殊功功能能寄寄存存器器共共有有11个个,有有寻寻址址位位83位。位。22寻址位寻址位在指令中有以下在指令中有以下4种表示方法种表示方法:直接使用位地址表示方法。例如直接使用位地址表示方法。例如12H 字字节节单单元元地地址址加加位位数数的的表表示示方方法法。例例如如 88H单单元元的的位位5,则表示为,则表示为88H.5。特特殊殊功功能能寄寄存存器器符符号号加加位位的的表表示示方方法法,例例如如 PSW寄寄存器的位存器的位5,可表示为:为,可表示为
21、:为 PSW.5。位位名名称称表表示示方方法法,特特殊殊功功能能寄寄存存器器中中的的一一些些寻寻址址位位是是有有名名称称的的,例例如如 PSW寄寄存存器器位位5为为F0标标志志位位,则则可可使用使用F0表示该位。表示该位。23说明:说明:指令中多个操作数的寻址方式未必相同指令中多个操作数的寻址方式未必相同 7种寻址方式概括起来如下表所列种寻址方式概括起来如下表所列:24表表 31 31 寻址方式与寻址空间寻址方式与寻址空间 寻寻 址址 方方 式式 寻寻 址址 空空 间间1寄存器寻址寄存器寻址R0R7、A、B、CY(bit)、DPTR2直接寻址直接寻址内部内部RAM低低128字节字节特殊功能寄存
22、器特殊功能寄存器3寄寄存存器器间间接接寻址寻址内部内部RAM:R0,R1,SP(仅(仅PUSH、POP)外部外部RAM(R0,R1,DPTR)4立即寻址立即寻址程序存储器程序存储器5变址寻址变址寻址程序存储器(程序存储器(A+PC,A+DPTR)6相对寻址相对寻址程序存储器程序存储器(PC偏移量偏移量)7位寻址位寻址内部数据存储器中有内部数据存储器中有128个可寻址位个可寻址位特殊功能寄存器中可位寻址的位特殊功能寄存器中可位寻址的位25注:注:1.1.对程序存储器对程序存储器,只有,只有3 3种寻址方式、种寻址方式、1 1种操作,即:种操作,即:n1)1)立即寻址;立即寻址;2)2)相对寻址相
23、对寻址 3)3)变址寻址:变址寻址:MOVC A,A+PCMOVC A,A+PC;MOVC A,A+DPTRMOVC A,A+DPTRn读操作读操作2.2.外部外部RAM 00HRAM 00H0FFH0FFHn只能用只能用R0,R1,DPTRR0,R1,DPTR间接寻址间接寻址n有两种操作,读:有两种操作,读:MOVX A,R0/R1/DPTRMOVX A,R0/R1/DPTR 写:写:MOVX R0/R1/DPTR,AMOVX R0/R1/DPTR,A3.3.外部外部RAM 0100HRAM 0100HFFFFHFFFFH多数用多数用DPTRDPTR寻址寻址有两种操作:读、写有两种操作:读、
24、写263-3 指令系统指令系统(P61)nMCS-51指令系统共指令系统共111条。条。49条单字节条单字节64条条1个机器周期(即个机器周期(即12个振荡周期)个振荡周期)45条双字节条双字节45条条2个机器周期个机器周期17条三字节条三字节2条条4个机器周期(乘、除法)个机器周期(乘、除法)n7种寻址方式。种寻址方式。n说明说明33种操作功能。种操作功能。n按功能分五类:按功能分五类:数据传送数据传送29算术运算算术运算24逻辑运算逻辑运算24位操作位操作17(12)控制转移控制转移17(22)27指令中用到的符号:指令中用到的符号:nRnR0R7;当当前前选选定定工工作作寄寄存存器器组组
25、的的R0R7工工作寄存器(作寄存器(n=07)nRiR0,R1;用用于于Ri,以以工工作作寄寄存存器器R0或或R1作作间间接寻址寄存器(接寻址寄存器(i=0,1),以间接寻址相应的单元。以间接寻址相应的单元。nDirect8位位直直接接地地址址;直直接接寻寻址址方方式式时时,用用以以表表示内部示内部RAM或特殊功能寄存器的直接地址。或特殊功能寄存器的直接地址。n#data8位立即数;指令中出现的位立即数;指令中出现的8位立即常数。位立即常数。n#data1616位位立立即即数数;指指令令中中出出现现的的16位位立立即即常数。常数。28nAddr1616位位地地址址;供供LCALL或或LJMP指
26、指令令使使用用,可可调调用用或或转转向向64KB外外部部程程序序存存储储器器地地址址空空间间的的任任何何单单元。元。nAddrll低低11位位地地址址,高高5位位地地址址与与下下一一条条指指令令重重合合;供供ACALL和和AJMP指指令令使使用用,使使程程序序调调用用或或转转向向包包含含下下一一条条指指令令的的第第一一个个字字节节在在内内的的2K字字节节范范围围内内程程序序存存储储器器地址空间。地址空间。nRel带带符符号号的的8位位相相对对偏偏移移量量(2的的补补码码),常常用用于于SJMP和和所所有有条条件件转转移移指指令令。范范围围为为相相对对于于下下一一条条指指令令的第一个字节为起始地
27、址的的第一个字节为起始地址的-128+127字节单元。字节单元。29nBit8位位直直接接位位地地址址;片片内内RAM(包包括括部部分分特殊功能寄存器)中的可寻址位。特殊功能寄存器)中的可寻址位。n间接寻址的前缀。间接寻址的前缀。n/位取反。位取反。n(x)x中的内容。中的内容。n(x)由由x中中的的数数据据所所寻寻址址的的单单元元的的内内容容;即:表示间接寻址的内容。即:表示间接寻址的内容。n或或表表示示数数据据传传送送方方向向,左左(或或右右)边边的的内容被右(或左)边的内容取代。内容被右(或左)边的内容取代。n表示数据交换。表示数据交换。30 一、数据传送指令(一、数据传送指令(29条)
28、条)n所谓所谓“传送传送”,即把源地址单元的内容传送到目的,即把源地址单元的内容传送到目的地址单元中去。源地址单元内容不变;或者源、目地址单元中去。源地址单元内容不变;或者源、目的单元内容互换。的单元内容互换。n此类指令是编程中用的最多、最频繁的基本指令此类指令是编程中用的最多、最频繁的基本指令311.以累加器以累加器A为目的操作数的指令为目的操作数的指令 nMOVA,Rn;(Rn)nMOVA,direct;A(direct)nMOVA,Ri;(Ri)nMOVA,#data;#datan功能:功能:把源操作数内容送把源操作数内容送A,源地址内容不变。源地址内容不变。n源操作数有寄存器寻址、直接
29、寻址、寄存器间址源操作数有寄存器寻址、直接寻址、寄存器间址和立即寻址方式。和立即寻址方式。322.以以Rn为目的操作数的指令为目的操作数的指令 nMOVRn,A;(A)nMOVRn,direct;Rn(direct)nMOVRn,#data;#datan功功能能:把把源源操操作作数数内内容容送送入入当当前前工工作作寄寄存存器器区区R0R7中中某一个寄存器。某一个寄存器。n源源操操作作数数寻寻址址方方式式有有寄寄存存器器A寻寻址址、直直接接寻寻址址、立立即即寻寻址址方式。方式。n注意注意:1)没没有有MOVRn,Ri类类指指令令,如如:MOVR3,R0为为错错误指令误指令2)没有没有MOVRn,
30、Rn类指令,如类指令,如MOVR3,R4为错为错n设当前设当前RS1,RS0=00,则则可用可用MOVR3,04H代替实现代替实现333.以直接地址为目的操作数以直接地址为目的操作数 nMOVdirect,A;(A)nMOVdirect,Rn;(Rn)nMOVdirect1,direct2;(direct)(direct2)nMOVdirect,Ri;(Ri)nMOVdirect,#data;#datan注意注意:特殊功能寄存器的名称可视为直接地址,如:特殊功能寄存器的名称可视为直接地址,如DPH,DPL,P0,P1等可等同各自的地址。等可等同各自的地址。344.以寄存器间址的单元为目的操作数
31、以寄存器间址的单元为目的操作数 nMOVRiA;AnMOVRi,direct;(Ri)(direct)nMOVRi,#data;#datan功功能能:将将累累加加器器A、直直接接地地址址单单元元内内容容或或立立即即数数送送入入Ri间间接寻址的单元中接寻址的单元中n源操作数有寄存器寻址,直接寻址,立即寻址方式。源操作数有寄存器寻址,直接寻址,立即寻址方式。n注意注意:Ri只能是只能是R0和和R1,即,即i=0或或1寻址范围为片内数据存储器寻址范围为片内数据存储器355.16位数据传递指令位数据传递指令 nMOVDPTR,#data16;DPTR#data16n功能功能:将:将16bit的立即数送
32、入数据指针的立即数送入数据指针DPTRn源操作数是立即寻址源操作数是立即寻址n注注:MCS-51系统只有这一条系统只有这一条16位数据传递指令。位数据传递指令。366.栈操作指令栈操作指令 PUSH(入栈)指令入栈)指令PUSHdirect;SP(SP)+1,(SP)(direct)入入栈栈操操作作:栈栈指指针针(SP)+1指指向向栈栈顶顶的的上上一一个个空空单单元元,将将直直接接地地址址(direct)寻寻址址的的单单元元内内容容压压入入当当前前SP所所指指示示的堆栈单元中。的堆栈单元中。POP(出栈)指令出栈)指令POPdirect;direct(SP),SP(SP)-1出出栈栈操操作作:
33、由由栈栈指指针针(SP)所所寻寻址址的的内内部部数数据据存存储储器器(堆堆栈栈)单单元元中中内内容容,送送入入直直接接地地址址寻寻址址的的单单元元中中,然然后后(SP)-1SP。注注:direct可以是有直接地址的特殊功能寄存器,可以是有直接地址的特殊功能寄存器,无无PUSHRn,POPRn类指令。类指令。377.累加器累加器A与外部数据存贮器传送指令与外部数据存贮器传送指令 nMOVXA,DPTR;A(DPTR)nMOVXDPTR,A;(DPTR)(A)nMOVXA,Ri;A(P2)()(Ri)nMOVXRi,A;(P2)()(Ri)(A)n功能功能:是:是累加器累加器A与外部数据存贮器与外
34、部数据存贮器之间传送一个字节之间传送一个字节的数据,采用间接寻址方式寻址外部数据存贮器。的数据,采用间接寻址方式寻址外部数据存贮器。38n注意注意:n该该组组指指令令是是CPU访访问问外外部部数数据据存存贮贮器器或或外外扩扩I/O口口的唯一指令。的唯一指令。n用用DPTR或或Ri间间接接寻寻址址可可指指向向外外部部数数据据RAM的的相相同同区区域域,只只是是DPTR为为16位位数数据据指指针针;而而Ri为为8位位,需需与与P2配合使用,合成配合使用,合成16位指针。位指针。398.查表指令查表指令(累加器与程序存储器累加器与程序存储器传送指令)传送指令)nMOVCA,A+PC;PC(PC)+1
35、,A(A)+(PC)nMOVCA,A+DPTR;PC(PC)+1,A(A)+(DPTR)n功能功能:分别以:分别以PC或或DPTR作基址寄存器,加上作基址寄存器,加上A的值的值(0255)得)得16位地址,将该地址所指向的程序存贮器单位地址,将该地址所指向的程序存贮器单元的内容送累加器元的内容送累加器A。409.交换指令交换指令 nXCHA,Rn;A(Rn)nXCHA,direct;A(direct)nXCHA,Ri;A(Ri)nXCHDA,Ri;A30(Ri)30nSWAP A;A30A7441小小 结结1源操作数不变(交换指令除外)源操作数不变(交换指令除外)2基本不影响标志位(对基本不影
36、响标志位(对PSW操作的指令除外)操作的指令除外)3大部分以大部分以“MOV”为操作符。为操作符。4注意指令区别注意指令区别:1)MOVA,30H与与MOVA,#30H2)MOVR0,A与与MOVR0,A3)MOVX与与MOVC5.注意不同指令操作的数据范围注意不同指令操作的数据范围42二、算术运算指令(二、算术运算指令(24条)条)n除增量(加除增量(加1),减量(减),减量(减1)指令外,均在)指令外,均在ACC中进行。中进行。n影响标志位的情况:影响标志位的情况:Cy、AC、OV(注注:加:加1、减、减1指令不影响标志位,乘除不影响指令不影响标志位,乘除不影响AC位)。位)。431.加法
37、指令加法指令(不需进位位)(不需进位位)Rn;(Rn)nADDA,direct;AA+(direct)Ri;(Ri)#data;#datan这组加法指令这组加法指令影响标志位影响标志位,即,即:若若bit7有进位,则有进位,则Cy=1否则否则Cy=0;若若bit3有进位,则有进位,则AC=1否则为否则为0;若若bit7和和bit6不同时有进位,不同时有进位,则则OV=1否则为否则为0;视结果视结果ACC中的奇偶情况,确定中的奇偶情况,确定P=1或或P=0。442.加法指令加法指令(带进位位)(带进位位)Rn;(Rn)nADDCA,direct;AA+Cy+(direct)Ri;(Ri)#dat
38、a;#datan两个源操作数,且使多字节数的加法成为可能。两个源操作数,且使多字节数的加法成为可能。n对对标志位的影响情况同标志位的影响情况同ADD指令指令n例例:(:(A)=53H(R0)=0FCHADDA,R001010011+)11111100 1)01001111 则:则:Cy=1;P=1;AC=0;OV=C7 C6=0 (C7=1;C6=1)453.二十进制调整指令二十进制调整指令 nDAAn功能功能:对:对A中的中的BCD码加法结果进行调整。码加法结果进行调整。n两两个个压压缩缩型型BCD码码,按按二二进进制制数数相相加加后后,必必须须经经本本指指令令调整才能得到正确的压缩型调整才
39、能得到正确的压缩型BCD码的和数。码的和数。n说说明明:BCD码码采采用用四四位位二二进进制制数数编编码码,并并且且只只采采用用了了其其中中的的十十个个编编码码,即即00001001,分分别别代代表表BCD码码09,而,而10101111为无效码。为无效码。46指令的操作为:指令的操作为:n若若(A30)9(即即累累加加器器A的的低低4位位数数值值大大于于9)或或者者(AC)=1(即即低低半半字字节节向向高高半半字字节节产产生生进进位位),则则A30(A30)+06H(即即将将A的的低低4位位内内容容加加6调调整整)以以产产生生低低4位位正正确确的的BCD码码值值。如如果果加加6调调整整后后,
40、低低4位位产产生生进进位位,且且高高4位位均均为为1时时,则则内内部部加加法法将将置置位位Cy,反反之之,并并不不清清零零Cy标标志位。志位。n同同时时,若若(A74)9(即即累累加加器器A的的高高4位位数数值值大大于于9)或或者者(Cy)=1(最最高高进进位位位位=1),则则高高4位位需需加加6调调正正,以以产产生生高高4位位的的正正确确BCD码码值值,即即A74(A74)+6。同同样样,在在加加6调调正正后后产产生生最最高高进进位位,则则置置位位Cy,反反之之,不不清清零零Cy。这这时时Cy的的置置位位,表表示示和和数数BCD码码值值100。这这对对多多字字节节十十进进制制加加法有用,不影
41、响法有用,不影响OV标志。标志。n由此可见,本指令是由此可见,本指令是根据累加器根据累加器A的原始数值和的原始数值和PSW的状态,的状态,对累加器对累加器A进行加进行加06H,60H或或66H的操作。的操作。47n例例1:(A)=56H,(R5)=67H,已已知知A,R5中中放放的的均均为为压缩压缩BCD码数,码数,Cy=1,则执行下列指令:则执行下列指令:ADDCA,R5;DAA;第第一一条条指指令令是是执执行行带带进进位位的的二二进进制制数数加加法法,相相加加后后(Cy)=0,(AC)=0,然然后后执执行行调调整整指指令令DAA。因因为为高高4位位值值为为11,大大于于9,低低4位位值值为
42、为14,大大于于9,所所以以内内部部需需进进行行加加66H操作,结果得操作,结果得124BCD码。即:码。即:(A)=01010110压缩型压缩型BCD:56(R5)=01100111压缩型压缩型BCD:67+)Cy110111110+01100110100100100124BCD:12448BCD码的减码的减1操作可用加操作可用加99来求得,条件是不计进位值。来求得,条件是不计进位值。例例2设累加器设累加器A中原中原BCD码值为码值为30H,执行下列指令执行下列指令 ADD A,#99H (A)=00110000 DA A,+)10011001 11001001 调正调正+)01100000
43、 1 00101001 执行相加后,执行相加后,A中内容为中内容为11001001B,高高4位值大于位值大于9,所以需,所以需加加60H调正。结果累加器中的值为压缩型调正。结果累加器中的值为压缩型BCD码码29,进位位,进位位(Cy)=1,即实际和数为即实际和数为129,若不计进位,则和数为,若不计进位,则和数为29,它与,它与30-1=29相当。相当。这说明对于十进制数加这说明对于十进制数加99H,相当于减相当于减1,条件是不计进位位,条件是不计进位位内容。内容。494.增量(加增量(加1)指令)指令 A;A(A););影响影响PRn;Rn(Rn)nINCdirect;direct(dire
44、ct)+1Ri;(;(Ri)(Ri)DPTR;DPTR(DPTR)n功能功能:把源操作数指定的单元内容加:把源操作数指定的单元内容加1后放回。后放回。n本组指令本组指令不影响标志位不影响标志位(例外例外:INCA影响奇偶标志影响奇偶标志)。505.减法指令减法指令 n减法指令减法指令都是带借位的都是带借位的,没有不带借位的减法指令。,没有不带借位的减法指令。Rn;(Rn)nSUBBA,direct;A(A)(direct)CyRi;(Ri)#data;#datan功能功能:从累加器中减去进位标志:从累加器中减去进位标志Cy和指定的变量,结果和指定的变量,结果存放在累加器存放在累加器A中。中。n
45、若第若第7位有借位,则置位有借位,则置位位Cy,否则否则Cy清清0。n若第若第3位有借位,则置位位有借位,则置位AC(辅助进位标志辅助进位标志),否则否则AC清清0n若第若第7和第和第6位中有一位借位,而另一位不借位,则置位溢位中有一位借位,而另一位不借位,则置位溢出标志出标志OV。溢出位溢出位OV用于带符号的整数减法,它用于带符号的整数减法,它(OV=1)表示一个正数减负数结果为负数或一个负数减表示一个正数减负数结果为负数或一个负数减正数结果为正数的错误结果。正数结果为正数的错误结果。n视结果视结果ACC中的奇偶情况,确定中的奇偶情况,确定P=1或或P=0。516.减量(减减量(减1)指令)
46、指令 A;A(A)(影响影响P)nDECRn;Rn(Rn)1Direct;direct(direct)Ri;(Ri)(Ri)n本组指令本组指令不影响标志位不影响标志位(例外例外:DECA影响影响P)。n无无DECDPTR指令指令(与(与INC指令的区别)指令的区别)n例例:(:(R0)=25H(25H)=2FHDECR0;则:(则:(R0)=25H,(,(25H)=2EH527.乘除法(无符号)乘除法(无符号)nMULAB;BA(A)*(B)功功能能:把把累累加加器器A和和寄寄存存器器B中中的的无无符符号号8位位整整数数相相乘乘,其其16位位 积积 的的 低低 位位 在在 A中中,高高 位位
47、在在 B中中,如如 果果 积积 大大 于于255(0FFH),则则OV=1否否则则OV=0,进进位位标标志志Cy总总是是清清“0”。nDIVAB;A(商)商)(A)/(B)B(余数)余数)功功能能:把把累累加加器器A中中8位位无无符符号号整整数数除除以以B寄寄存存器器中中8位位无无符符号号整整数数,所所得得结结果果商商的的整整数数部部分分存存于于累累加加器器A中中,余余数数部分存于寄存器部分存于寄存器B中。清零中。清零Cy和和OV标志位。标志位。注注:若:若B=0则则OV1,除法结果不确定。除法结果不确定。53小小 结结n除增量(加除增量(加1),减量(减),减量(减1)指令外:指令外:所有指
48、令都要用到所有指令都要用到ACC(无无ADD49H,#20H类指令类指令)所有指令都影响所有指令都影响PSW54三、逻辑操作类指令(三、逻辑操作类指令(24条)条)n分单操作数和双操作数两类,分单操作数和双操作数两类,一般都不影响标志位一般都不影响标志位。551.单操作数逻辑操作单操作数逻辑操作 n累加器累加器A清清0CLRA;A0影响影响Pn累加器累加器A取反取反CPL A;AA同上同上n累加器累加器A循环左移循环左移RL A;同上同上n带进位位循环左移带进位位循环左移RLCA;影响影响Cy、Pn累加器累加器A循环右移循环右移RR A;影响影响Pn带进位位循环右移带进位位循环右移RRCA;影
49、响影响Cy、P56图图 39 39 循环移位指令示意图循环移位指令示意图572.双操作数逻辑操作双操作数逻辑操作(1)逻辑与)逻辑与Rn;(Rn)nANLA,direct;A(A)(direct)Ri;(Ri)#data;#datanANLdirect,A;(direct)(direct)(A)#data;#datan以以A为目的操作数的指令影响为目的操作数的指令影响P,其余均不影响其余均不影响PSW58(2)逻辑或)逻辑或 Rn;(Rn)nORLA,direct;A(A)(direct)Ri;(Ri)#data;#datanORLdirect,A;(direct)(direct)(A)#da
50、ta;#datan以以A为目的操作数的指令影响为目的操作数的指令影响P,其余均不影响其余均不影响PSW59(3)逻辑异或逻辑异或 Rn;(Rn)nXRLA,direct;A(A)(direct)Ri;(Ri)#data;#datanXRLdirect,A;(direct)(direct)(A)#data;#datan例:例:XRLA,P1;P1为引脚,为引脚,XRLP1,#0FH;P1为口锁存器,读为口锁存器,读修改修改写操作写操作n以以A为目的操作数的指令影响为目的操作数的指令影响P,其余均不影响其余均不影响PSW60小小 结结操作数为字节寻址,但操作是按位进行的。操作数为字节寻址,但操作是