《湖南工大单片机辅助课件第3章MCS-51系列单片机的指令系统.ppt》由会员分享,可在线阅读,更多相关《湖南工大单片机辅助课件第3章MCS-51系列单片机的指令系统.ppt(125页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第三章 MCS-51单片机指令系统单片机指令系统本章内容本章内容寻址方式 指令的分类、格式及符号说明 分类指令掌握MCS-51指令系统的各种寻址方式掌握每条指令的格式、功能及用法掌握指令的操作过程中操作数的变化情况以及对标志位的影响。学会正确选用指令完成简单的任务学习目的学习目的MCS-51指令系统共有255种操作代码,用汇编语言表达时,只需熟记42种助记符就能表示33种指令功能共111条指令。3.1 寻址方式寻址方式 MCS-51的指令系统共用了七种寻的指令系统共用了七种寻址方式。址方式。3.1.1寄存器寻址以寄存器的内容为操作数的寻址方式。可进行寄存器寻址的寄存器有:工作寄存器R0R7、A
2、、B、DPTR和进位CY。MOV A,R0 ;A R0例如例如:R0(35H)A结果结果A=35H 指令码中直接含有所需的操指令码中直接含有所需的操作数,操作数字前加作数,操作数字前加“#”符号为符号为前缀。以区别直接地址。使用时一前缀。以区别直接地址。使用时一定要注意!定要注意!立即寻址立即寻址 特点特点功能:功能:功能:功能:(1 1)将片内将片内将片内将片内RAMRAM中中中中4444HH单元单元单元单元 的内容送累加器的内容送累加器的内容送累加器的内容送累加器A A,属于直属于直属于直属于直 接寻址;接寻址;接寻址;接寻址;(2 2 2 2)则是把则是把则是把则是把4444HH这个数本
3、这个数本这个数本这个数本 身送到累加器身送到累加器身送到累加器身送到累加器A A,属于立即寻址。属于立即寻址。属于立即寻址。属于立即寻址。(1)MOV A,44H ;A (44H)(2)MOV A,#44H ;A 44H例例 直接寻址指令的指令码中含有操作数地址。可用于访问可用于访问程序存储器程序存储器,也可用,也可用于访问于访问数据存储器数据存储器。直接寻址功能:将片内将片内RAMRAM56H56H单元中的内容单元中的内容3434H H送到累加器送到累加器A A中。中。如左图如左图3.13.1例:例:例:例:MOVA,56H;A(56H)机器码:E55634H片内RAM34H累加器A56H
4、图3.1 指令传递 3.1.4寄存器间接寻址指令指定寄存器中的内容为操作数的地址。工作寄存器R0、R1和专用寄存器DPTR可用于间接寻址,在寄存器前加“”符号作前缀。MOVA,R0;AR0MOVA,R0;A(R0)例如:R065H,65H26H如图3.2所示,所示,执行结果A65H,执行结果A26H。注意:是它区别寄存器寻址的标志。26H片内RAMA65H图3.2R065H3.1.5相对寻址相相对对寻寻址址是是将将程程序序计计数数器器PC中中的的当当前前内内容容与与指指令令第第二二字字节节所所给给出出的的数数相加,其和为跳指令的转移地址。相加,其和为跳指令的转移地址。2000200080268
5、026HHSJMPSJMPrelrel;PC PC+2+relPC PC+2+rel程序存储器A图3-3 指令过程PC 26H0000H2000H2001H80H26H2028H02H20H A L U2002H例例3.1.6变址寻址以DPTR和PC基址寄存器和累加器A变址寄存器的内容和为地址,寻址该地址单元,读取数据。(1)MOVCA,APC;A(APC)(2)MOVCA,ADPTR;A(ADPTR)执执执执行行行行第第第第一一一一条条条条时时时时先先先先使使使使当当当当前前前前PCPC值值值值加加加加1 1,然然然然后后后后把把把把这这这这个个个个加加加加1 1后后后后的的的的PCPC值值
6、值值和和和和累累累累加加加加器器器器A A中中中中的的的的偏偏偏偏移移移移量量量量相相相相加加加加,作作作作为为为为操操操操作作作作数数数数地地地地址址址址,从从从从该该该该地地地地址址址址中中中中取取取取出出出出操操操操作作作作数数数数送送送送入入入入A A中。第二条过程与第一条指令类似,例如:中。第二条过程与第一条指令类似,例如:中。第二条过程与第一条指令类似,例如:中。第二条过程与第一条指令类似,例如:已已已已知知知知:片片片片外外外外ROMROM的的的的20062006HH单单单单元元元元中中中中有有有有一一一一数数数数3434HH,编编编编写写写写程程程程序序序序用用用用变变变变址址
7、址址寻寻寻寻址址址址方方方方法法法法把把把把这这这这个个个个数数数数送送送送入入入入A A中中中中,试试试试进进进进行分析。行分析。行分析。行分析。解解解解:根根根根据据据据题题题题目目目目要要要要求求求求,基基基基址址址址可可可可定定定定为为为为20002000HH,地地地地址偏移量则为址偏移量则为址偏移量则为址偏移量则为0606HH,程序如下:程序如下:程序如下:程序如下:MOVDPTR,2000H ;DPTR2000HMOVCA,ADPTR;A34HMOVA,06H ;A06H例例3.1程序存储器A图3.4DPTR2006H0000H34H2006H00HA L U 如图如图如图如图3.
8、43.4所示所示所示所示,这里这里这里这里A A具有双重作用,在具有双重作用,在具有双重作用,在具有双重作用,在指令执行前用来存放地址偏移量,指令执行指令执行前用来存放地址偏移量,指令执行指令执行前用来存放地址偏移量,指令执行指令执行前用来存放地址偏移量,指令执行后为目的操作数。后为目的操作数。后为目的操作数。后为目的操作数。3.1.7位寻址当当我我们们把把八八位位二二进进制制数数中中某某一一位位作作为为操操作作数数看看待待时时,这这个个操操作作数数的的地地址址就就称称为为位位地地址址,对对位位地地址址寻寻址址简简称称位位寻寻址。址。MOV 30H MOV 30H,C C ;30H 30H是位
9、寻址位地址是位寻址位地址是位寻址位地址是位寻址位地址 MOV A,30h MOV A,30h ;30H 30H是直接寻址的字节地址是直接寻址的字节地址是直接寻址的字节地址是直接寻址的字节地址 MOV MOVC,ACC.7C,ACC.7 ;CyACC.7CyACC.7 由由由由上上上上面面面面指指指指令令令令可可可可知知知知,位位位位寻寻寻寻址址址址的的的的位位位位地地地地址址址址与与与与直直直直接接接接寻寻寻寻址址址址的的的的字字字字节节节节地地地地址址址址形形形形式式式式完完完完全全全全一一一一样样样样,主主主主要要要要由由由由操操操操作作作作码码码码来区分,使用时需应该特别注意。来区分,使
10、用时需应该特别注意。来区分,使用时需应该特别注意。来区分,使用时需应该特别注意。例如例如 本本节节主主要要论论述述指指令令格格式式、指指令令的的三三种种表表示示形形式式、指指令令字字节节数数、指指令令分分类类和和指令系统综述指令系统综述等五个问题。等五个问题。3.2 指令系统指令系统 指令格式是指令码的结构形式。表达形式为:指令格式是指令码的结构形式。表达形式为:指令格式是指令码的结构形式。表达形式为:指令格式是指令码的结构形式。表达形式为:指令格式 标标号号又又称称为为指指令令地地址址符符号号,一一般般由由1-1-6 6个符组成,以字母开头的字母数字串。个符组成,以字母开头的字母数字串。标号
11、标号:操作码操作码操作数操作数;注释注释 操操作作码码用用MCS-51MCS-51单单片片机机所所规规定定的的助助记记符符来来表示,它命令表示,它命令CPUCPU作何种操作。作何种操作。注释注释是对该指令作用或功能的说明,以便于是对该指令作用或功能的说明,以便于阅读,不参与编译阅读,不参与编译(可有可无,不是必备的可有可无,不是必备的)。注注释部分前一定要用分号释部分前一定要用分号“;”隔开。隔开。操操作作数数分分为为目目的的操操作作数数和和源源操操作作数数,常常用用符符号号(如如寄寄存存器器、标标号号)、常常量量(如如立立即即数数、地地址址值值等等)来来表表示示。操操作作码码和和操操作作数数
12、之之间间用用若若干干空空格格分分隔隔,而而目目的的操操作作数数和和源源操操作作数数之之间间用用逗逗号号“,”分隔。分隔。指令的三种表达形式 通常,指令有二进制,十六制和助记符等三通常,指令有二进制,十六制和助记符等三种表示形式种表示形式 1)1)指令的二进制形式指令的二进制形式指令的二进制形式指令的二进制形式 具具具具有有有有难难难难读读读读、难难难难写写写写、难难难难记记记记忆忆忆忆和和和和难难难难修修修修改改改改等等等等缺缺缺缺点点点点,因因因因此此此此人们通常不用它来编写程序。人们通常不用它来编写程序。人们通常不用它来编写程序。人们通常不用它来编写程序。2)2)指令的十六进制形式指令的十
13、六进制形式指令的十六进制形式指令的十六进制形式 虽然读写方便,但仍不易为人们识别和修改,通虽然读写方便,但仍不易为人们识别和修改,通虽然读写方便,但仍不易为人们识别和修改,通虽然读写方便,但仍不易为人们识别和修改,通常也不被用来编写程序,常也不被用来编写程序,常也不被用来编写程序,常也不被用来编写程序,3)指令的助记符形式指令的助记符形式 又又又又称称称称为为为为指指指指令令令令的的的的汇汇汇汇编编编编符符符符或或或或汇汇汇汇编编编编语语语语句句句句形形形形式式式式,是是是是一一一一种种种种由英文单词或缩写字母形象表征指令功能的形式由英文单词或缩写字母形象表征指令功能的形式由英文单词或缩写字母
14、形象表征指令功能的形式由英文单词或缩写字母形象表征指令功能的形式。如果累加器如果累加器如果累加器如果累加器A A中已有一个加数中已有一个加数中已有一个加数中已有一个加数2020,那么能够完,那么能够完,那么能够完,那么能够完成成成成20206 6并把结果送入累加器并把结果送入累加器并把结果送入累加器并把结果送入累加器A A的加法指令的的加法指令的的加法指令的的加法指令的:二进制形式二进制形式二进制形式二进制形式为为为为:0011100000000110:0011100000000110B;B;十六进制形式十六进制形式十六进制形式十六进制形式为为为为:3806:3806H;H;助记符形式助记符形
15、式助记符形式助记符形式为:为:为:为:ADD ADDA A,06H ;A A+06H06H ;A A+06H例如例如3.2.3指令的字节数MCS-51MCS-51单单单单片片片片机机机机通通通通常常常常可可可可以以以以分分分分为为为为单单单单字字字字节节节节、双双双双字字字字节和三字节节和三字节节和三字节节和三字节指令三种。指令三种。指令三种。指令三种。(1)(1)单字节指令(单字节指令(4949条)条)单字节指令只有一个字节。通常又可分为两类:单字节指令只有一个字节。通常又可分为两类:单字节指令只有一个字节。通常又可分为两类:单字节指令只有一个字节。通常又可分为两类:1 1)无操作数单节指令
16、)无操作数单节指令这这这这类类类类指指指指令令令令的的的的指指指指令令令令码码码码光光光光有有有有操操操操作作作作码码码码字字字字段段段段,操操操操作作作作数数数数是隐含在操作码中的。是隐含在操作码中的。是隐含在操作码中的。是隐含在操作码中的。这这这这类类类类指指指指令令令令的的的的指指指指令令令令码码码码有有有有操操操操作作作作码码码码字字字字段段段段和和和和专专专专门门门门用用用用来来来来指示操作数所在寄存器号的字段组成。指示操作数所在寄存器号的字段组成。指示操作数所在寄存器号的字段组成。指示操作数所在寄存器号的字段组成。例如:八位数传送指令例如:八位数传送指令例如:八位数传送指令例如:八
17、位数传送指令 MOV MOVA A,RnRn其中,其中,其中,其中,n n的取值范围为的取值范围为的取值范围为的取值范围为0 07 7。2 2)含有操作数寄存器号的单字节指令)含有操作数寄存器号的单字节指令双字节指令含有两个字,操作码字节在前,双字节指令含有两个字,操作码字节在前,双字节指令含有两个字,操作码字节在前,双字节指令含有两个字,操作码字节在前,操作数字节在后。操作数字节在后。操作数字节在后。操作数字节在后。例如:八位数传送指令例如:八位数传送指令例如:八位数传送指令例如:八位数传送指令 MOV MOV A,A,data ;Adatadata ;Adata 这这这这条条条条指指指指令
18、令令令的的的的含含含含义义义义是是是是指指指指令令令令码码码码第第第第二二二二字字字字节节节节datadata取出来存放到累加器取出来存放到累加器取出来存放到累加器取出来存放到累加器A A中中中中2)2)双字节指令(双字节指令(4646条)条)这类指令的指令码的第一字节为操作码,第这类指令的指令码的第一字节为操作码,第这类指令的指令码的第一字节为操作码,第这类指令的指令码的第一字节为操作码,第 二字节为操作数或操作数地址。二字节为操作数或操作数地址。二字节为操作数或操作数地址。二字节为操作数或操作数地址。故三字节指令共可有如下四类故三字节指令共可有如下四类故三字节指令共可有如下四类故三字节指令
19、共可有如下四类:操作码操作码操作码操作码Data15-8Data15-8Data7-0Data7-0例如:指令例如:指令例如:指令例如:指令MOV DPTRMOV DPTR,data16data16操作码操作码操作码操作码DirectDirectDataData例如:指令例如:指令例如:指令例如:指令MOVMOVdirectdirect,datadata3)3)三字节指令(三字节指令(1616条)条)操作码操作码操作码操作码DataDataDirect(rel)Direct(rel)例如:指令例如:指令例如:指令例如:指令CJNE A,#data,relCJNE A,#data,rel操作码操
20、作码操作码操作码Data15-8Data15-8Data7-0Data7-0例如:指令例如:指令例如:指令例如:指令LCALL addr16LCALL addr163.2.4指令的分类及符号说明 MCS-51单片机可以分为五类:单片机可以分为五类:1.指令分类指令分类2)算术运算指令算术运算指令4)位操作指令位操作指令3)逻辑运算指令逻辑运算指令1)数据传送指令数据传送指令5)控制转移指令控制转移指令2 2、符号的说明、符号的说明、符号的说明、符号的说明(1)Rn:表表示示当当前前选选中中的的寄寄存存器器区区的的8个个工作寄存器,工作寄存器,(n=0-7)中的一个。中的一个。(2)Ri:表表示
21、示寄寄存存器器间间接接寻寻址址,Ri只只能能 是是R0或或R1。(3)#data:8位位直直接接地地址址,实实际际使使用用时时 data应是应是00H-0FFH中的一个。中的一个。(4)#data16:表表示示包包含含在在指指令令中中的的16位位立立 即数。即数。(5)direct:表表示示8位位内内部部数数据据存存储储器器单单 元的地址。元的地址。(6)Addr16:表示表示16位的目的地址。位的目的地址。(7)Addr11:表示表示11位的目的地址。位的目的地址。(8)Rel:表示表示8位带符号的偏移量。位带符号的偏移量。(9)DPTR:为为数数据据指指针针,可可用用作作16位位 的地址寄
22、存器。的地址寄存器。(10)Bit:表表示示内内部部RAM或或专专用用寄寄存存器器中中 的直接寻址位。的直接寻址位。(11)A:累加器累加器ACC。(12)B:专专用用寄寄存存器器,用用于于MUL和和DIV指指 令中。令中。(13):为为间间址址寄寄存存器器或或基基址址寄寄存存器器的的前前 缀。如缀。如Ri,A+PC,A+DPTR。(14)/:位位操操数数的的前前缀缀,表表示示对对该该位位操操作作 数取反。如数取反。如/bit.(15)$:当前指令的地址。当前指令的地址。一、内部数据传送指令(一、内部数据传送指令(15条)条)这类指令的源操作数和目的操作这类指令的源操作数和目的操作数地址都在单
23、片机内部。数地址都在单片机内部。3.2.5数据传送指令 已已知知:R0R030H30H,试试问问执执行行如如下下指指令令后后累累加器加器A A、R3R3、30H30H、31H31H单元中内容各是什么?单元中内容各是什么?MOVMOVAA,#20H#20HMOVR3,#45HMOVR3,#45HMOVR0,#46HMOVR0,#46HMOV31H,#47HMOV31H,#47H(1)立即寻址型传送指令立即寻址型传送指令例例例例 3.2 3.2执行后,结果为执行后,结果为执行后,结果为执行后,结果为:A=20H,R3=45H,A=20H,R3=45H,(30H)=46H,(31H)=47H (30
24、H)=46H,(31H)=47H(2)直接寻址型传送指令 已已 知知:R1=20HR1=20H、(21H)=54H(21H)=54H、(22H)=55H(22H)=55H、(30H)=56H(30H)=56H,试试问问执执行行如如下下指指令令后后,结结果果A A、40H40H、R2R2、20H20H、和和P2P2口中的内容各是什么?口中的内容各是什么?MOVAMOVA,21H21HMOV40HMOV40H,A AMOVR2,22HMOVR2,22HMOVR1,21HMOVR1,21HMOVP2,30HMOVP2,30H结结 果果 为为:A=54HA=54H,(40H)=54H(40H)=54H
25、,R2=55HR2=55H,(20H)=54H(20H)=54H,P2=56HP2=56H例例例例 3.3 3.3 3.3 3.3(3)寄存器寻址传送指令寄存器寻址传送指令 已知已知已知已知:R1=30HR1=30H、R2=31HR2=31H、(56H)=23H(56H)=23H,试试试试问执行以下指令后,结果各是什么?问执行以下指令后,结果各是什么?问执行以下指令后,结果各是什么?问执行以下指令后,结果各是什么?MOVA,R1MOVA,R1MOVR2,AMOVR2,AMOV56H,R1MOV56H,R1结果为:结果为:A=30HA=30H,R2=30HR2=30H,(56H)=30H(56H
26、)=30H例例例例 3.4 3.4 3.4 3.4(4)寄存器间址传送指令寄存器间址传送指令 已知:已知:(30H)=12H、(31H)=13H、R0=30H、R1=31H,试问执行以下指令后试问执行以下指令后A、30H、31H和和32H各是什么?各是什么?MOVA,R0MOVR1,AMOVR0,#34hMOV32h,R1执行后,A=12H,30H=34H,31H=12H,32H=12H例例例例3.53.53.53.5 只有唯一的一条只有唯一的一条16位数传送指令,该指位数传送指令,该指令为:令为:MOVDPTR,Data ;DPTRdata16 (1)十六位数据传送指令十六位数据传送指令二、
27、外部数据传送指令(二、外部数据传送指令(7条)条)该指令共有以下二条:该指令共有以下二条:该指令共有以下二条:该指令共有以下二条:MOVCMOVCA A,A ADPTRDPTR;A(AA(ADPTR)DPTR)MOVCMOVCA A,A APC PC;PCPC+1,A(APCPC+1,A(APC)PC)(2)外部外部ROM的字节数指令的字节数指令 已已知知:片片外外20082008H H单单元元中中有有一一个个数数为为3434H H,试试用用以以上上二二条条指指令令各各写写一一个个程程序序,把把数数送送到到外外内内7 7FHFH单单元元中中。解:解:采用采用DPTRDPTR作为基址寄存器作为基
28、址寄存器ORG0000HORG0000HSJMPSTARTSJMPSTARTORG0030HORG0030HSTART:START:CLRACLRA;清空清空AAMOVDPTR,#2008HMOVDPTR,#2008H;表起始值表起始值MOVCA,A+DPTRMOVCA,A+DPTR;把把A A与与DPTRDPTR相加,相加,;结果结果A A34H34HMOV7FH,AMOV7FH,A;结果结果(7(7FH)=34HFH)=34HSJMP$SJMP$;停止停止例例3.63.6采用采用PCPC作为基址寄存器作为基址寄存器ORG0000HORG0000HSJMPSTARTSJMPSTARTORG2
29、000HORG2000H2000HSTART:2000HSTART:MOVAMOVA,05H05H;偏移量为偏移量为0505H,H,;因为该指令占因为该指令占;了二个字节数了二个字节数20022002H HMOVCMOVCA A,A+pcA+pc;首先将首先将PCPC1,1,则则;PC;PC2003,2003,然后然后;加加0505H H,则则PCPC指指向向;2008;2008单元单元MOV7FH,AMOV7FH,A;结果(结果(7 7FHFH)34H34HSJMP$SJMP$;停止停止(3)外部外部RAM的字节传送指令的字节传送指令该类型指令共有:该类型指令共有:MOVX A,Ri ;A(
30、Ri)MOVX Ri,A ;A(Ri)MOVX A,DPTR ;A(DPTR)MOVX DPTR,A ;A(DPTR)已已知知外外部部RAMRAM的的6060H H单单元元中中有有一一个个数数为为3030H H,试试编程把编程把3030H H送到片外送到片外RAMRAM的的20002000H H单元中。单元中。解解:上上面面虽虽都都是是片片外外RAMRAM的的地地址址单单元元,但但不不能能直直接接传传送送,必必须须经经过过累累加加器器A A的的转转送送,才才能能实实现现。程程序序如下:如下:ORG1000HORG1000HMOVR1,#60HMOVR1,#60H;R1=60H;R1=60HMO
31、VXA,R1MOVXA,R1;A30H;A30HMOVDPTR,#2000HMOVDPTR,#2000H;DPTR=2000H;DPTR=2000HMOVXDPTR,AMOVXDPTR,A;2000H30H;2000H30HSJMP$SJMP$;停止停止例例 3.7三、数据交换指令(三、数据交换指令(5条)条)SWAPA;A74A30XCHA,Rn;ARnXCHA,direct;A(direct)XCHA,Ri;A(Ri)XCHDA,Ri;A30(Ri)30 已已已已知知知知:片片内内2020H H单单元元有有一一个个数数为为3030H H,片片外外2020H H单单元有一个数为元有一个数为0
32、303H H,编程把二个数相互交换。编程把二个数相互交换。解:程序为:解:程序为:ORG0030HORG0030HMOVR0,#20HMOVR0,#20H;R030HR030HMOVXAMOVXA,R0R0;A03HA03HXCHA,R0XCHA,R0;A30HA30H,20H03H20H03HMOVXR0,AMOVXR0,A;30H20H30H20H(外部外部RAMRAM)SJMP$SJMP$;停止停止例例 3.8四、堆栈操作指令(四、堆栈操作指令(2 2条)条)PUSHdirect;SPSP+1,(SP)(direct)POPdirect;(SP)direct,SPSP-1第一条指令称为压
33、栈指令,用于把direct为地址的操作数传送到堆栈中去。第二条指令称为出栈指令。已知:(20H)=M1,(50H)=M2编程用堆栈指令把20H和50H单元中内容相交换。解:由堆栈所具备的原则,程序为:MOVSP,#60H;栈底首地址为60HPUSH20H;SPSP1,61HM1PUSH50H;SPSP1,62HM2POP20H;20M2,SPSP-1=61H例例3.9 该该类类指指令令是是其其核核心心,总总共共49条条,分分为为算算术术运运算算指指令令,逻逻辑辑运运算和移位指令等三大类。算和移位指令等三大类。3.2.6算逻运算和移位指令1、加法指令(13条)(1)不带进位位(Cy)加法(4条)
34、ADD A,Rn ADD A,directADD A,RjADD A,#data一、算术运算指令(一、算术运算指令(24条)条)试试分分析析执执行行如如下下指指令令后后,累累加加器器A A和和PSWPSW中各标志的变化情况如何?中各标志的变化情况如何?MOVMOVA,#5AHA,#5AHADDA,#6BHADDA,#6BH 解解:第第一一条条指指令令先先向向累累加加器器A A传传送送一一个个数数5 5AHAH,第第二二条条为为加加法法指指令令,机机器器执执行行加加法法指指令令时按带符号数运算。时按带符号数运算。例例 3.10竖式表示如图竖式表示如图3.63.6:A=01011010Bdata=
35、01101011B90107+)111000101B1CS1970CP1AC图图图图3.6 3.6 3.6 3.6 加法指令执行过程加法指令执行过程加法指令执行过程加法指令执行过程2.带进位位(Cy)加法(4条)ADDC A,RnADDC A,#dataADDC A,directADDC A,Ri已知:已知:A A8FH8FH、R1R120H20H、(、(20H20H)12H12H、(21H21H)0FEH0FEH和和CyCy1 1,试问试问CPUCPU依次执行以下依次执行以下指令后累加器指令后累加器A A和和CyCy中的值是多少。中的值是多少。a.a.ADDCA,R1ADDCA,R1b.b.
36、ADDCA,21HADDCA,21Hc.c.ADDCA,R1ADDCA,R1d.d.ADDCA,#7FHADDCA,#7FH解:操作结果应为:解:操作结果应为:a.A=0B0H,Cy=0b.A=8DH,Cy=1a.A=0B0H,Cy=0b.A=8DH,Cy=1c.A=0A2H,Cy=0d.A=0FH,Cy=1c.A=0A2H,Cy=0d.A=0FH,Cy=1例例 3.113.加1指令(5条)INCA;AA1INCRn;RnRn1INCdirect;(direct)(direct)1INCRi;(Ri)(Ri)1INCDPTR;DPTRDPTR1已知:已知:A A34H34H、R0R042H42
37、H、(、(43H43H)23H23H、DPTRDPTR3020H3020H,试问试问CPUCPU执行如下程序后执行如下程序后A A、R4R4、45H45H、R0R0、DPTRDPTR中的内容各是什么?中的内容各是什么?INCAINCAINCR0INCR0INC43HINC43HINCR0INCR0INCDPTRINCDPTR解:由加解:由加1 1指令的规则,上述指令执行后的的操指令的规则,上述指令执行后的的操作结果为:作结果为:A A35H35H、R0R043H43H、43H43H25H25H、DPTRDPTR3021H3021H。由于,加由于,加1 1指令在程序中频繁地出现,常用来修改地指令
38、在程序中频繁地出现,常用来修改地址和数据指针加址和数据指针加1 1处理。处理。例例 3.122、减法指令(8条)1)带进位位()带进位位(Cy)减法指令减法指令(4条条)SUBB A,RnSUBB A,Rn;A A+Rn+Cy;A A+Rn+CySUBB A,RjSUBB A,Rj;AA+;AA+(RiRi)+Cy+CySUBB A,directSUBB A,direct;AA+direct+Cy;AA+direct+CySUBB A,#dataSUBB A,#data;A A+data+Cy;A A+data+Cy试分析执行下列指令后,累加器试分析执行下列指令后,累加器A A和和PSWPSW
39、中中各标志位状态?各标志位状态?CLRCCLRCMOVAMOVA,#35H#35HSUBBASUBBA,#0B6H#0B6H解:第一条指令用于清标志位解:第一条指令用于清标志位CyCy;第二条第二条指令是对被减数送累加器指令是对被减数送累加器A A中;第三条指令是进中;第三条指令是进行减法指令,结果为:行减法指令,结果为:A=7FHA=7FH,PSWPSW为:为:0000011CyACF0Rs1 Rs0OV1P例例 3.142 2)减)减1 1指令(指令(4 4条)条)DEC A ;AA-1DEC Rn ;RnRn-1DEC direct ;direct(direct)-1DEC Ri ;(R
40、i)(Ri)-1已知:已知:A A10H10H、R1R13BH3BH、R7R734H34H、(60H60H)00H00H、(、(3BH3BH)0FFH0FFH,试分析,执试分析,执行如下程序后累加器行如下程序后累加器A A和和PSWPSW中各标志位状态?中各标志位状态?DECADECA DECR1DECR1DEC60HDEC60HDECR7DECR7 例例 3.15解:根据减解:根据减1 1指令功能,结果为:指令功能,结果为:A A0FH,P=10FH,P=1 3B3B0FEH,0FEH,PSWPSW不变不变6060H H0FFH,PSW0FFH,PSW不变不变 R7=33H,R7=33H,P
41、SWPSW不变不变特点特点特点特点3 3、十进制调整指令(、十进制调整指令(1 1条)条)1.BCD加法加法DA ADA A对对A中两个压缩中两个压缩BCD数相加之和调整为数相加之和调整为2位位BCD码数。码数。1)只能用在对)只能用在对BCD码数进行码数进行ADD或或ADDC操操 作后使用。作后使用。2)影响标志位:有进位时)影响标志位:有进位时 C1。试编程实现试编程实现4444H H86H86H的的BCDBCD加法程序,加法程序,并对其工作原理分析。并对其工作原理分析。解:相应解:相应BCDBCD加法程序为:加法程序为:MOVAMOVA,44H44H;A44H;A44HADDAADDA,
42、86H86H;A44;A4486860CAH0CAHDAADAA;A30H,Cy;A30H,Cy1,AC1,AC1 1SJMP$SJMP$;结束结束例例 3.16A=01000100Bdata=10000110B4486+)011010000B110100110000B011001010B130110B低4位9,加6调整高4位9,加6调整图图图图3.7 3.7 BCDBCD加法过程加法过程加法过程加法过程2.BCD2.BCD减法减法 MCS51单片机中没有十进制减法调整指令,因此,这里的BCD减法运算必须采用BCD补码运算法则。例例 3.17 已知:已知:已知:已知:M1M1M1M1和和和和M
43、2M2M2M2中分别存有被减数中分别存有被减数中分别存有被减数中分别存有被减数80808080和减数和减数和减数和减数25252525,试编程求差,并把结果存入,试编程求差,并把结果存入,试编程求差,并把结果存入,试编程求差,并把结果存入M3M3M3M3单元中。单元中。单元中。单元中。解:根据解:根据BCDBCD减法的实施步骤,程序如下:减法的实施步骤,程序如下:ORGORG0100H0100HCLRCLRC C;清清CyCyMOVMOVA A,9AH9AH;ABCD;ABCD模模100100SUBBSUBBA,M2A,M2;ABCD;ABCD减数的补数减数的补数ADDA,M1ADDA,M1;
44、A;A被减数减数的补数被减数减数的补数DAADAA;对对A A进行加法调整进行加法调整MOVM3,AMOVM3,A;存入存入M3M3BCDM3M3BCD差差CLRCCLRC;清清CyCySJMP$SJMP$;停止停止两位BCD数的模100BCD减数加60调整BCD差BCD减数减数的补数10011010B00100101B11110101B110101010101B01110101B10000000B+图图图图3.8 3.8 BCDBCD减法过程减法过程减法过程减法过程4、乘法和除法指令MULAB;ABBA,形成标志 C0积积255 OV1DIVAB;ABAB,形成标志乘法指令除法指令 C=0除
45、数除数0 OV1除数除数0 OV0 已已知知:有有两两个个8 8位位无无符符号号数数乘乘数数分分别别放放在在2020H H和和2121H H单单元元中中,试试编编写写程程序序把把相相乘乘积积的的低低8 8位位放放入入2222H H单单元元中中,积积的的高高8 8位位放放入入2323H H单元中。单元中。解:求8位无符号单字节乘法,可直接利用乘法指令来实现,程序为:例例 3.18 3.18ORG1000HORG1000HMOVR1MOVR1,#20H#20H;R1R1第一个乘数地址第一个乘数地址MOVAMOVA,R1R1;A A第一个乘数第一个乘数INCR1INCR1;修改乘数地址修改乘数地址M
46、OVBMOVB,R1R1;B B第二个乘数地址第二个乘数地址MULABMULAB;A*B=BAA*B=BAINCR1INCR1;修改目标单元地址修改目标单元地址MOVR1MOVR1,AA;22H22H积的低积的低8 8位位INCR1INCR1;修改目标单元地址修改目标单元地址MOVR1MOVR1,BB;23H23H积的高积的高8 8位位SJMP$SJMP$;停止停止共共20条,分为与、或、异或、条,分为与、或、异或、A操作指令。操作指令。(一)与指令(一)与指令ANL A,RnANL A,RiANL A,directANL A,#dataANL direct,AANL direct,#data
47、;A A Rn;A A(Ri);A A direct;A A#data;direct direct A;direct direct#data二、逻辑运算类指令二、逻辑运算类指令 已已知知:R0=20HR0=20H、(20H20H)=0FEH=0FEH,试试问问分分别别执执行行如如下下指指令令后后,累累加加器器A A和和2020H H单单元元中中内内容容各是什么?各是什么?MOVAMOVA,#20H#20HMOVAMOVA,#0FH#0FHANLAANLA,R0ANLAR0ANLA,20H20HMOVAMOVA,#0F0H#0F0HMOVAMOVA,#80H#80HANLAANLA,R0ANL2
48、0H,AR0ANL20H,A例例 3.19解解:根根据据逻逻辑辑乖乖指指令令功功能能,上上述述指指令令执执行行后后的的操作结果为:操作结果为:A=20HA=20H,(,(20H20H)=0FEH=0FEHA=0EHA=0EH,(,(20H20H)=0FEH=0FEHA=0F0HA=0F0H,(,(20H20H)=0FEH=0FEHA=80HA=80H,(,(20H20H)=80H=80HORLA,RnORLA,Rn;A;AA ARnRnORLA,directORLA,direct;A;AA AdirectdirectORLA,RiORLA,Ri;A;AA A(Ri)(Ri)ORLA,#data
49、ORLA,#data;A;AA AdatadataORLdirect,AORLdirect,A;direct;direct(direct)(direct)A AORLdirect,#dataORLdirect,#data;direct;direct(direct)(direct)datadata(二)或指令(二)或指令已已知知:A A0AAH0AAH和和P2P20FFH0FFH,编编程程把把累累加加器器A A中低中低4 4位送入位送入P2P2口低口低4 4位,位,P2P2口高位不变。口高位不变。解解:程程序序思思路路为为:根根据据逻逻辑辑与与、逻逻辑辑或或二二类类指指令进行合用来实现令进行合用
50、来实现ORGORG0030H0030HANLA,ANLA,0FH0FH;屏蔽屏蔽A A中的高中的高4 4位位,低低4 4位不变位不变ANLANLP2P2,0F0H0F0H;屏蔽屏蔽P2P2中的低中的低4 4位,高位,高4 4位不变位不变ORLORLP2P2,A A;装配数据,结果送装配数据,结果送P2P2SJMPSJMP$;结束结束例例 3.20XRL A,RnXRL A,Rn;AA;AA RnRnXRL A,directXRL A,direct;AA;AA (direct)(direct)XRL A,RiXRL A,Ri;AA;AA (Ri)(Ri)XRL A,#dataXRL A,#dat