单片机教程 第3章.ppt
单片机教程单片机教程 第第3章章第 3 章 MCS-51单片机指令系统 第第3章章MCS-51单片机指令系统单片机指令系统及汇编语言程序设计及汇编语言程序设计3.1指令系统简介指令系统简介3.2寻址方式寻址方式3.3指令系统指令系统3.4汇编语言程序设计基础汇编语言程序设计基础3.5程序设计举例程序设计举例3.6习题习题逻辑电路模拟指令部分上机第 3 章 MCS-51单片机指令系统 1.单字节指令单字节指令单字节指令格式由单字节指令格式由8位二进制编码表示位二进制编码表示,例如例如:CLRAE4H2.双字节指令双字节指令双双字字节节指指令令格格式式由由两两个个字字节节组组成成,操操作作码码和和操操作作数数,例例如如:MOVA,10H74H10H3.三字节指令三字节指令三字节指令格式中三字节指令格式中,第一个字节为操作码第一个字节为操作码,后两个字节为后两个字节为操作数操作数,例如例如:MOV40H,30H75H40H30H 3.1指令系统简介指令系统简介第 3 章 MCS-51单片机指令系统 一条汇编语言指令中最多包含 4 个区段,如下所示:标号标号:操作码操作码操作数操作数;注释注释 4 个区段之间要用分隔符分开:标号与操作码之间用“:”隔开,操作码与操作数之间用空空格格隔开,操作数与注释之间用“;”隔开,如果操作数有两个以上,则在操作数之间要用逗号“,”隔开 (乘法指令和除法指令除外 )。3.1.1指令格式指令格式第 3 章 MCS-51单片机指令系统 3.1.2指令分类及符号说明指令分类及符号说明1.按功能按功能,MCS-51指令系统可分为指令系统可分为5类类:(1)数据传送数据传送;(2)算术运算算术运算;(3)逻辑运算逻辑运算;(4)位操作位操作;(5)控制转移。控制转移。不同存储区用不同的传送指令不同存储区用不同的传送指令哪些位允许按位寻址哪些位允许按位寻址?位地址的表示方式。位地址的表示方式。第 3 章 MCS-51单片机指令系统 Rn当前选定的寄存器区中的当前选定的寄存器区中的8个工作寄存器个工作寄存器R0R7,即即n=07。Ri当前选定的寄存器区中的当前选定的寄存器区中的2个寄存器个寄存器R0、R1,i=0、1。direct8位位内部内部RAM单元单元的地址的地址,它可以是一个内部数据它可以是一个内部数据区区RAM单元单元(00H7FH)或或特殊功能寄存器地址。特殊功能寄存器地址。data指令中的指令中的8位常数。位常数。data16指令中的指令中的16位常数。位常数。2.描述指令的符号意义描述指令的符号意义P45第 3 章 MCS-51单片机指令系统 addr16 16 addr16 16 位的目的地址位的目的地址,用于用于 LJMP,LCALL LJMP,LCALL 指指 令令,可指向可指向 64 KB 64 KB 程序存储器地址空间。程序存储器地址空间。addraddr11 11 1111位的目的地址位的目的地址,用于用于AJMP,ACALLAJMP,ACALL指令。指令。目的地址必须与下一条指令的第一个字节在同目的地址必须与下一条指令的第一个字节在同 一个一个 2 KB 2 KB 程序存储器地址空间之内。程序存储器地址空间之内。relrel 8 8 位带符号的偏移量字节位带符号的偏移量字节,用于用于SJMP SJMP 和所有条和所有条 件转移指令中。件转移指令中。偏移量相对于下一条指令的第偏移量相对于下一条指令的第 一一个个字字节节计计算算,在在128128+127+127 范范围围内内取取值值。描述指令的符号意义描述指令的符号意义非数据存储器非数据存储器第 3 章 MCS-51单片机指令系统 描述指令的符号意义描述指令的符号意义bit内部数据内部数据RAM或或特殊功能寄存器中的可直接特殊功能寄存器中的可直接寻址位。寻址位。DPTR数据指针数据指针,可用作可用作16位的地址寄存器。位的地址寄存器。AA累加器。累加器。BB寄存器寄存器,用于用于 MUL MUL 和和 DIV DIV 指令中。指令中。20H2FH第 3 章 MCS-51单片机指令系统 3.1寻址方式寻址方式寻找操作数地址的方式寻找操作数地址的方式第 3 章 MCS-51单片机指令系统 在在MCS-51单片机指令系统中单片机指令系统中,有以下有以下7种寻址方式种寻址方式:(1)立即寻址立即寻址;(2)直接寻址直接寻址;(3)寄存器寻址寄存器寻址;(4)寄存器间接寻址寄存器间接寻址;(5)基址寄存器加变址寄存器间接寻址基址寄存器加变址寄存器间接寻址;(6)相对寻址相对寻址;(7)位寻址。位寻址。第 3 章 MCS-51单片机指令系统 1.立即寻址立即寻址立即寻址方式是指操作数包含在指令字节中。立即寻址方式是指操作数包含在指令字节中。如:如:MOVA,3AH;将立即数将立即数3AH送累加器送累加器A中中MOVDPTR,0DFFFH注意注意立即数前加立即数前加“#”号号第 3 章 MCS-51单片机指令系统 2.直接寻址直接寻址在指令中直接给出操作数的地址。在指令中直接给出操作数的地址。内部数据存储器的低内部数据存储器的低128个字节单元(个字节单元(00H7FH)。)。特殊功能寄存器。特殊功能寄存器。特殊功能寄存器只能用直接寻址方式进行访问。特殊功能寄存器只能用直接寻址方式进行访问。位地址空间。位地址空间。使用空间第 3 章 MCS-51单片机指令系统 例例:(1)MOVTCON,A(2)MOVA,P1(3)MOVA,76H(4)ADDA,43H第 3 章 MCS-51单片机指令系统 3.寄存器寻址寄存器寻址(1 1)参加操作的数存放在寄存器里。)参加操作的数存放在寄存器里。(2 2)寄存器包括)寄存器包括 8 8个工作寄存器个工作寄存器 R0R0R7R7,累加器累加器A A,寄寄 存器存器B B、数据指针、数据指针DPTRDPTR和布尔处理器的位累加器和布尔处理器的位累加器 C C。注意注意操作数类型要配对操作数类型要配对当前寄存器处于哪一个寄存器区当前寄存器处于哪一个寄存器区第 3 章 MCS-51单片机指令系统 例例:(1)MOVA,R1(2)ADDA,R1(3)MOVDPTR,#4321H第 3 章 MCS-51单片机指令系统 4.寄存器间接寻址寄存器间接寻址(1 1)寄存器的内容为操作数的地址。)寄存器的内容为操作数的地址。(2 2)寄存器间接寻址符号为)寄存器间接寻址符号为“”,”,(3 3)寻址内部)寻址内部 RAM RAM 区,区,只能使用寄存器只能使用寄存器 R0 R0、R1 R1 作为地址指针作为地址指针(4 4)访问外部)访问外部 RAM RAM 时时,可使可使 用用 R0 R0、R1 R1 及及 DPTR DPTR 作作 为地址指针。例如为地址指针。例如:第 3 章 MCS-51单片机指令系统 例例(1)MOV A,R0(2)MOV R1,76H(3)XCHDA,R0(4)MOVXDPTR,A(5)INCR1第 3 章 MCS-51单片机指令系统 5.基址寄存器加变址寄存器间接寻址基址寄存器加变址寄存器间接寻址(1 1)用于访问程序存储器中的数据表格)用于访问程序存储器中的数据表格;(2 2)它以基址寄存器)它以基址寄存器 DPTR DPTR 或或 PC PC 的内容为基本地址的内容为基本地址,加上变址寄存器加上变址寄存器 A A 的内容作为操作数的地址。的内容作为操作数的地址。如如 MOVCA,A+DPTRJMPA+DPTRMOVCA,A+PC第 3 章 MCS-51单片机指令系统 6.相对寻址相对寻址(1 1)以)以 PC PC 的内容为基本地址的内容为基本地址,加上指令中给定的加上指令中给定的 偏移量作地址增量。偏移量作地址增量。(2 2)偏移量是一个)偏移量是一个 8 8 位带符号的常数位带符号的常数,其范围为其范围为128128+127+127。(3 3)用于相对转移指令)用于相对转移指令,第 3 章 MCS-51单片机指令系统 例例(1)2000HSJMP08H;2字节指令字节指令目标地址目标地址=2000H+02H+08H=200AH(2)JZ30H;2字节指令字节指令(3)若若(A)=0,则则PC=PC+2+rel(4)若若(A)0,继续执行下一条继续执行下一条第 3 章 MCS-51单片机指令系统 7.位寻址位寻址操作数为二进制数中的位;操作数为二进制数中的位;PSW PSW 中的中的 CY CY 是位寻址区中的累加器;是位寻址区中的累加器;可按位寻址的位可按位寻址的位*内部内部RAM单元中单元中20H2FH区域中的位区域中的位*地址可用地址可用8整除的专用寄存器中的位。整除的专用寄存器中的位。第 3 章 MCS-51单片机指令系统 例例(1)MOV C,07H(2)SETB EX0第 3 章 MCS-51单片机指令系统 3.3指令系统指令系统MCS-51指令系统可分为指令系统可分为5类类:(1)数据传送数据传送;(2)算术运算算术运算;(3)逻辑运算逻辑运算;(4)控制转移。控制转移。(5)位操作位操作;第 3 章 MCS-51单片机指令系统 3.3.1数据传送指令数据传送指令1、特点、特点一般不影响标志位一般不影响标志位目的操作数为目的操作数为A的指令将影响的指令将影响P标志标志寻址方式寻址方式寄存器、寄存器间接、直接、立即、寄存器、寄存器间接、直接、立即、基址加变址基址加变址第 3 章 MCS-51单片机指令系统 2、数据传送指令、数据传送指令包括:包括:(1)片内数据存储器传送指令)片内数据存储器传送指令(2)片外数据存储器传送指令)片外数据存储器传送指令(3)程序存储器数据交换指令)程序存储器数据交换指令(4)数据交换指令)数据交换指令(5)堆栈操作指令)堆栈操作指令第 3 章 MCS-51单片机指令系统(1)片内数据传送指令片内数据传送指令1)以累加器为目的操作数以累加器为目的操作数2)MOV A,Rn3)MOV A,Ri4)MOV A,direct5)MOV A,#data6)指令功能:把源操作数的内容送入累加器指令功能:把源操作数的内容送入累加器A,源操作数不变。,源操作数不变。2)以工作寄存器为目的操作数以工作寄存器为目的操作数3)MOV Rn,A4)MOV Rn,direct5)MOV Rn,#data6)指令功能:把源操作数的内容送入通用寄存器,源操作数指令功能:把源操作数的内容送入通用寄存器,源操作数不变。不变。传送指令传送指令寄存器 寄存器?第 3 章 MCS-51单片机指令系统 3)以直接地址为目的操作数以直接地址为目的操作数MOVdirect,AMOVdirect,RnMOVdirect,directMOVdirect,RiMOVdirect,#data4)以间接地址为目的操作数以间接地址为目的操作数MOVRi,AMOVRi,directMOVRi,#data5)16位数据传送位数据传送MOVDPTR,#data第 3 章 MCS-51单片机指令系统 例例3-1MOVA,R1例例3-2 MOVA,#16H例例3-3MOVR0,#50HMOVA,R0例例3-4 MOVA,30H例例3-5 MOVR1,AMOVR3,30HMOVR7,#80H寄存器寻址寄存器寻址立即寻址立即寻址寄存器间接寻址寄存器间接寻址直接寻址直接寻址寄存器在第几区?第 3 章 MCS-51单片机指令系统 例例3-6 MOV30H,AMOV20H,R7MOV27H,#0FHMOV50H,40H例例3-7 MOVA,#00HMOVR0,#20HMOVR7,#20HLP1:MOVR0,AINC R0DJNZR7,LP11第 3 章 MCS-51单片机指令系统(2)(2)片外数据存储器传送指令片外数据存储器传送指令 MOVX A,DPTR MOVX A,Ri MOVX DPTR,A MOVX Ri,A传送指令传送指令第 3 章 MCS-51单片机指令系统 在累加器在累加器A A 与与 外部数据存储器外部数据存储器 RAM RAM 单元或单元或I/OI/O口口 之间进行数据传送。之间进行数据传送。DPTR DPTR 所包含的所包含的 16 16 位地址信息位地址信息,由由 P0(P0(低低8 8位位)和和 P2(P2(高高8 8位位)输出输出,而数据信息由而数据信息由 P0 P0 口传送。口传送。由由 Ri Ri 作为间接寻址寄存器时作为间接寻址寄存器时,P0 P0 口上分时输出口上分时输出 RiRi 指定的指定的 8 8 位地址信息及传输位地址信息及传输 8 8 位数据。位数据。高位地址高位地址?这组指令的功能这组指令的功能第 3 章 MCS-51单片机指令系统 例例3-8 MOVDPTR,#8000HMOVXA,DPTR例例3-9 MOVDPTR,#2040HMOVXA,DPTRMOV20H,A例例3-10MOVDPTR,#2041HMOVA,20HMOVXDPTR,A例例3-11MOVDPTR,#2000HMOVXA,DPTRMOVDPTR,#3FFFHMOVXDPTR,A第 3 章 MCS-51单片机指令系统(3)程序存储器数据传送指令程序存储器数据传送指令 MOVC A,A+PC;(A)为为8位位无无符符号号数数 查表指令查表指令 查找存放在程序存储器中的常数表格。查找存放在程序存储器中的常数表格。(PC)(PC)(下一条指令的起始地址)下一条指令的起始地址)+(A)+(A)A 表格只能被一段程序所利用。表格只能被一段程序所利用。若表格不是紧跟在查表指令的下面若表格不是紧跟在查表指令的下面,可以通过可以通过 调整调整 A A的内容进行查表。的内容进行查表。传送指令传送指令第 3 章 MCS-51单片机指令系统 MOVC A,A+DPTR;(A)为为8位位无无符符号号数数查表指令功能查表指令功能:查找存放在程序存储器中的常数表格。查找存放在程序存储器中的常数表格。(DPTR)+(A)A,(DPTR)+(A)A,表格的大小和位置可以在表格的大小和位置可以在 64 KB64 KB程序存储器中任意安排程序存储器中任意安排,并且一个表格可以为各个程序块所共用。并且一个表格可以为各个程序块所共用。第 3 章 MCS-51单片机指令系统 例例3-122100HMOVA,#0AH2102HMOVCA,A+PC2103H0C0H;字符字符“0”的段码的段码2104H0F9H;字符字符“1”的段码的段码2105H0A4H;字符字符“2”的段码的段码2106H0B0H;字符字符“3”的段码的段码2107H0B0H;字符字符“4”的段码的段码:第 3 章 MCS-51单片机指令系统 例例3-12 3-12 从段码表中取出从段码表中取出“3”“3”的的LEDLED显示显示 码,送显示端口。码,送显示端口。2100HMOVA,#0AH2102HMOVCA,A+PC2103HMOVDPTR,#1200H2106HMOVXDPTR,A:210AH0C0H;字符字符“0”的段码的段码210BH0F9H;字符字符“1”的段码的段码210CH0A4H;字符字符“2”的段码的段码210DH0B0H;字符字符“3”的段码的段码210EH0B0H;字符字符“4”的段码的段码:第 3 章 MCS-51单片机指令系统 例例3-122100HMOVA,#0AH2102HMOVCA,A+PC2103HMOVDPTR,#1200H2106HMOVXDPTR,A:210AH0C0H;字符字符“0”的段码的段码210BH0F9H;字符字符“1”的段码的段码210CH0A4H;字符字符“2”的段码的段码210DH0B0H;字符字符“3”的段码的段码210EH0B0H;字符字符“4”的段码的段码:MOVA,#3ADDA,#7第 3 章 MCS-51单片机指令系统 例例3-13已知:已知:ASCII码表首地址为码表首地址为7000HP42要求:查找数字要求:查找数字2的的ASCII码码1004HMOVA,#02H1006HMOVDPTR,#7000H1009HMOVCA,A+DPTR:7000H30H;ASCII码表码表7000H31H7000H32H7000H33H7000H34H第 3 章 MCS-51单片机指令系统(4)数据交换指令)数据交换指令1)字节交换指令字节交换指令 字节交换字节交换 XCH A,Rn XCH A,Ri XCH A,direct传送指令传送指令A A 的内容与源操作的内容与源操作数内容相互交换数内容相互交换 将累加器将累加器 A A 的的高高 4 4 位与低位与低 4 4 位之位之间相互交换间相互交换 将将 A A 的低的低 4 4 位内容位内容和(和(RiRi)所指出的内部)所指出的内部 RAM RAM 单元的低单元的低 4 4 位内容位内容相互交换相互交换 半字节交换半字节交换 XCHD A,Ri SWAP A作业第 3 章 MCS-51单片机指令系统 例例3-17设:外部设:外部RAM中,(中,(20H)=38H,内部内部RAM中,(中,(20H)=08H,P55MOVR1,20HMOVXA,R1XCHA,R1MOVXR1,A源程序:建立地址指针第 3 章 MCS-51单片机指令系统 例例3-14A=3FH,R0=20H,(,(20H)=46H执行:执行:XCHA,R0XCHDA,R0XCHA,20H例例3-15A=7FH,R0=20H,(,(20H)=35H执行:执行:XCHDA,R0例例3-16将将20H单元的内容与单元的内容与A的内容互换,再将的内容互换,再将A的高四位存入的高四位存入R1指向的内部指向的内部RAM单元的单元的低四位,低四位,A的低四位存入该单元的高四位。的低四位存入该单元的高四位。XCH A,20HSWAP AMOV R1,A第 3 章 MCS-51单片机指令系统(5)堆栈操作指令堆栈操作指令 PUSH direct POP direct说明说明:堆栈指针堆栈指针SP随时指示栈顶的位置。随时指示栈顶的位置。进栈指令功能进栈指令功能:将堆栈指针将堆栈指针SP的内容加的内容加1,将直接地址所指将直接地址所指出的出的内容送入内容送入SP指出的内部指出的内部RAM单元单元;出栈指令功能出栈指令功能:将将SP所指出的内部所指出的内部RAM单元的内容送入由直接单元的内容送入由直接地址所指出的字节单元地址所指出的字节单元,且堆栈指针且堆栈指针SP的内容的内容减减1。传送指令传送指令第 3 章 MCS-51单片机指令系统 P56PUSHAPUSHDPLPUSHDPH例例3-19将栈中内容弹出至原处将栈中内容弹出至原处POPDPL POPA例例3-18设栈底为设栈底为30H,将,将A和和DPTR压入堆栈压入堆栈MOVSP,#30HPOPDPH恢复现场保护现场第 3 章 MCS-51单片机指令系统 例例3-20将片外将片外2500H单元中的内容通过单元中的内容通过堆栈传入片内堆栈传入片内40H单元。单元。MOVDPTR,#2500HMOVXA,DPTR MOV20H,AMOVSP,#30HPUSH20HPOP40H第 3 章 MCS-51单片机指令系统 开机后开机后:1.MOVA,R5;MOVA,#05HMOVA,05HMOVA,R1MOV0EH,R4MOVR0,06HMOV10H,R0MOV0EH,10H2.MOVA,R13.MOVDPTR,#2050H4.MOVXDPTR,A5.MOVA,R16.MOVXR1,A举例1区区0区区2区区1区区0区区2区区第 3 章 MCS-51单片机指令系统 在程序存储器中在程序存储器中,从从2000H开始开始,存放存放09的的平方平方值值,执执行下列程序段行下列程序段:1.以以DPTR为指针为指针,用查表指令求用查表指令求9的平方值。的平方值。MOVDPTR,#2000HMOVA,09HMOVCA,A+DPTR(A)=(DPTR)=指令上机补充举例第 3 章 MCS-51单片机指令系统 2000H0149:51 MOVA,#09HADDA,N;MOVCA,A+PC1FF0H240CADDA,#12902010MOVDPTR,#2010HF0MOVXDPTR,A 补充举例N=6第 3 章 MCS-51单片机指令系统 1.将外部将外部RAM单元单元40FBH的内容传送到内部的内容传送到内部RAM08H单元单元.法一法一寄存器寻址寄存器寻址法二法二通过堆栈通过堆栈法三法三直接寻址直接寻址2.将内存中将内存中05H单元中的内容与单元中的内容与07H单元中的容交换。单元中的容交换。3.法一法一寄存器寻址寄存器寻址法二法二通过堆栈通过堆栈法三法三直接寻址直接寻址法四法四用寄存器间址用寄存器间址3.将外存中将外存中1205H单元中的内容与单元中的内容与1507H单元中的内容交换。单元中的内容交换。4.将外存中将外存中1205H单元中的内容与单元中的内容与1507H单元中的内容的低单元中的内容的低4位交换。位交换。5.将外存中将外存中1205H单元中的内容与单元中的内容与1507H单元中的内容的高单元中的内容的高4位交换位交换,并并存入存入1050H单元。单元。作业第 3 章 MCS-51单片机指令系统 1.将外部将外部RAM单元单元40FBH的内容传送到内部的内容传送到内部RAM08H单元。单元。2.法法1:寄存器寻址寄存器寻址3.MOVDPTR,#40FBH4.MOVXA,DPTR5.SETBRS06.MOVR0,A7.法法2:通过堆栈传送通过堆栈传送8.MOVDPTR,#40FBH9.MOVXA,DPTR10.PUSHA11.POP08H作业分析作业分析法法3:直接寻址直接寻址MOV DPTR,#40FBHMOVXA,DPTRMOV08H,A第 3 章 MCS-51单片机指令系统 2.将内存中将内存中05H单元中的内容与单元中的内容与07H单元中的容交换。单元中的容交换。法法1:寄存器寻址寄存器寻址MOVA,05HMOVR4,07HXCHA,R4MOVR7,R4;送回送回MOVR5,A法法2:通过堆栈传送通过堆栈传送PUSH05HPUSH07HPOP05HPOP07H作业分析作业分析法法3:直接寻址直接寻址MOVA,05HXCHA,07HMOVA,05H法法4:寄存器间接寻址寄存器间接寻址MOVR0,#05HMOVA,07HXCHA,R0XCHA,07H第 3 章 MCS-51单片机指令系统 3.将外存中将外存中1205H单元中的内容单元中的内容与与1507H单元中的内容交换。单元中的内容交换。MOVDPTR,#1205HMOVXA,DPTRMOVB,AMOVDPTR,#1507HMOVXA,DPTRXCHA,BMOVXDPTR,AXCHA,BMOVDPTR,#1205HMOVXDPTR,A作业分析作业分析4.将外存中将外存中1205H单元中的内容单元中的内容与与1507H单元中的内容的低单元中的内容的低4位交换。位交换。MOVR0,#10HMOVDPTR,#1205HMOVXA,DPTRMOVR0,AMOVDPTR,#1507HMOVXA,DPTRXCHDA,R0MOVXDPTR,AMOVDPTR,#1205HXCHA,R0MOVXDPTR,A第 3 章 MCS-51单片机指令系统 5.将外存中将外存中1205H单元中的内容与单元中的内容与1507H单元中的内容的高单元中的内容的高4位交换位交换,并存入并存入1050H单元。单元。法法1:MOVR0,#30HMOVDPTR,#1205HMOVXA,DPTR;A=SWAPAMOVR0,A;(30H)=MOVDPTR,#1507HMOVXA,DPTR;A=SWAPA;A=XCHDA,R0;A=;(30H)=XCHA,R0SWAPAMOVDPTR,#1050HMOVXDPTR,A作业分析作业分析11110000000011111100 001100111100001111110000 1100(1205H)(1507H)SWAP后后第 3 章 MCS-51单片机指令系统 5.将外存中将外存中1205H单元中的内容与单元中的内容与1507H单元中的内容的高单元中的内容的高4位交换位交换,并存入并存入1050H单元。单元。法法2:MOVR0,#30HMOVDPTR,#1205HMOVXA,DPTR;MOVR0,A;(30H)=(1205H)MOVDPTR,#1507HMOVXA,DPTR;(A)=(1507H)XCHDA,R0XCHA,R0;(A)=(30H)MOVDPTR,#1050HMOVXDPTR,A作业分析作业分析第 3 章 MCS-51单片机指令系统 上机调试上机调试1.1.指令指令 ADD AADD A,A A 是否为合法指令?是否为合法指令?2.2.执行指令执行指令 MOVX AMOVX A,RiRi 时时,存储单元的地存储单元的地址如何构成址如何构成?3.3.执行指令执行指令 MOV R3,#25H MOV R3,#25H 后后,如何察看指令如何察看指令执行的结果执行的结果?指令上机第 3 章 MCS-51单片机指令系统 表 3.1 数据传送类指令一览表 98幅第 3 章 MCS-51单片机指令系统 第 3 章 MCS-51单片机指令系统 3.3.2算术运算类指令算术运算类指令P571.算术运算类指令特点算术运算类指令特点对对8位无符号数直接预算;位无符号数直接预算;借助借助OF标志进行带符号二进制整数进行加减运算;标志进行带符号二进制整数进行加减运算;利用利用CF标志可实现多字节加减运算;标志可实现多字节加减运算;借助借助AF标志可对运算结果进行压缩标志可对运算结果进行压缩BCD码修正;码修正;影响标志位影响标志位CY、AC、OV(INC、DEC指令除外)指令除外)包括:(包括:(1)加法指令加法指令(2)减法指令减法指令(3)乘法指令乘法指令(4)除法指令除法指令第 3 章 MCS-51单片机指令系统 2、加法指令加法指令 (1)不带进位的加法指令不带进位的加法指令ADDA,RnADDA,directADDA,RiADDA,data 算术运算算术运算第 3 章 MCS-51单片机指令系统(2)带进位加法指令带进位加法指令 ADDCA,RnADDCA,directADDCA,RiADDCA,data指指令令功功能能与与普普通通加加法法指指令令类类似似,唯唯一一的的不不同同之之处处是是,在在执执行行加加法法时时,还还要要将将上上一一次次进进位位标标志志Cy的的内内容容也也一一起起加加进进去去,对对于标志位的影响也与普通加法指令相同。于标志位的影响也与普通加法指令相同。第 3 章 MCS-51单片机指令系统(3)加加1指令指令INCAINCRnINCdirectINCRiINCDPTR指令功能:将指令中所指出操作数的内容加指令功能:将指令中所指出操作数的内容加1。不影响任何标志。不影响任何标志。注意注意:操作数不能是立即数。操作数不能是立即数。第 3 章 MCS-51单片机指令系统(4).十进制调整指令十进制调整指令DAA指令功能:指令功能:对累加器对累加器A内容进行十进制调整;内容进行十进制调整;使累加器使累加器A中的内容调整为二位压缩型中的内容调整为二位压缩型BCD码。码。它只能跟在加法指令它只能跟在加法指令(ADD、ADC、INC)之后;之后;其结果不影响溢出标志位。其结果不影响溢出标志位。例例3-24有两个有两个BCD数数,A=56,R3=67H,求其和。,求其和。ADDA,R3DAA A=01010110BR3=01100111BA=10111101BA=10111101B01100110B100100011BCY第 3 章 MCS-51单片机指令系统 什麽指令的执行影响标志位?什麽指令的执行影响标志位?标志位的含义是什麽?标志位的含义是什麽?执行加法和减法指令时执行加法和减法指令时,两个操作数可以是有符号数或两个操作数可以是有符号数或无符号数无符号数,但计算机总按有符号数预算产生标志位。但计算机总按有符号数预算产生标志位。如如MOVA,#5AHMOVR5,#6BHADDA,R5注意指令执行时对标志位的影响注意指令执行时对标志位的影响第 3 章 MCS-51单片机指令系统 3、减法指令减法指令(1)带进位减法指令带进位减法指令SUBBA,RnSUBBA,directSUBBA,RiSUBBA,data指令功能指令功能:将累加器将累加器A的内容与第二操作数及进位标志相减的内容与第二操作数及进位标志相减,结果送回到累加器结果送回到累加器A中。中。注意:注意:若要进行不带借位的减法操作若要进行不带借位的减法操作,则必须先将则必须先将Cy清清“0”。算术运算算术运算第 3 章 MCS-51单片机指令系统 (2)减减1指令指令 DECA DECRn DECdirect DECRi指令功能指令功能:操作数内容减操作数内容减1。不影响任何标志。不影响任何标志。注意注意操作数不能是立即数操作数不能是立即数DEC DPTR第 3 章 MCS-51单片机指令系统 例例3-25已知已知A=0DBH,R1=73H,CY=1执行指令:执行指令:SUBBA,R1补充补充计算计算2400H单元的内容与单元的内容与2500H单元内容之积单元内容之积,并存入并存入2400H及及2401H单元。单元。源程序:源程序:MOVDPTR,#2400HMOVXA,DPTRMOVB,AMOVP2,#25HMOVR0,#00HMOVXA,R0MULABMOVXDPTR,AXCHA,BINC DPTRMOVXDPTR,A逻辑运算指令第 3 章 MCS-51单片机指令系统 4、乘法指令乘法指令MUL AB功能功能:A的内容与寄存器的内容与寄存器B的内容相乘的内容相乘 乘积的乘积的低低8位位A,高高8位位B。乘积超过乘积超过0FFH,则则OV置置“1”,否则否则OV清清“0”。进位标志进位标志Cy总是被清总是被清“0”。算术运算算术运算第 3 章 MCS-51单片机指令系统 5、除法指令、除法指令DIV AB功能功能:将将A的内容除以的内容除以B的的8位无符号整数位无符号整数,商商A,余数余数B 指令执行后指令执行后Cy=0 若若B=0,则则OV置置1算术运算算术运算补充题第 3 章 MCS-51单片机指令系统 算术运算指令算术运算指令第 3 章 MCS-51单片机指令系统 算术运算指令表算术运算指令表第 3 章 MCS-51单片机指令系统 影响标志位的指令影响标志位的指令 第 3 章 MCS-51单片机指令系统 算算术术运运算算影影响响标标志志位位的的指指令令第 3 章 MCS-51单片机指令系统 3.3.3逻辑运算类指令逻辑运算类指令特点:所有指令均对特点:所有指令均对8位二进制数按位操作。位二进制数按位操作。一般不影响标志位。一般不影响标志位。包括:包括:(1)双操作数逻辑运算指令双操作数逻辑运算指令(2)单操作数逻辑运算指令单操作数逻辑运算指令(3)累加器累加器A循环移位指令循环移位指令第 3 章 MCS-51单片机指令系统 1、双操作数逻辑运算指令、双操作数逻辑运算指令 (1)逻辑逻辑“与与”指令指令 ANL A,Rn ANL A,direct ANL A,Ri ANL A,data ANL direct,A ANL direct,data功能功能:将两个操作数的内容按位进行逻辑与操作将两个操作数的内容按位进行逻辑与操作,将结果送回目的操作数的单元中。将结果送回目的操作数的单元中。逻辑运算逻辑运算第 3 章 MCS-51单片机指令系统(2)逻辑逻辑“或或”指令指令 ORL A,Rn ORL A,direct ORL A,Ri ORL A,data ORL direct,A ORL direct,data功能功能:将两个操作数的内容按位进行逻辑或操作将两个操作数的内容按位进行逻辑或操作,结果送回目的操作数的单元中。结果送回目的操作数的单元中。第 3 章 MCS-51单片机指令系统(3)逻辑异或指令逻辑异或指令 XRL A,Rn XRL A,direct XRL A,Ri XRL A,data XRL direct,A XRL direct,data指令功能指令功能:将两个操作数的内容按位进行逻辑异或操作将两个操作数的内容按位进行逻辑异或操作,将结果送回到目的操作数的单元中。将结果送回到目的操作数的单元中。第 3 章 MCS-51单片机指令系统 说明:说明:凡目的操作数为凡目的操作数为P0、P1、P2、P3的指令,执行的指令,执行指令都相当于指令都相当于读入、改写、输出三种操作。读入、改写、输出三种操作。举例:举例:ANDP1,#F0H第 3 章 MCS-51单片机指令系统 2、单操作数指令单操作数指令(1)CLR A;A的内容清的内容清“0”(2)CPL A;A的内容按位取反的内容按位取反例例3-31对对40H单元内容求补。单元内容求补。MOV A,40HCPLAINCAMOV 40H,A补充补充对对40H、41H单元中单元中的双字节数求补。的双字节数求补。MOV A,40HCPLAMOV 40H,AMOV A,41HCPLAINC40HADCA,0MOV 41H,A逻辑运算逻辑运算第 3 章 MCS-51单片机指令系统 3、累加器、累加器A循环移位指令循环移位指令P62(1)累加器)累加器A循环移位指令循环移位指令RL A;A的内容向左环移的内容向左环移1位位 RR A;A的内容向右环移的内容向右环移1位位(2)带进位位)带进位位Cy的累加器的累加器A循环移位指令循环移位指令RLC A;A的内容带进位向左环移的内容带进位向左环移1位位 RRC A;A的内容带进位向右环移的内容带进位向右环移1位位指令功能指令功能:对对A的内容进行逻辑操作。的内容进行逻辑操作。除了带除了带CY的移位指令外的移位指令外,其它不影响其它不影响Cy,AC,OV等标志。等标志。注意注意只有循环位移只有循环位移第 3 章 MCS-51单片机指令系统 逻逻辑辑运运算算指指令令表表第 3 章 MCS-51单片机指令系统 上机(第上机(第5周周)1.拆字程序拆字程序2.把把8000H单元的内容拆开单元的内容拆开,高位送高位送8001H单元单元,低低位送位送8002H单元单元,并将并将8001H、8002H单元的高单元的高4位位清。清。3.思考思考:修改修改8000H、8001H的内容重复执行,的内容重复执行,4.观察结果。观察结果。2 2、已知:、已知:A=83HA=83H,R0=17HR0=17H,(17H17H)=34H=34H 要求:分析下列程序段执行后,要求:分析下列程序段执行后,A A 的内容。的内容。程序:程序:ANL AANL A,#17#17 ORL 17H ORL 17H,A A XRL A XRL A,R0R0 CPL A CPL A第 3 章 MCS-51单片机指令系统 上机(第上机(第5周)周)3 3、单字节乘法、单字节乘法 设设 (30H)=4EH,(1000H)=5DH (30H)=4EH,(1000H)=5DH 计算计算(30H)*(1000H)(1000H),(30H)*(1000H)(1000H),观察状态位观察状态位 CF=?CF=?OF=OF=?4、计算、计算DPTR1的结果。的结果。5.将外存将外存1030H、1031H单元中的双字节数单元中的双字节数乘以乘以2,并将所得积,并将所得积存入原单元。存入原单元。第 3 章 MCS-51单片机指令系统 2、已知:、已知:A=83H,R0=17H,(17H)=34H要求:分析下列程序段执行后,要求:分析下列程序段执行后,A的内容的内容程序:程序:ANLA,#17;83H11H=01HORL17H,A;XRLA,R0;01H34H=35HCPLA;A=0CAH3、注意:、注意:外存中的数据只有调入内存后才能进行处理;外存中的数据只有调入内存后才能进行处理;MUL指令的应用:指令的应用:操作数只能是操作数只能是A和和B积在积在A