《MCS-51单片机指令系统课件.ppt》由会员分享,可在线阅读,更多相关《MCS-51单片机指令系统课件.ppt(130页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、微型计算微型计算机原理及接口技术机原理及接口技术授课专业:自动化授课专业:自动化授课学时:授课学时:60学时学时1第三章第三章 MCS-51单片机指令系统单片机指令系统 3.1 指令系统概述指令系统概述13.2 数据传送类指令数据传送类指令2 3.3 算算术术运算运算类类指令指令33.4 逻辑运算类指令逻辑运算类指令43.5 控制转移类指令控制转移类指令53.6 位操作类指令位操作类指令623.1 3.1 指令系指令系统统概述概述2学习内容学习内容1指令概述指令概述寻址方式寻址方式31、概念、概念 指令:指令:指令:指令:是指示单片机完成特定操作的命令。是指示单片机完成特定操作的命令。指令系统
2、:指令系统:指令系统:指令系统:是单片机能够执行的全部命令的集合。是单片机能够执行的全部命令的集合。汇编语言指令:汇编语言指令:汇编语言指令:汇编语言指令:用助记符、符号地址、标号等表示的用助记符、符号地址、标号等表示的书写程序的语言。书写程序的语言。2、指令的格式、指令的格式一一、指令概述、指令概述 标号:标号:标号:标号:操作码助记符操作码助记符操作码助记符操作码助记符 目的操作数,目的操作数,目的操作数,目的操作数,源操作数源操作数源操作数源操作数 ;注;注;注;注释释释释 如:如:如:如:STARTSTART:MOVMOV A,#01HA,#01H ;A#01H;A#01H 标号标号标
3、号标号 操作码助记符操作码助记符操作码助记符操作码助记符 操作数操作数操作数操作数 注释注释注释注释4注:注:注:注:标号由标号由16个字符数字串组成,第一个必须是个字符数字串组成,第一个必须是字母字母字母字母;不一定每句都有标号,标号不产生不一定每句都有标号,标号不产生目标代码目标代码目标代码目标代码;汇编语言中已经有确切定义的符号不能作为标号;汇编语言中已经有确切定义的符号不能作为标号;同一标号在一个程序中只能定义一次;同一标号在一个程序中只能定义一次;标号后面必须跟冒号。标号后面必须跟冒号。标号:标号:给该条语句起个给该条语句起个名字名字名字名字,以便在其它语句中,以便在其它语句中寻找该
4、条语句,它代表该条语句所在的寻找该条语句,它代表该条语句所在的地址地址地址地址。5注:注:注:注:操作数可以是操作数可以是数的本身数的本身数的本身数的本身或其或其所在地址所在地址所在地址所在地址;十六进制数以十六进制数以AF打头的数前面要加打头的数前面要加0,以区别于标号。,以区别于标号。操作码助记符:操作码助记符:规定指令进行规定指令进行何种操作何种操作,是指令,是指令中中不能空缺不能空缺的部分,一般采用具有相关含义的英语的部分,一般采用具有相关含义的英语单词或缩写表示。单词或缩写表示。操作数:操作数:说明被操作的数的说明被操作的数的源源及及目的目的。注释:注释:为便于阅读理解程序,对语句所
5、作的解释为便于阅读理解程序,对语句所作的解释说明,说明,不产生目标代码不产生目标代码不产生目标代码不产生目标代码,用分号开始表示注释。,用分号开始表示注释。63、指令系统中有关符号说明、指令系统中有关符号说明符号符号含义含义Rn当前当前R0-R7RiR0 R1(i=0,1)direct8位直接地址(内部位直接地址(内部RAM的低的低128个单元的地址)个单元的地址)或指或指SFR#data8/168位常数(立即数)位常数(立即数)16位常数(立即数)位常数(立即数)Addr11/1611位目的地址位目的地址,16位目的地址位目的地址rel转移指令转移指令8位偏移量位偏移量(补码)补码)-128
6、+127bit位地址位地址/对该位内容取反对该位内容取反间接寻址符号(前缀)间接寻址符号(前缀)(x)X存储单元中的内容存储单元中的内容(x)以以X中的内容为地址的存储单元中的内容中的内容为地址的存储单元中的内容7 MCS-51汇编语言有汇编语言有111111种指令,种指令,4242种操作码助记种操作码助记符用来描述符用来描述33种操作功能。种操作功能。l按按功能功能分分为为数据传送类:数据传送类:29条条算术运算类:算术运算类:24条条逻辑运算类:逻辑运算类:24条条控制转移类:控制转移类:17条条位操作类:位操作类:17条条4、指令分类、指令分类8l按按字节数字节数分分为为单单字节指令:字
7、节指令:49条条双双字节指令:字节指令:45条条三三字节指令:字节指令:17条条l按按运算速度运算速度分分为为单单周期指令:周期指令:64条条双双周期指令:周期指令:45条条四四周期指令:周期指令:2条条9n n寻址方式:寻址方式:寻址方式:寻址方式:寻找指令中操作数的地址,并把操作数取寻找指令中操作数的地址,并把操作数取出来的方法。出来的方法。n51单片机一共单片机一共七种七种七种七种寻址方式:寻址方式:立即寻址立即寻址立即寻址立即寻址 直接寻址直接寻址直接寻址直接寻址 寄存器寻址寄存器寻址寄存器寻址寄存器寻址 寄存器间接寻址寄存器间接寻址寄存器间接寻址寄存器间接寻址 变址寻址变址寻址变址寻
8、址变址寻址 相对寻址相对寻址相对寻址相对寻址 位寻址位寻址位寻址位寻址二、二、MCS-51MCS-51的的寻寻址方式址方式10它是操作数它是操作数直接直接直接直接在指令中给出的寻址方式。在指令中给出的寻址方式。这这种种操操作作数数称称为为立立立立即即即即数数数数,立立即即数数有有8位位和和16位位两两种种,立立即即数数可可以以是是十十进进制制,也也可可以以是是十十六六进进制制,还还可可以以二进制。立即数前面带二进制。立即数前面带“”。1、立即寻址、立即寻址例例3-1:MOV A,#20H ;A#20H MOV A,#10000111B ;A#10000111B MOV A,#50 ;A#50
9、MOV DPTR,#1808H;DPTR#1808H注:注:注:注:立即数只能作为源操作数。立即数只能作为源操作数。11MOV A,#20H;A#20H 即把即把20H这个数据送入累加器这个数据送入累加器A中。中。PC分析分析分析分析74H74H20H20H操作码操作码立即数立即数PC执行执行执行执行PCACC 20H 20HMOV A,#20H执行示意图执行示意图 执行结果执行结果:(A)=20H12指令中直接给出操作数所在指令中直接给出操作数所在地址地址地址地址的寻址方式。的寻址方式。可可用用符符号号“direct”direct”表表示示指指令令中中的的直直接接地地址址,寻寻址址范围是内部
10、范围是内部RAM的低的低128字节和字节和SFR.2.直接寻址直接寻址 例例3-2:MOV A,20H ;将将片片内内RAM20H单单元元中中的的内内容容送送入累加器入累加器A,70H为直接地址。为直接地址。13 MOV A A,20H20H;A(20H)PC分析分析PC执行执行PCE5HE5H20H20H操作码操作码直接地址直接地址ROM62H62HRAM20HACC 62H 62H 执行结果执行结果:(A)=62H14在指定的在指定的寄存器寄存器寄存器寄存器中存放操作数的寻址方式。中存放操作数的寻址方式。这类寄存器包括工作寄存器这类寄存器包括工作寄存器R0R7、A、B、DPTR。3.寄存器
11、寻址寄存器寻址 例例3-3:MOVA,R0;把把工工作作寄寄存存器器R0中中的的内内容容传传送送到到累加器累加器A中。中。15把把操操作作数数所所在在的的地地地地址址址址存存放放在在指指定定的的寄寄寄寄存存存存器器器器中中,而而操操作作数数本本身身则则存存放放在在该该地地址址所所对对应应的的存存存存储储储储单单单单元元元元中中的寻址方式。的寻址方式。间接寻址寄存器前用间接寻址寄存器前用“”表示前缀。表示前缀。能能够够用用于于寄寄存存器器间间接接寻寻址址的的寄寄存存器器有有R0R0、R1R1、DPTRDPTR和和SPSP(SP不用间接寻址符不用间接寻址符“”)。)。4.寄存器寄存器间接寻址间接寻
12、址 例例3-4:MOVA,R0;A(R0)16以以16位位寄寄存存器器(PCPC或或或或DPTRDPTR)的的内内容容作作为为基基基基址址址址,以以累累加加器器A A的的内内容容作作为为偏偏偏偏移移移移量量量量,将将两两者者进进行行相相加加得得到到的的和和和和作为作为操作数地址操作数地址操作数地址操作数地址。变址寻址只能对程序存储器进行寻址,分为变址寻址只能对程序存储器进行寻址,分为两种两种两种两种:l以以PCPC的当前值的当前值的当前值的当前值为基址为基址l以以DPTRDPTR的内容为基址的内容为基址5.变址寻址变址寻址 17例例3-5:MOVC A,A+PC;A(A)+(PC)上上述述指指
13、令令的的功功能能是是,PC的的当当前前值值与与累累加加器器A的的内内容容相加,形成操作数的地址。相加,形成操作数的地址。例例3-6:MOVC A,A+DPTR ;A(A)+(DPTR)上上述述指指令令的的功功能能是是,DPTR的的值值与与累累加加器器A的的内内容容相加,形成操作数的地址。相加,形成操作数的地址。18ACCACCSFRSFRROMROMDPLDPLDPHDPH30H30H20H20H48H48H2035H2035H例例3-7:将将程程序序存存储储器器ROM中中2035H单单元元的的内内容容读读入入累加器累加器A中:中:MOV DPTR,#2030H ;DPTR#2030H MOV
14、 A,#05H ;A#05H MOVC A,A+DPTR ;A(2035H)05H48H19主主要要用用于于转转转转移移移移指指指指令令令令,它它是是把把指指令令中中给给出出的的相相对对地地址址偏偏移移量量relrel与与与与PCPC当当当当前前前前值值值值相相相相加加加加,得得到到程程序序转转移移的的目目标标地地址。址。6.相对寻址相对寻址 目标地址目标地址=PC当前值当前值+rel =转移指令所在地址转移指令所在地址+转移指令字节数转移指令字节数+relrel是一个带符号的是一个带符号的8位位二进制补码二进制补码二进制补码二进制补码,其取值范围为,其取值范围为 -128127,负负数数表表
15、示示从从当当前前地地址址向向上上上上转转移移,正正数数表表示从当前地址向示从当前地址向下下下下转移。转移。20相对寻址方式示意图相对寻址方式示意图程序存储器程序存储器ROM2002HSJMP/80H2009Hrel=07H07HPCPC2000HPC+12001HPC+22002HXXH例例3-8:在地址在地址2000H处有一条相对转移指令:处有一条相对转移指令:SJMP loop ;机器码:机器码:2000H 80H 07H 目标地址目标地址=(2000+2+07)H=2009H。21指令中直接给出指令中直接给出位位位位操作数的地址。操作数的地址。位地址可用符号位地址可用符号“bit”bit
16、”表示。表示。7.位位寻址寻址 例例3-9:MOV C,F0 ;CY(F0)指令的功能:将位指令的功能:将位F0的内容送到进位标志的内容送到进位标志CY中。中。例例3-10:MOV C,2EH ;CY(2EH)指令的功能:将位地址指令的功能:将位地址2EH的内容送到进位标志的内容送到进位标志CY中。中。22注:注:注:注:可供位寻址的区域:可供位寻址的区域:片内片内RAM的的20H2FH为位寻址空间为位寻址空间007FH;凡是地址能被凡是地址能被8整除的整除的SFR,共,共11个。个。23表表3-1 寻址方式及寻址空间对照表寻址方式及寻址空间对照表寻寻址方式址方式符号符号寻寻 址址 空空 间间
17、寄存器寄存器寻寻址址寄存器名寄存器名工作寄存器工作寄存器R0R7、A、B、DPTR直接直接寻寻址址direct片内片内RAM低低128字字节节、特殊功能寄存器特殊功能寄存器SFR寄存器寄存器间间接接寻寻址址R0、R1、DPTR片内片内RAM低低128字字节节R0、R1、片外片外RAM R0、R1、DPTR立即立即寻寻址址#data8或或#data16程序存程序存储储器(指令的常数部分)器(指令的常数部分)变变址址寻寻址址A+DPTR、A+PC程序存程序存储储器器位位寻寻址址bit、/bit片内片内RAM中的中的20H2FH的的128个位、个位、特殊功能寄存器中可位特殊功能寄存器中可位寻寻址的位
18、址的位相相对寻对寻址址rel程序存程序存储储器器256字字节节范范围围(PC+rel)241、作、作 业:指出下列指令中源操作数的寻址方式业:指出下列指令中源操作数的寻址方式1.MOV A,77H2.ADD A,R23.MOV A,55H4.MOV A,R15.MOVC A,A+DPTR6.MOV C,30H7.MOVX A,R08.MOV 50H,A 9.MOVC A,A+PC10.SJMP 34H 11.ADD A,#21直接寻址直接寻址寄存器寻址寄存器寻址立即寻址立即寻址 寄存器间接寻址寄存器间接寻址变址寻址变址寻址 位寻址位寻址寄存器间接寻址寄存器间接寻址寄存器寻址寄存器寻址变址寻址变
19、址寻址相对寻址相对寻址立即寻址立即寻址25l 功能:功能:进行数据传送。进行数据传送。l 注意:数据传送类指令一般注意:数据传送类指令一般不影响状态标志位不影响状态标志位。l 分类:分类:片内片内RAM传送指令传送指令 MOV 片外片外RAM传送指令传送指令 MOVX ROM传送指令传送指令 MOVC 数据交换指令数据交换指令 XCH XCHD SWAP 堆栈操作指令堆栈操作指令 PUSH POP 3.3.2 2 数据数据传传送送类类指令指令26程序程序存储器存储器ROMEPROM特殊功特殊功能寄存能寄存器器SFR片片内内RAM128字节字节片外片外数据数据存储器存储器RAM MOVC MOV
20、CMOVXMOVXMOV PUSHPOPXCHXCHDSWAP 数据传送指令操作域示意图数据传送指令操作域示意图27l分类:分类:1 1、以累加器以累加器以累加器以累加器A A为目的地址的指令为目的地址的指令为目的地址的指令为目的地址的指令2 2、以寄存器、以寄存器、以寄存器、以寄存器RnRn为目的地址的指令为目的地址的指令为目的地址的指令为目的地址的指令3 3、以直接地址为目的地址的指令以直接地址为目的地址的指令以直接地址为目的地址的指令以直接地址为目的地址的指令4 4、以寄存器间接地址为目的地址的指令以寄存器间接地址为目的地址的指令以寄存器间接地址为目的地址的指令以寄存器间接地址为目的地址
21、的指令5 5、以、以、以、以DPTRDPTR为目的地址的为目的地址的为目的地址的为目的地址的1616位指令位指令位指令位指令l 特点:传送是在单片机内部进行,不需要通过外部特点:传送是在单片机内部进行,不需要通过外部总线交换数据,总线交换数据,速度比较快速度比较快速度比较快速度比较快。l 指令助记符为:指令助记符为:MOV一、片内一、片内RAMRAM传传送指令送指令28指令格式:指令格式:MOV AMOV A,RnRn ;AA(RnRn)MOV AMOV A,direct direct ;AA(直接地址)直接地址)直接地址)直接地址)MOV AMOV A,RiRi ;AA(RiRi)MOV A
22、MOV A,#data#data ;AA立即数立即数立即数立即数指令解释:把源操作数送入累计器指令解释:把源操作数送入累计器A A中。中。1 1、以累加器以累加器A A为为目的地址的指令目的地址的指令29举例说明:举例说明:例例3-11:已知(已知(R1)=40H;(;(30H)=12H;(40H)=34H,求分别执行下列指令后结果。,求分别执行下列指令后结果。MOV AMOV A,R1 R1 MOV AMOV A,30H 30H MOV AMOV A,R1 R1 MOV AMOV A,#56H#56H各指令执行后结果:各指令执行后结果:(A)=40H、12H、34H、56H30指令格式:指令
23、格式:MOV MOV RnRn,A A ;RnRn(A A)MOV MOV RnRn,direct direct ;RnRn(直接地址)(直接地址)(直接地址)(直接地址)MOV MOV RnRn,#data#data ;RnRn 立即数立即数立即数立即数指令解释:指令解释:把源操作数送入工作寄存器把源操作数送入工作寄存器Rn中中。2 2、以寄存器、以寄存器RnRn为为目的地址的指令目的地址的指令31举例说明:举例说明:例例3-12:已知(已知(A)=40H;(;(30H)=12H;(40H)=34H,求分别执行下列指令后结果。,求分别执行下列指令后结果。MOV R1MOV R1,A A MO
24、V R1MOV R1,30H30H MOV R1MOV R1,#40H#40H 各指令执行后结果:各指令执行后结果:(R1)=40H、12H、40H32指令格式:指令格式:MOV directMOV direct,A A ;direct direct(A A)MOV directMOV direct,RnRn ;direct direct(RnRn)MOV direct1MOV direct1,direct2 direct2 ;direct 1direct 1(direct 2direct 2)MOV directMOV direct,RiRi ;direct (direct (RiRi)MO
25、V direct MOV direct,#data#data ;direct direct 立即数立即数立即数立即数 指指令令解解释释:将将源源操操作作数数送送入入直直接接地地址址所所指指的的存存储储单单元中。元中。3 3、以直接地址、以直接地址为为目的地址的指令目的地址的指令33举例说明:举例说明:例例3-13:已已 知知(R1)=40H;(30H)=12H;(40H)=34H;(A)=78H,求求分分别别执执行行下下列列指指令后结果。令后结果。MOV 50HMOV 50H,A A MOV 50HMOV 50H,R1 R1 MOV 50HMOV 50H,30H30H MOV 50HMOV 5
26、0H,R1 R1 MOV 50HMOV 50H,#56H#56H各指令执行后结果:(各指令执行后结果:(50H)78H、40H、12H、34H、56H34指令格式:指令格式:MOV MOV RiRi,A A ;(;(;(;(RiRi)(A A)MOV MOV RiRi,directdirect ;(;(;(;(RiRi)(direct direct)MOV MOV RiRi,#data#data ;(;(;(;(RiRi)立即数立即数立即数立即数 指指令令解解释释:把把源源操操作作数数送送入入R0、R1指指针针间间接接寻寻址址的片内的片内RAM单元中。单元中。4 4、以寄存器、以寄存器间间接地
27、址接地址为为目的地址的指令目的地址的指令35举例说明:举例说明:例例3-14:已知(已知(R0)40H;(;(30H)12H;(A)78H,求分别执行下列指令后结果。,求分别执行下列指令后结果。MOV R0MOV R0,A A MOV R0MOV R0,30H 30H MOV R0MOV R0,#56H#56H各指令执行后结果:各指令执行后结果:(40H)78H、12H、56H36指令格式:指令格式:MOV DPTR MOV DPTR,#data16#data16 ;DPTR16DPTR16位立即数位立即数位立即数位立即数 指指令令解解释释:把把一一个个16位位立立即即数数送送入入DPTR寄寄
28、存存器器。高高8位送入位送入DPH,低,低8位送入位送入DPL。5 5、以、以DPTRDPTR为为目的地址的目的地址的1616位指令位指令37练习题练习题练习题练习题2、设(设(30H)40H;(;(40H)10H;(;(P1)0CAH,试判断下列程序执行后的结果。试判断下列程序执行后的结果。MOV R0,#30H MOV A,R0 MOV R1,A MOV B,R1 MOV R1,P1 MOV P2,P1 各指令执行后结果:各指令执行后结果:(A),(,(B),(40H),(,(P2)。38l 特点:此类指令实际是片外特点:此类指令实际是片外RAM与与A之间的传送指之间的传送指令。片外令。片
29、外RAM单元只能采用单元只能采用寄存器间接寻址寄存器间接寻址寄存器间接寻址寄存器间接寻址的方式来的方式来访问,访问,R0R0、R1R1、DPTRDPTR可作间接寻址的寄存器。可作间接寻址的寄存器。l 指令助记符为:指令助记符为:MOVX二、片外二、片外RAMRAM传传送指令送指令l分类:分类:1 1、以以以以DPTRDPTR间接寻址的指令间接寻址的指令间接寻址的指令间接寻址的指令 2 2、以以以以R0R0和和和和R1R1间接寻址的指令间接寻址的指令间接寻址的指令间接寻址的指令39指令格式:指令格式:MOVX AMOVX A,DPTR DPTR ;A A (DPTRDPTR)MOVX DPTRM
30、OVX DPTR,A A ;(;(;(;(DPTRDPTR)(A A)指指令令解解释释:片片外外RAM单单元元的的地地址址存存于于DPTRDPTR中中,上上述述两两条条指指令令,第第一一条条指指令令是是读读读读片片外外RAM单单元元中中的的内内容容到到A中中;第第二二条条指指令令是是把把A中中内内容容写写写写入入片片外外RAM单元中。单元中。注注 意意:DPTR是是 1616位位位位 的的 地地 址址 指指 针针,可可 寻寻 址址64KB(0000HFFFFH)的外部的外部RAM。1 1、以、以DPTRDPTR间间接接寻寻址的指令址的指令40举例说明:举例说明:例例3-15:将将外外部部RAM
31、中中1000H单单元元中中的的内内容容送送入入外外部部RAM中中2000H单单元元中中。已已知知(1000H)=12H,(,(2000H)=34H。MOV MOV DPTRDPTR,#1000H#1000H ;DPTR#1000H;DPTR#1000H MOVX AMOVX A,DPTR DPTR ;A (DPTR);A (DPTR)MOV MOV DPTRDPTR,#2000H ;DPTR#2000H#2000H ;DPTR#2000H MOVX DPTR MOVX DPTR,A ;(DPTR)(A)A ;(DPTR)(A)41指令格式:指令格式:MOVX AMOVX A,RiRi ;A ;
32、A (RiRi)MOVX MOVX RiRi,A ;A ;(RiRi)(A A)指指令令解解释释:片片外外RAM单单元元的的地地址址存存于于RiRi中中,上上述述两两条条指指令令,第第一一条条指指令令是是读读读读片片外外RAM单单元元中中的的内内容容到到A中中;第第二二条条指指令令是是把把A中中内内容容写写写写入入片片外外RAM单元中。单元中。2 2、以、以R0R0和和R1R1间间接接寻寻址的指令址的指令42注意:注意:vRi(R0或或 R1)是是 8位位 的的 地地 址址 指指 针针,可可 寻寻 址址256B(00HFFH)的外部的外部RAM。v要要想想寻寻址址64KB的的范范围围,可可使使
33、P2口口输输出出外外部部RAM的的 高高 8位位 地地 址址(页页页页 地地地地 址址址址,共共 256页页00HFFH),而而使使Ri提提供供低低8位位地地址址(页页页页内内内内寻寻寻寻址址址址,256B/页)。页)。43举例说明:举例说明:例例3-16:将将外外部部RAM 2050H单单元元的的内内容容送送入入累累加加器器A中。中。MOV P2,#20H ;P2#20HMOV P2,#20H ;P2#20H,得到页地址,得到页地址,得到页地址,得到页地址 MOV R1,#50H ;R1#50HMOV R1,#50H ;R1#50H,得到页内地址,得到页内地址,得到页内地址,得到页内地址 M
34、OVX A,R1 ;A (2050H)MOVX A,R1 ;A (2050H)或:或:或:或:MOV DPTR,#2050H MOV DPTR,#2050H ;DPTR#2050H;DPTR#2050H MOVX A,DPTR ;A (2050H)MOVX A,DPTR ;A (2050H)44l 特点:特点:ROM只能读不能写,数据传送是只能读不能写,数据传送是单向单向的。的。l 指令助记符为:指令助记符为:MOVCl指令格式:指令格式:MOVC A,A+PC ;PC(PC)+1,A(A)(PC)MOVC A,A+DPTR ;A(A)(DPTR)l指指令令解解释释:在在程程序序存存储储器器中
35、中查查寻寻表表格格常常数数,并并将将它它送入累加器送入累加器A,也称它为,也称它为查表指令查表指令。三、片外三、片外ROMROM传传送指令送指令 45注意:注意:v第第一一条条指指令令分分别别以以当当前前指指令令的的PC作作为为基基基基址址址址寄寄寄寄存存存存器器器器,A作作为为变变变变址址址址寄寄寄寄存存存存器器器器,可可寻寻址址范范围围是是在在当当前前指指令下令下256B256B之内之内之内之内。v第第二二条条指指令令DPTR作作为为基基基基址址址址寄寄寄寄存存存存器器,可可寻寻址址范范围围64KB64KB。v基基址址寄寄存存器器内内容容与与变变址址寄寄存存器器内内容容相相加加形形成成16
36、16位位位位地址地址地址地址。46举例说明:举例说明:例例3-17:将将ROM 1020H单单元元内内容容送送内内部部RAM 70H单元。单元。MOV A,#20HMOV A,#20H MOV DPTR,#1000H MOV DPTR,#1000H MOVC A,A+DPTR MOVC A,A+DPTR MOV 70H,A MOV 70H,A47四、数据交四、数据交换换指令指令分类:分类:1 1、全字节交换指令全字节交换指令全字节交换指令全字节交换指令 XCHXCH 2 2、半字节交换指令半字节交换指令半字节交换指令半字节交换指令 XCHDXCHD 3 3、高低四位互换指令高低四位互换指令高低
37、四位互换指令高低四位互换指令 SWAPSWAP48指令格式:指令格式:XCH XCH A A,direct direct ;(;(;(;(A A)(直接地址)(直接地址)(直接地址)(直接地址)XCH XCH A A,RnRn ;(;(;(;(A A)(RnRn)XCH XCH A A,RiRi ;(;(;(;(A A)(RiRi)指令解释:指令解释:将将A的内容与源操作数相互的内容与源操作数相互交换交换交换交换。1 1、全字、全字节节交交换换指令指令 49指令格式:指令格式:XCHD XCHD A A,RiRi ;(A A)3 30 0(RiRi)3 30 0 指指令令解解释释:将将累累加加
38、器器A的的低低低低4 4位位位位与与Ri的的间间接接寻寻址址单单元内容的元内容的低低低低4 4位位位位相互相互交换交换交换交换,高高高高4 4位不变位不变位不变位不变。2 2、半字、半字节节交交换换指令指令 50指令格式:指令格式:SWAP A ;SWAP A ;(A A)7 74 4 (A A)3 30 0 指令解释:指令解释:A中的中的高低高低高低高低4 4位互换位互换位互换位互换。练练习习题题:已已知知(A)=20H,(R1)=30H,(20H)=12H,(40H)=54H,求求执执行下列指令后行下列指令后结结果果。XCH A,R1 XCH A,40H XCH A,R1 XCHD A,R
39、1 SWAP A3 3、高低四位互、高低四位互换换指令指令 ;(A)=30H,(R1)=20H;(A)=54H,(40H)=30H;(A)=12H,(20H)=54H;(A)=14H,(20H)=52H;(A)=41H(A)=,(R1)=,(20H)=,(40H)=。41H20H52H30H51l 堆栈特点:堆栈特点:先进后出先进后出先进后出先进后出或或后进先出后进先出后进先出后进先出。l堆栈用途:用于堆栈用途:用于保护保护保护保护和和恢复恢复恢复恢复CPU的工作现场,也可的工作现场,也可实现内部实现内部RAM单元之间的数据单元之间的数据传送和交换传送和交换传送和交换传送和交换。l堆栈指针堆栈
40、指针:SPSP始终指向栈顶位置始终指向栈顶位置,初始化时对,初始化时对SP设设定定在内部在内部RAM的的30H7FH30H7FH范围内。范围内。l堆栈操作:堆栈操作:入栈和出栈入栈和出栈入栈和出栈入栈和出栈。五、堆五、堆栈栈操作操作类类指令指令52指令格式:指令格式:PUSH direct PUSH direct ;SP(SP)+1SP(SP)+1,(SP)(direct)(SP)(direct)指指令令解解释释:先先将将堆堆栈栈指指针针SP的的内内容容加加加加1 1(指指针针上上移移一一个个单单元元),然然后后将将直直接接寻寻址址单单元元的的内内容容送送送送到到SP指针所指的堆栈单元中(指针
41、所指的堆栈单元中(栈顶栈顶栈顶栈顶)。)。1 1、进栈进栈指令指令53指令格式:指令格式:POP direct POP direct ;direct(SPdirect(SP),SP(SP)-1),SP(SP)-1 指指令令解解释释:先先将将堆堆栈栈指指针针SP所所指指的的单单元元(栈栈顶顶)内内容容弹弹弹弹出出出出,并并送送入入direct单单元元中中,然然后后SP的的内内容容减减减减1 1(指针下移一个单元)。(指针下移一个单元)。注意:注意:PUSH和和POP要成对出现。要成对出现。2 2、出、出栈栈指令指令54l 功能:功能:进行数据算术运算。进行数据算术运算。l 注意:一般会影响状态标
42、志位。注意:一般会影响状态标志位。l 分类:分类:加法指令:加法指令:3类类减法指令:减法指令:2类类乘法指令乘法指令除法指令除法指令 3.3 3.3 算算术术运算运算类类指令指令55指令格式:指令格式:ADD AADD A,RnRn ;A(A)+(RnA(A)+(Rn)ADD A ADD A,direct ;A(A)+(direct ;A(A)+(直接地址直接地址直接地址直接地址)ADD A ADD A,RiRi;A(A)+(RiA(A)+(Ri)ADD A ADD A,#data ;A(A)+#data ;A(A)+立即数立即数立即数立即数指指令令解解释释:将将源源源源操操操操作作作作数数
43、数数和和累累加加器器A A中中中中的的的的操操操操作作作作数数数数相相相相加加加加,其结果存放在其结果存放在A中。中。一一、加法指令、加法指令不不带进带进位位56影响标志位:影响标志位:CY、AC和和P:l若位若位D3D3向向向向D4D4进位进位进位进位,则,则AC=1,反之为,反之为0;l若位若位D7D7进位进位进位进位,则,则CY1,反之为,反之为0;l位位D6、D7进进位位情情况况会会影影响响OV标标志志,OV=C6 C7;lA中中1的个数的个数影响影响P。57举例说明:举例说明:例例3-20:两两个个无无符符号号数数放放在在A和和R2中中,设设(A)0C2H(194),(R0)0BBH
44、(187),执执 行行 指指 令令:ADD AADD A,R0R01 1 0 0 0 0 1 01 1 0 0 0 0 1 0+1 0 1 1 1 0 1 11 0 1 1 1 0 1 11 11 11 1 0 1 1 1 1 1 0 10 1 1 1 1 1 0 1A A中偶数个中偶数个1 11 11 10 00 01 1P POVOVCYCY ACAC0 0异或异或PSWPSW结果结果:(A)=7DH(125),CY=1,AC=0,OV=1,P=0.58指令格式:指令格式:ADDC ADDC A A,RnRn ;A(A)+(RnA(A)+(Rn)+(CY)+(CY)ADDC ADDC A
45、A,direct ;A(A)+(direct ;A(A)+(直接地址直接地址直接地址直接地址)+(CY)+(CY)ADDC ADDC A A,RiRi ;A(A)+(RiA(A)+(Ri)+(CY)+(CY)ADDC ADDCA A,#data ;A(A)+#data ;A(A)+立即数立即数立即数立即数+(CY)+(CY)指指令令解解释释:将将累累加加器器A A的的的的内内内内容容容容、指指令令中中的的源源源源操操操操作作作作数数数数和和和和CYCY三者三者三者三者相加,并把结果存放到相加,并把结果存放到A中。中。一、加法指令一、加法指令带进带进位位59注注注注意意意意:ADDC指指令令对对
46、PSW标标志志位位的的影影响响与与ADD指指令相同,这组指令常用于令相同,这组指令常用于多字节加法多字节加法多字节加法多字节加法运算。运算。举例说明:举例说明:例例3-21:两两个个无无符符号号数数放放在在A和和20H中中,设设(A)85H,(20H)=0FFH,CY=1。执行指令:。执行指令:ADDC AADDC A,20H 20H 结果结果:(A)=85H,CY=1,AC=1,OV=0,P=1.60指令格式:指令格式:INCINCA A ;A(A)+1A(A)+1 INC INC RnRn ;Rn(Rn)+1Rn(Rn)+1 INC INCdirect direct ;direct(dir
47、ect)+1direct(direct)+1 INC INC RiRi ;(Ri)(Ri)+1(Ri)(Ri)+1 INC INCDPTR DPTR ;DPTR(DPTR)+1DPTR(DPTR)+1 指指令令解解释释:将将指指定定单单元元中中的的内内容容加加加加1 1后后,结结果果仍仍保保存在原单元。存在原单元。注意:除了标志位注意:除了标志位注意:除了标志位注意:除了标志位P P外,外,外,外,INCINC不影响不影响不影响不影响其他标志位其他标志位其他标志位其他标志位。一一、加法指令、加法指令加加1 1指令指令61指令格式:指令格式:SUBBSUBBA A,#data ;A(A)-#da
48、ta ;A(A)-立即数立即数立即数立即数-(CY)-(CY)SUBB SUBB A A,direct ;A(A)-(direct ;A(A)-(直接地址直接地址直接地址直接地址)(CY)(CY)SUBB SUBBA A,RiRi ;A(A)-(;A(A)-(RiRi)(CY)(CY)SUBB SUBB A A,RnRn ;A(A)-(;A(A)-(RnRn)(CY)(CY)指指令令解解释释:从从累累累累加加加加器器器器A A减减去去源源源源操操操操作作作作数数数数及及标标志志位位CYCY,其结果再送累加器,其结果再送累加器A中。中。二、减法指令二、减法指令带带借位借位62注意:注意:v系系统
49、统没没有有提提供供不不带带借借位位的的减减法法指指令令,若若要要进进行行不不带带借借位位的的减减法法运运算算,只只需需先先将将CYCY位位位位清清清清0 0即可。即可。vSUBB指指令令对对PSW的的标标志志位位产产生生影影响响同同于于加加法法指令。指令。63举例说明:举例说明:例例3-22:设设(A)6CH,(R2)=40H,CY=0。执执行行指指令令:SUBB SUBB A A,R2R2 分分析析执执行行结结果果及及对对标标志志位位的的影响。影响。结果结果:(A)=2CH,CY=0,AC=0,OV=0,P=10 1 1 0 1 1 0 00 1 1 0 1 1 0 0 0 1 0 0 0
50、0 0 00 1 0 0 0 0 0 00 00 0 1 0 1 1 0 00 0 1 0 1 1 0 0A A中奇数个中奇数个1 11 10 00 01 10 0P POVOVCYCY ACAC0 0异或异或PSWPSW64指令格式:指令格式:DEC A ;A(A)DEC A ;A(A)1 1 DEC direct ;DEC direct ;直接地址直接地址直接地址直接地址(直接地址直接地址直接地址直接地址)1 1 DEC DEC RiRi ;(;(Ri)(RiRi)(Ri)1 1 DEC DEC RnRn ;Rn(RnRn(Rn)1 1指指令令解解释释:将将指指定定单单元元中中的的内内容容