版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1微型计算机原理及接口技术微型计算机原理及接口技术2第三章第三章 MCS-51单片机指令系统单片机指令系统 12345633.1 3.1 指令系统概述指令系统概述2学习内容学习内容1指令概述指令概述寻址方式寻址方式4是指示单片机完成特定操作的命令。是指示单片机完成特定操作的命令。 是单片机能够执行的全部命令的集合。是单片机能够执行的全部命令的集合。用助记符、符号地址、标号等表示用助记符、符号地址、标号等表示的书写程序的语言。的书写程序的语言。一、指令概述一、指令概述 5 标号由标号由16个字符数字串组成,第一个必须是个字符数字串组成,第一个必须是; 不一定每句都有标号,标号不产生不一定每句都有
2、标号,标号不产生; 汇编语言中已经有确切定义的符号不能作为标号;汇编语言中已经有确切定义的符号不能作为标号; 同一标号在一个程序中只能定义一次;同一标号在一个程序中只能定义一次; 标号后面必须跟冒号。标号后面必须跟冒号。给该条语句起个给该条语句起个,以便在其它语句中,以便在其它语句中寻找该条语句,它代表该条语句所在的寻找该条语句,它代表该条语句所在的。6 操作数可以是操作数可以是或其或其; 十六进制数以十六进制数以AF打头的数前面要加打头的数前面要加0,以区别于标号。,以区别于标号。规定指令进行规定指令进行何种操作何种操作,是指令,是指令中中不能空缺不能空缺的部分,一般采用具有相关含义的英语的
3、部分,一般采用具有相关含义的英语单词或缩写表示。单词或缩写表示。说明被操作的数的说明被操作的数的源源及及目的目的。 注释:注释:为便于阅读理解程序,对语句所作的解释为便于阅读理解程序,对语句所作的解释说明,说明,用分号开始表示注释。,用分号开始表示注释。7符号符号含义含义Rn当前当前R0-R7RiR0 R1(i=0,1)direct8位直接地址(内部位直接地址(内部RAM的低的低128个单元的地址)个单元的地址)或指或指SFR#data8/168位常数(立即数)位常数(立即数)16位常数(立即数)位常数(立即数)Addr11/1611位目的地址位目的地址,16位目的地址位目的地址rel转移指令
4、转移指令8位偏移量位偏移量(补码)补码) -128 +127bit位地址位地址/对该位内容取反对该位内容取反间接寻址符号(前缀)间接寻址符号(前缀)(x)X存储单元中的内容存储单元中的内容(x)以以X中的内容为地址的存储单元中的内容中的内容为地址的存储单元中的内容8 MCS-51汇编语言有汇编语言有种指令,种指令,种操作码助记种操作码助记符用来描述符用来描述33种操作功能。种操作功能。l按按分为分为数据传送类:数据传送类:29条条算术运算类:算术运算类:24条条逻辑运算类:逻辑运算类:24条条控制转移类:控制转移类:17条条位操作类:位操作类: 17条条9l按按分为分为字节指令:字节指令:49
5、条条字节指令:字节指令:45条条字节指令:字节指令:17条条l按按分为分为单单周期指令:周期指令:64条条双双周期指令:周期指令:45条条四四周期指令:周期指令:2条条10寻找指令中操作数的地址,并把操作数取寻找指令中操作数的地址,并把操作数取出来的方法。出来的方法。n51单片机一共单片机一共寻址方式:寻址方式:二、二、MCS-51MCS-51的寻址方式的寻址方式11 它是操作数它是操作数在指令中给出的寻址方式。在指令中给出的寻址方式。 这种操作数称为这种操作数称为,立即数有,立即数有8位和位和16位两种,位两种,立即数可以是十进制,也可以是十六进制,还可立即数可以是十进制,也可以是十六进制,
6、还可以二进制。立即数前面带以二进制。立即数前面带。例例3-1: MOV A, #20H ;A#20H MOV A, #10000111B ;A#10000111B MOV A,#50 ;A#50 MOV DPTR,#1808H;DPTR#1808H立即数只能作为源操作数。立即数只能作为源操作数。12MOV A, #20H;A#20H 即把即把20H这个数据送入累加器这个数据送入累加器A中。中。PC操作码操作码立即数立即数PCPCACCMOV A, #20H执行示意图执行示意图 执行结果执行结果:(A)=20H13 指令中直接给出操作数所在指令中直接给出操作数所在的寻址方式。的寻址方式。 可用符
7、号可用符号表示指令中的直接地址,寻址范表示指令中的直接地址,寻址范围是内部围是内部RAM的低的低128字节和字节和SFR.例例3-2: MOV A,20H ;将片内将片内RAM20H单元中的内容送单元中的内容送入累加器入累加器A,70H为直接地址。为直接地址。14 MOV , ; A(20H)PC分析分析PC执行执行PC操作码操作码直接地址直接地址ROMRAM20HACC 执行结果执行结果:(A)=62H15 在指定的在指定的中存放操作数的寻址方式。中存放操作数的寻址方式。 这类寄存器包括工作寄存器这类寄存器包括工作寄存器R0R7、A、B、DPTR。例例3-3: MOVA,R0 ; 把工作寄存
8、器把工作寄存器R0中的内容传送到中的内容传送到累加器累加器A中。中。16 把操作数所在的把操作数所在的存放在指定的存放在指定的中,而中,而操作数本身则存放在该地址所对应的操作数本身则存放在该地址所对应的中中的寻址方式。的寻址方式。 间接寻址寄存器前用间接寻址寄存器前用表示前缀。表示前缀。 能够用于寄存器间接寻址的寄存器有能够用于寄存器间接寻址的寄存器有和和(SP不用间接寻址符不用间接寻址符“”)。)。例例3-4: MOVA,R0 ; A( ( R0 ) )17 以以16位寄存器(位寄存器()的内容作为)的内容作为,以,以累加器累加器的内容作为的内容作为,将两者进行相加得到,将两者进行相加得到的
9、的作为作为。 变址寻址只能对程序存储器进行寻址,分为变址寻址只能对程序存储器进行寻址,分为:l以以为基址为基址l以以的内容为基址的内容为基址18例例3-5: MOVC A, A+PC ;A(A)+(PC)上述指令的功能是,上述指令的功能是,PC的当前值与累加器的当前值与累加器A的内的内容相加,形成操作数的地址。容相加,形成操作数的地址。例例3-6: MOVC A, A+DPTR ;A(A)+(DPTR)上述指令的功能是,上述指令的功能是,DPTR的值与累加器的值与累加器A的内容的内容相加,形成操作数的地址。相加,形成操作数的地址。19ACCACCSFRSFRROMROMDPLDPLDPHDPH
10、30H30H20H20H48H48H2035H2035H例例3-7: 将程序存储器将程序存储器ROM中中2035H单元的内容读单元的内容读入入累加器累加器A中:中: MOV DPTR,#2030H ;DPTR #2030H MOV A, #05H ; A #05H MOVC A, A+DPTR ;A(2035H)05H48H20 主要用于主要用于,它是把指令中给出的相对地址,它是把指令中给出的相对地址偏移量偏移量,得到程序转移的目标,得到程序转移的目标地址。地址。 目标地址目标地址=PC当前值当前值+rel =转移指令所在地址转移指令所在地址+转移指令字节数转移指令字节数+rel rel是一个
11、带符号的是一个带符号的8位位,其取值范围为,其取值范围为 -128127,负数表示从当前地址向,负数表示从当前地址向转移,正数表转移,正数表示从当前地址向示从当前地址向转移。转移。 21相对寻址方式示意图相对寻址方式示意图程序存储器程序存储器ROM2002HSJMP/80H2009Hrel=07H07HPCPC2000HPC+12001HPC+22002HXXH例例3-8:在地址在地址2000H处有一条相对转移指令:处有一条相对转移指令: SJMP loop ;机器码:机器码:2000H 80H 07H 目标地址目标地址=(2000+2+07)H=2009H。22 指令中直接给出指令中直接给出
12、操作数的地址。操作数的地址。 位地址可用符号位地址可用符号表示。表示。例例3-9: MOV C,F0 ;CY (F0)指令的功能:将位指令的功能:将位F0的内容送到进位标志的内容送到进位标志CY中。中。 例例3-10: MOV C, 2EH ;CY (2EH) 指令的功能:将位地址指令的功能:将位地址2EH的内容送到进位标志的内容送到进位标志CY中。中。23可供位寻址的区域:可供位寻址的区域: 片内片内RAM的的20H2FH为位寻址空间为位寻址空间007FH; 凡是地址能被凡是地址能被8整除的整除的SFR,共,共11个。个。24表表3-1 寻址方式及寻址空间对照表寻址方式及寻址空间对照表寻址方
13、式寻址方式符号符号寻寻 址址 空空 间间寄存器寻址寄存器寻址寄存器名寄存器名工作寄存器工作寄存器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个位、个位、特殊功能
14、寄存器中可位寻址的位特殊功能寄存器中可位寻址的位相对寻址相对寻址rel程序存储器程序存储器256字节范围(字节范围(PC+rel)251、作、作 业:指出下列指令中源操作数的寻址方式业:指出下列指令中源操作数的寻址方式MOV A, 77HADD A, R2MOV A, 55HMOV A, R1MOVC A, A+DPTRMOV C , 30HMOVX A, R0MOV 50H, A MOVC A, A+PCSJMP 34H ADD A, #21 直接寻址直接寻址 寄存器寻址寄存器寻址 立即寻址立即寻址 寄存器间接寻址寄存器间接寻址 变址寻址变址寻址 位寻址位寻址 寄存器间接寻址寄存器间接寻址
15、寄存器寻址寄存器寻址 变址寻址变址寻址 相对寻址相对寻址 立即寻址立即寻址26l 功能:功能:进行数据传送。进行数据传送。l 注意:数据传送类指令一般注意:数据传送类指令一般不影响状态标志位不影响状态标志位。l 分类:分类: 片内片内RAM传送指令传送指令 MOV 片外片外RAM传送指令传送指令 MOVX ROM传送指令传送指令 MOVC 数据交换指令数据交换指令 XCH XCHD SWAP 堆栈操作指令堆栈操作指令 PUSH POP 3.2 3.2 数据传送类指令数据传送类指令27程序程序存储器存储器ROMEPROM特殊功特殊功能寄存能寄存器器SFR片内片内RAM128字节字节片外片外数据数
16、据存储器存储器RAMMOV PUSHPOPXCHXCHDSWAP 数据传送指令操作域示意图数据传送指令操作域示意图28l分类:分类:l 特点:传送是在单片机内部进行,不需要通过外部特点:传送是在单片机内部进行,不需要通过外部总线交换数据,总线交换数据,。l 指令助记符为:指令助记符为:MOV一、片内一、片内RAMRAM传送指令传送指令29指令格式:指令格式:指令解释:把源操作数送入累计器指令解释:把源操作数送入累计器A A中。中。1 1、 以累加器以累加器A A为目的地址的指令为目的地址的指令30举例说明:举例说明: 例例3-11: 已知(已知(R1)=40H;(;(30H)=12H; (40
17、H)=34H,求分别执行下列指令后结果。,求分别执行下列指令后结果。各指令执行后结果:各指令执行后结果:(A)=40H、12H、34H、56H31指令格式:指令格式:指令解释:指令解释:把源操作数送入工作寄存器把源操作数送入工作寄存器Rn中中。2 2、以寄存器、以寄存器RnRn为目的地址的指令为目的地址的指令32举例说明:举例说明: 例例3-12: 已知(已知(A)=40H;(;(30H)=12H; (40H)=34H,求分别执行下列指令后结果。,求分别执行下列指令后结果。各指令执行后结果:各指令执行后结果:(R1)=40H、12H、40H33指令格式:指令格式:指令解释:指令解释:将源操作数
18、送入直接地址所指的存储将源操作数送入直接地址所指的存储单元中。单元中。 3 3、以直接地址为目的地址的指令、以直接地址为目的地址的指令34举例说明:举例说明: 例例3-13: 已知(已知(R1)= 40H;(;(30H)=12H;(;(40H)=34H;(;(A)=78H,求分别执行下列指令后结果。,求分别执行下列指令后结果。各指令执行后结果:(各指令执行后结果:(50H) 78H、40H、12H、34H、56H35指令格式:指令格式:指令解释:指令解释:把源操作数送入把源操作数送入R0、R1指针间接寻址指针间接寻址的片内的片内RAM单元中。单元中。 4 4、以寄存器间接地址为目的地址的指令、
19、以寄存器间接地址为目的地址的指令36举例说明:举例说明: 例例3-14: 已知(已知(R0)40H;(;(30H)12H; (A)78H,求分别执行下列指令后结果。,求分别执行下列指令后结果。各指令执行后结果:各指令执行后结果:(40H) 78H、12H、56H37指令格式:指令格式:指令解释:指令解释:把一个把一个16位立即数送入位立即数送入DPTR寄存器。寄存器。高高8位送入位送入DPH,低,低8位送入位送入DPL。 5 5、以、以DPTRDPTR为目的地址的为目的地址的1616位指令位指令382、设(设(30H)40H;(;(40H)10H;(;(P1)0CAH,试判断下列程序执行后的结
20、果。试判断下列程序执行后的结果。 MOV R0,#30H MOV A, R0 MOV R1,A MOV B,R1 MOV R1,P1 MOV P2,P1 各指令执行后结果:各指令执行后结果: (A) ,(,(B) ,(40H) ,(,(P2) 。39l 特点:此类指令实际是片外特点:此类指令实际是片外RAM与与A之间的传送指之间的传送指令。片外令。片外RAM单元只能采用单元只能采用的方式的方式来访问,来访问,可作间接寻址的寄存器。可作间接寻址的寄存器。l 指令助记符为:指令助记符为:MOVX二、片外二、片外RAMRAM传送指令传送指令l分类:分类:40指令格式:指令格式:指令解释:指令解释:片
21、外片外RAM单元的地址存于单元的地址存于中,上中,上述两条指令,第一条指令是述两条指令,第一条指令是片外片外RAM单元中的单元中的内容到内容到A中;第二条指令是把中;第二条指令是把A中内容中内容入片外入片外RAM单元中。单元中。注 意 :注 意 : D P T R 是是的 地 址 指 针 , 可 寻 址的 地 址 指 针 , 可 寻 址64KB(0000HFFFFH)的外部的外部RAM。1 1、以、以DPTRDPTR间接寻址的指令间接寻址的指令41举例说明:举例说明: 例例3-15:将外部将外部RAM中中1000H单元中的内容送入单元中的内容送入外部外部RAM中中2000H单元中。已知(单元中
22、。已知(1000H)=12H,(2000H)=34H。42指令格式:指令格式:指令解释:指令解释:片外片外RAM单元的地址存于单元的地址存于中,上述中,上述两条指令,第一条指令是两条指令,第一条指令是片外片外RAM单元中的内单元中的内容到容到A中;第二条指令是把中;第二条指令是把A中内容中内容入片外入片外RAM单元中。单元中。2 2、以、以R0R0和和R1R1间接寻址的指令间接寻址的指令43注意:注意:vR i ( R 0 或或 R 1 ) 是是 8 位 的 地 址 指 针 , 可 寻 址位 的 地 址 指 针 , 可 寻 址256B(00HFFH)的外部的外部RAM。v要想寻址要想寻址64K
23、B的范围,可使的范围,可使P2口输出外部口输出外部R A M 的 高的 高 8 位 地 址 (位 地 址 (, 共, 共 2 5 6 页页00HFFH),而使),而使Ri提供低提供低8位地址(位地址(,256B/页)。页)。44举例说明:举例说明: 例例3-16:将外部将外部RAM 2050H单元的内容送入累加单元的内容送入累加器器A中。中。45l 特点:特点:ROM只能读不能写,数据传送是只能读不能写,数据传送是单向单向的。的。l 指令助记符为:指令助记符为:MOVCl指令格式:指令格式: MOVC A,A+PC ;PC(PC)+1,A(A)(PC) MOVC A,A+DPTR ;A (A)
24、(DPTR)l指令解释:在程序存储器中查寻表格常数,并将它指令解释:在程序存储器中查寻表格常数,并将它送入累加器送入累加器A,也称它为,也称它为查表指令查表指令。三、片外三、片外ROMROM传送指令传送指令 46注意:注意:v第一条指令分别以当前指令的第一条指令分别以当前指令的PC作为作为,A作为作为,可寻址范围是在当前指可寻址范围是在当前指令下令下。v第二条指令第二条指令DPTR作为作为器,器,可寻址范围可寻址范围。v基址寄存器内容与变址寄存器内容相加形成基址寄存器内容与变址寄存器内容相加形成。47举例说明:举例说明: 例例3-17:将将ROM 1020H单元内容送内部单元内容送内部RAM
25、70H单元。单元。48四、数据交换指令四、数据交换指令分类:分类:49指令格式:指令格式:指令解释:指令解释:将将A的内容与源操作数相互的内容与源操作数相互。1 1、全字节交换指令、全字节交换指令 50指令格式:指令格式:指令解释:指令解释:将累加器将累加器A的的与与Ri的间接寻址单的间接寻址单元内容的元内容的相互相互,。2 2、半字节交换指令、半字节交换指令 51指令格式:指令格式:指令解释:指令解释:A中的中的。练习题:练习题:已知(已知(A)=20H,(R1)=30H,(20H)=12H,(40H)=54H,求执行下列指令后结果,求执行下列指令后结果。 XCH A,R1 XCH A,40
26、H XCH A,R1 XCHD A,R1 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)= 。41H20H52H30H52l 堆栈特点:堆栈特点:或或。l堆栈用途:用于堆栈用途:用于和和CPU的工作现场,也可的工作现场,也可实现内部实现内部RAM单元之间的数据单元之间的数据。l堆栈指针:堆栈指针:始终指向栈顶位置,初始化时对始终指向栈顶位置,初始化时对SP设设定在内部定在内部R
27、AM的的范围内。范围内。l堆栈操作:堆栈操作:。五、堆栈操作类指令五、堆栈操作类指令53指令格式:指令格式:指令解释:指令解释:先将堆栈指针先将堆栈指针SP的内容的内容(指针上移(指针上移一个单元),然后将直接寻址单元的内容一个单元),然后将直接寻址单元的内容到到SP指针所指的堆栈单元中(指针所指的堆栈单元中()。)。1 1、进栈指令、进栈指令54指令格式:指令格式:指令解释:指令解释:先将堆栈指针先将堆栈指针SP所指的单元(栈顶)所指的单元(栈顶)内容内容,并送入,并送入direct单元中,然后单元中,然后SP的内容的内容(指针下移一个单元)。(指针下移一个单元)。注意:注意: PUSH和和
28、POP要成对出现。要成对出现。2 2、出栈指令、出栈指令55l 功能:功能:进行数据算术运算。进行数据算术运算。l 注意:一般会影响状态标志位。注意:一般会影响状态标志位。l 分类:分类:加法指令:加法指令:3类类减法指令:减法指令:2类类乘法指令乘法指令除法指令除法指令 3.3 3.3 算术运算类指令算术运算类指令56指令格式:指令格式:指令解释:将指令解释:将和累加器和累加器,其结果存放在,其结果存放在A中。中。 一、加法指令一、加法指令不带进位不带进位57影响标志位:影响标志位:CY、AC和和P:l若位若位,则,则AC=1,反之为,反之为0;l若位若位,则,则CY1,反之为,反之为0;l
29、位位 D 6 、 D 7 进 位 情 况 会 影 响进 位 情 况 会 影 响 O V 标 志 ,标 志 ,OV=C6 C7;lA中中1的个数的个数影响影响P。58举例说明:举例说明: 例例3-20:两个无符号数放在两个无符号数放在A和和R2中,设中,设(A)0C2H(194),),(R0)0BBH(187),执行指令:),执行指令: 1 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
30、 1P POVOVCYCY ACAC0 0异或异或PSWPSW结果结果:(A)=7DH(125), CY=1, AC=0,OV=1, P=0.59指令格式:指令格式:指令解释:将累加器指令解释:将累加器、指令中的、指令中的相加,并把结果存放到相加,并把结果存放到A中。中。 一、加法指令一、加法指令带进位带进位60ADDC指令对指令对PSW标志位的影响与标志位的影响与ADD指指令相同,这组指令常用于令相同,这组指令常用于运算。运算。举例说明:举例说明:例例3-21:两个无符号数放在两个无符号数放在A和和20H中中,设设(A)85H,(20H)=0FFH,CY=1。执行指令:。执行指令: 结果结果
31、:(A)=85H, CY=1, AC=1, OV=0, P=1.61指令格式:指令格式: 指令解释:将指定单元中的内容指令解释:将指定单元中的内容后,结果仍保后,结果仍保存在原单元。存在原单元。 一、加法指令一、加法指令加加1 1指令指令62指令格式:指令格式:指令解释:从指令解释:从减去减去及标志位及标志位,其结果再送累加器其结果再送累加器A中。中。 二、减法指令二、减法指令带借位带借位63注意:注意:v系统没有提供系统没有提供不带借位的减法指令不带借位的减法指令,若要进,若要进行不带借位的减法运算,只需先将行不带借位的减法运算,只需先将即可。即可。vSUBB指令对指令对PSW的标志位产生影
32、响的标志位产生影响同于同于加加法指令。法指令。64举例说明:举例说明: 例例3-22:设设(A)6CH,(R2)=40H,CY=0。执行。执行指令:指令: 分析执行结果及对标志位的分析执行结果及对标志位的影响。影响。结果结果:(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 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异或异或PSWPSW65指令格式
33、:指令格式:指令解释:将指定单元中的内容指令解释:将指定单元中的内容后,结果仍保后,结果仍保存在原单元。存在原单元。且没有对且没有对DPTR的减的减1操作指令。操作指令。 二、减法指令二、减法指令减减1 1指令指令66指令格式:指令格式:指令解释:将累加器指令解释:将累加器A和寄存器和寄存器B中两个中两个8位位整数整数,并把乘积的,并把乘积的寄存器寄存器 中,中,存于累加器存于累加器 中。中。 注意:乘法运算指令时会对标志位产生影响:注意:乘法运算指令时会对标志位产生影响:vCY位总是被清位总是被清0,即,即CY0;vOV标志则反映乘积的位数,标志则反映乘积的位数,若乘积大于若乘积大于255,
34、则则OV=1,否则,否则OV=0。v影响影响P,不影响,不影响AC。 三、乘法指令三、乘法指令67举例说明:举例说明: 例例3-23:设设(A)64H,(B)=3CH,执行指令:,执行指令: 结果为:结果为: (A)(B)=1770H,(A)=70H,(B)17H,CY=0,OV=1,P=1。 68指令格式:指令格式: 指令解释:将累加器指令解释:将累加器A和寄存器和寄存器B中的两个中的两个8位无位无符号整数相除,所得符号整数相除,所得存于存于 中,中,存于存于 中。中。注意:除法运算指令时会对标志位产生影响:注意:除法运算指令时会对标志位产生影响:vCY位总是被清位总是被清0,即,即CY0;
35、vOV标志位的状态反映寄存器标志位的状态反映寄存器B中的除数情况,中的除数情况,若除数(若除数(B)为)为0,则,则OV=1,表示本次运算无,表示本次运算无意义,否则,意义,否则,OV=0。v影响影响P,不影响,不影响AC。 四、除法指令四、除法指令69举例说明:举例说明: 例例3-24:设设(A)0F0H(240),(B)=20H(32)。执行。执行指令:指令: 结果为:结果为:(A)07H(商商7), (B)=10H(余数余数16), 标志位:标志位: OV=0,CY=0 ,P=1 。70l 功能:功能:进行数据逻辑运算。进行数据逻辑运算。l 注意:一般注意:一般不影响不影响状态标志位。状
36、态标志位。l 分类:分类: 逻辑与指令逻辑与指令 逻辑或指令逻辑或指令 逻辑异或指令逻辑异或指令 累加器累加器A的逻辑操作指令:的逻辑操作指令:3类类3.4 3.4 逻辑运算类指令逻辑运算类指令71指令格式:指令格式: 一、逻辑与指令一、逻辑与指令指令解释:将目的操作数和源操作数的内容指令解释:将目的操作数和源操作数的内容进行逻辑进行逻辑“”操作,结果送入目的地址中。操作,结果送入目的地址中。72指令格式:指令格式: 二、逻辑或指令二、逻辑或指令指令解释:将目的操作数和源操作数的内容指令解释:将目的操作数和源操作数的内容进行逻辑进行逻辑“”操作,结果送入目的地址中。操作,结果送入目的地址中。7
37、3指令格式:指令格式: 三、逻辑异与指令三、逻辑异与指令指令解释:将目的操作数和源操作数的内容指令解释:将目的操作数和源操作数的内容进行逻辑进行逻辑“异或异或”操作,结果送入目的地址中。操作,结果送入目的地址中。74举例说明举例说明 例例3-25:设设(A)57H, (30H)=0FH, (R0)=3CH。分别。分别执行指令:执行指令: ANL A, #11110000B ORL A, 30H XRL A, R0 结果为:结果为: (A)50H (A)=5FH (A)=6BH 75注意注意常用于常用于,即将需要清,即将需要清0的位与的位与“ ”相与,其余位与相与,其余位与“1”相与不变。相与不
38、变。常用于常用于,即将需要置,即将需要置1的位与的位与“ ”相或,其余位与相或,其余位与“0”相或不变。相或不变。常用于常用于,即将需要取反的位与,即将需要取反的位与“ ”相异或,其余位与相异或,其余位与“0”相异或不变。相异或不变。76练习题练习题 3、分析下列程序段的执行结果,并说明程序功能。、分析下列程序段的执行结果,并说明程序功能。 MOV A, #77H XRL A, #0FFH ANL A, #0FHMOV P1, #64H ANL P1, #0F0H ORL A, P1 ;(A)=77H ;(A)=77H 0FFH=88H;(A)=88H 0FH=08H;(P1)=64H;(P1
39、)=64H 0F0H=60H;(A)=08H 60H=68H 结果为:结果为: (A)68H; (P1)=60H77 四、累加器四、累加器A A的逻辑操作指令的逻辑操作指令分类:分类:累加器累加器A清清0累加器累加器A取反取反累加器累加器A移位移位v累加器累加器A循环左移循环左移v累加器累加器A循环右移循环右移v累加器累加器A带进位循环左移带进位循环左移v累加器累加器A带进位循环右移带进位循环右移78指令格式指令格式 指令解释指令解释 将累加器将累加器A的内容的内容 。举例说明举例说明 例例3-26:设设(A)55H。执行指令:。执行指令: CLR A 结果为:结果为:(A)00H1 1、累加
40、器、累加器A A清清0 079指令格式指令格式 指令解释指令解释 将累加器将累加器A的内容逐位逻辑的内容逐位逻辑,结果仍存,结果仍存放在放在A中。中。举例说明举例说明 例例3-27:设设(A)55H。执行指令:。执行指令: CPL A 结果为:结果为:(A)0AAH。 2 2、累加器、累加器A A取反取反80指令格式指令格式 3 3、累加器、累加器A A移位移位RL A:循环左移是将:循环左移是将累加器累加器A的内容依次向的内容依次向左循环移动左循环移动1位。位。RR A:循环右移是将:循环右移是将累加器累加器A的内容依次向的内容依次向右循环移动右循环移动1位。位。RLC A:带进位循环:带进
41、位循环左移是将累加器左移是将累加器A的内的内容和进位标志容和进位标志CY依次依次向左循环移动向左循环移动1位。位。RRC A:带进位循环:带进位循环右移是将累加器右移是将累加器A的内的内容和进位标志容和进位标志CY依次依次向右循环移动向右循环移动1位。位。81注意注意 除除RLC和和RRC影响影响CY和和P外,其他外,其他不影响不影响标志。标志。举例说明举例说明 例例3-28:设设(A)11H,CY=1,执行指令:,执行指令: RL A RLC A RR A RRC A结果:结果:(A)22H , CY=1 (A)45H , CY=0 (A)A2H, CY=0 (A)51H, CY=082l
42、功能:功能:控制程序流向。控制程序流向。l 注意:注意:不影响不影响状态标志位。状态标志位。l 分类:分类:无条件转移指令无条件转移指令条件转移指令条件转移指令子程序操作指令子程序操作指令空操作指令空操作指令 3.5 3.5 控制转移类指令控制转移类指令83 一、无条件转移指令一、无条件转移指令l 功能:功能:使程序无条件转移到指定的地址去执行。使程序无条件转移到指定的地址去执行。 l 分类:分类:长转移指令长转移指令绝对转移指令绝对转移指令相对转移指令相对转移指令间接转移指令间接转移指令84指令格式指令格式 指令解释指令解释先使程序计数器先使程序计数器(完成取指并指向下一条(完成取指并指向下
43、一条指令的地址),然后将指令提供的指令的地址),然后将指令提供的16位地址位地址(addr16)送入)送入PC,然后程序,然后程序目标目标地址地址(addr16)处执行。处执行。注意注意 addr16可实现在可实现在ROM中的中的范围内转移。范围内转移。1 1、长转移指令、长转移指令85指令格式指令格式 指令解释指令解释 先使程序计数器先使程序计数器(完成取指并指指向下一(完成取指并指指向下一条指令的地址),然后将指令提供的条指令的地址),然后将指令提供的,程序随即转移到该地址处执行。,程序随即转移到该地址处执行。注意注意 addr11可实现在可实现在ROM中的中的2KB范围内转移。范围内转移
44、。2 2、绝对转移指令、绝对转移指令86指令格式指令格式 指令解释指令解释指令的功能是先使程序计数器指令的功能是先使程序计数器(完成取指(完成取指并指向下一条指令的地址)然后把并指向下一条指令的地址)然后把作为目标转移地址。即:作为目标转移地址。即: 3 3、相对转移指令、相对转移指令87注意注意v rel是一个带符号的是一个带符号的8位二进制数的位二进制数的范围为范围为128127,所以,所以SJMP指令的转移范围以指令的转移范围以PC当当前值为起点,向下跳前值为起点,向下跳128个字节,或向上跳个字节,或向上跳127个字节,个字节,共共256个字节范围内转移。个字节范围内转移。,又称为动态
45、停机指令,执行结果是,又称为动态停机指令,执行结果是转向本指令自己,程序在原处无限循环。一般转向本指令自己,程序在原处无限循环。一般写成:写成: HERE: SJMP HERE 或或 SJMP $88指令格式指令格式 指令解释指令解释 将累加器将累加器A中数与中数与DPTR的的16位数位数,作为目标作为目标地址送入地址送入PC,实现无条件转移。,实现无条件转移。注意注意 该指令采用该指令采用,DPTR作为基址寄存器,作为基址寄存器,由用户预先设定,由用户预先设定,A的内容作为偏移量的内容作为偏移量,根据,根据A值的值的不同,就可转移到不同的地址,又称为不同,就可转移到不同的地址,又称为。4 4
46、、间接转移指令、间接转移指令89举例说明举例说明例例3-29:程序段程序段1: ORG 0000H LJMP MAIN MAIN: 程序段程序段2:START: . SJMP START 90 二、条件转移指令二、条件转移指令l 功能:功能: 条件转移指令要求对条件转移指令要求对进行判断:进行判断: 当当条件时,程序就条件时,程序就去执行;去执行; 当当时,则时,则下一条指令。下一条指令。 用于实现分支结构的程序。用于实现分支结构的程序。l 分类:分类:累加器累加器A的判的判0转移指令转移指令比较不等转移指令比较不等转移指令减减1不为不为0转移指令转移指令91 指令格式指令格式 指令解释指令解
47、释 若累加器若累加器的内容的内容,则程序,则程序指定的目标地指定的目标地址,否则程序顺序执行。址,否则程序顺序执行。 若累加器若累加器的内容的内容,则程序,则程序指定的目标指定的目标地址,否则程序顺序执行。地址,否则程序顺序执行。1 1、累加器、累加器A A的判的判0 0转移指令转移指令92举例说明举例说明例例3-30:将片内将片内RAM的的40H单元开始的数据块传送到单元开始的数据块传送到片外片外RAM的的1000H开始的单元中,当遇到的数据为开始的单元中,当遇到的数据为0,则停止传送(假定不超过存储空间就会遇到则停止传送(假定不超过存储空间就会遇到0)。)。 MOV R0, #40H MO
48、V DPTR, #1000HLOOP: MOV A, R0 JZ HERE MOVX DPTR, A INC R0 INC DPTR SJMP LOOPHERE: SJMP HERE93 指令格式指令格式 指令解释指令解释 将前两个操作数进行将前两个操作数进行:若:若,程序,程序到到指定的目标地址,若指定的目标地址,若,程序,程序。2 2、比较不等转移指令、比较不等转移指令比较是采用相减运算的比较是采用相减运算的方法。结果会影响方法。结果会影响CY标标志,但不影响任何一个志,但不影响任何一个操作数的内容。操作数的内容。94 指令格式指令格式 ; Rn ;(Rn)0则转移,则转移, ;(Rn)
49、0则顺序执行,则顺序执行, ; direct ;(direct)0则转移,则转移, ;(direct) 0则转移,则转移,3 3、减、减1 1不为不为0 0转移转移可以控制循环次数。可以控制循环次数。95指令解释指令解释 将将Rn/direct的内容的内容,若,若不为不为0,程序,程序转移转移到目标地址处执行,若到目标地址处执行,若为为0,则程序,则程序顺序执行顺序执行。举例说明举例说明 例例3-31:计算子程序延时时间计算子程序延时时间 ;1机器周期机器周期 ;1机器周期机器周期 ;2机器周期机器周期 ;2机器周期机器周期 96 三、调用子程序及返回指令三、调用子程序及返回指令l 定义:定义
50、: 是指能完成是指能完成的相对独立的程序段。的相对独立的程序段。l 适用:适用: 同一个程序的同一个程序的要求执行要求执行可将该可将该操作编成一个子程序。操作编成一个子程序。l 分类:分类: 长调用指令长调用指令 绝对调用指令绝对调用指令 返回指令返回指令97l 特点:特点: 在主程序需要时,安排一条子程序在主程序需要时,安排一条子程序,使,使程序无条件地转移到子程序处执行,执行完后由程序无条件地转移到子程序处执行,执行完后由回到原断点处继续执行主程序。回到原断点处继续执行主程序。 子程序中可包括对另外子程序的调用,称为子程序中可包括对另外子程序的调用,称为,但次数是有限制的。,但次数是有限制
51、的。98子程序和主程序间的关系图子程序和主程序间的关系图99 指令格式指令格式 LCALL addr16 ;PC (PC)3 ;SP (SP)1, (SP) (PC)L ;SP (SP)1, (SP) (PC)H ;PC addr16 指令功能指令功能 先将先将PC+3(完成取指操作并指向下一条指令的地(完成取指操作并指向下一条指令的地址),再把该地址(又称断点地址)址),再把该地址(又称断点地址)压入堆栈保压入堆栈保护护起来,然后把起来,然后把addr16送入送入PC,并转入该地址执,并转入该地址执行子程序。行子程序。1 1、长调用指令、长调用指令100 指令格式指令格式 ACALL add
52、r11 ;PC (PC)2 ;SP (SP)1, (SP) (PC)L ;SP (SP)1, (SP) (PC)H ; PC100 addr11 指令功能指令功能 先将先将PC+2(完成取指操作并指向下一条指令的地(完成取指操作并指向下一条指令的地址),再把该地址址),再把该地址压入堆栈保护压入堆栈保护起来,然后把起来,然后把addr11送入送入PC,和,和PC当前值的高当前值的高5位合并成位合并成16位位的子程序入口地址,并转入该地址执行子程序。的子程序入口地址,并转入该地址执行子程序。2 2、绝对调用指令、绝对调用指令101 子程序返回指令子程序返回指令指令格式指令格式 RET ;PCH
53、(SP) , SP (SP)1 ;PCL (SP) , SP (SP)1指令解释指令解释 将保存在堆栈中的断点地址弹出送给将保存在堆栈中的断点地址弹出送给PC,使,使CPU处继续往下执行主程序。处继续往下执行主程序。注意:注意:3 3、 返回指令返回指令102 中断返回指令中断返回指令指令格式指令格式 RETI ;PCH (SP) , SP (SP)1 ;PCL (SP) , SP (SP)1指令解释指令解释 将保存在堆栈中的断点地址弹出送给将保存在堆栈中的断点地址弹出送给PC,使,使CPU处继续执行主程处继续执行主程序。序。注意:注意:103指令格式指令格式 NOP ;PC (PC)+1指令
54、解释指令解释 这是一条这是一条1字节的指令。该指令执行时字节的指令。该指令执行时CPU不进行不进行 任何操作,但需要任何操作,但需要,通,通 常用于短暂的延时。常用于短暂的延时。 四、空操作指令四、空操作指令104举例说明举例说明 例例3-32:调用延时子程序。调用延时子程序。 START: MOV P1, A LCALL DELAY INC A SJMP START . DELAY: MOV R0, #5 DY1: NOP DJNZ R0, DY1 RET105l 功能功能的传送、修改、逻辑操作等。的传送、修改、逻辑操作等。l 注意注意 以以为位累加器,以可位寻址的为位累加器,以可位寻址的为
55、操作数。为操作数。l 分类:分类:3.6 3.6 位操作类指令位操作类指令106指令格式指令格式 MOVC,bit ;CY(bit) MOVbit ,C ;bitCY指令解释指令解释 实现某个实现某个与与之间的之间的。注意注意 两个两个bit之间不能直接传送,必须通过位累加器之间不能直接传送,必须通过位累加器C。 一、位传送指令一、位传送指令107举例说明举例说明 例例3-33:设(设(CY)=0,(20H).1=1,执行指令:,执行指令: 等同与:等同与: 结果为:结果为:CY=1。 注意:这里的注意:这里的01H是位地址,是位地址,20H是内部是内部RAM的的 字节地址。字节地址。 108
56、指令格式指令格式 CLRC ;CY 0 CLRbit ; bit 0 SETB C ;CY 1 SETBbit ; bit 1指令解释指令解释 前两条指令是把位累加器前两条指令是把位累加器C和和bit位的内容位的内容清清0。 后两条指令是把位累加器后两条指令是把位累加器C和和bit位的内容位的内容置置1。 二、位置位清二、位置位清0 0指令指令109举例说明举例说明 例例3-34:要设定工作寄存器要设定工作寄存器2区为当前工作区,可区为当前工作区,可用以下指令实现:用以下指令实现: 结果为:结果为:RS1=1, RS0=0 。 等同与:等同与:110指令格式指令格式 ANL C, bit ;C
57、YCY(bit) ANL C, /bit ;CYCY(/bit) ORL C, bit ;CYCY(bit) ORL C, /bit ;CYCY(/bit) CPL C ;CY /CY CPL bit ;bit / bit 三、位逻辑运算指令三、位逻辑运算指令 前两条指令的功能前两条指令的功能是将是将bit位的值(或位的值(或bit取反后的值)与取反后的值)与累加器累加器C的值进行的值进行操作,结果操作,结果送位累加器送位累加器C。中间两条指令的中间两条指令的功能是将功能是将bit位的位的值(或值(或bit取反后取反后的值)与累加器的值)与累加器C的值进行的值进行操作,结果送位操作,结果送位累
58、加器累加器C。后两条指令的功能后两条指令的功能是把位累加器是把位累加器C和和bit位的内容位的内容。111举例说明举例说明 例例3-35:用编程的方法实现下图所示电路的功能:用编程的方法实现下图所示电路的功能: 程序如下:程序如下: MOV C, P1.3 ANL C, P1.4 ORL C, /P1.2 MOV P3.0, C1 1P1.2P1.4P1.3P3.0 .&1 1112 1、以、以CY状态为条件的转移指令状态为条件的转移指令指令格式指令格式 JC rel ;若若(CY)=1则转移,则转移,PC(PC)2rel JNC rel ;若若(CY)=0则转移,则转移,PC(PC)2rel
59、指令解释指令解释两条指令是对两条指令是对。v 第一条是若第一条是若(CY)=1,则转移到目标地址去执行;,则转移到目标地址去执行;若若(CY)=0,则程序顺序执行。,则程序顺序执行。v 第二条是若第二条是若(CY)=0,则转移到目标地址去执行;,则转移到目标地址去执行;若若(CY)=1,则程序顺序执行。,则程序顺序执行。 四、位条件转移指令四、位条件转移指令113举例说明举例说明 例例3-36:比较片内:比较片内RAM的的50H和和51H单元中两个单元中两个8位无符号数的大小,把大数存入位无符号数的大小,把大数存入60H单元。若两单元。若两数相等,则把标志位数相等,则把标志位F0置置1。 MO
60、V A, 50H CJNE A, 51H, LOOP SETB F0 SJMP HERE LOOP: JC LOOP1 MOV 60H, A SJMP HERE LOOP1: MOV 60H, 51H HERE: SJMP HERE1142、以位变量状态为条件的转移、以位变量状态为条件的转移 指令格式指令格式 ;若若(bit)=1则转移则转移, PC(PC)3rel ;若若(bit)=0则转移则转移, PC(PC)3rel ;若若(bit)=1则转移则转移, 同时同时bit0, PCPC3rel 第一条指令的功能是若第一条指令的功能是若bit位位内容为内容为 ,到目标地址,到目标地址,若为若为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中语文复习:初中生必背古诗词
- 河北省2025-2026学年高一化学上学期第一次月考含解析新人教版
- 1301综采工作面回撤方案及安全技术措施
- 论文评审意见16例
- 物料管理的生命周期管理与产品开发
- 无刷电机电磁噪音振动的最主要原因分析和有效解决途径
- 学术期刊论文标准格式
- 浅析银行上门收款服务工作之操作风险
- 临床路径模拟教学对医患沟通能力提升的效果评价
- 门脉高压症专业知识讲座课件
- 2025国开学习网《现代教育原理》形考任务1234答案
- DB13 2081-2014 工业和民用燃料煤
- 2025全国农业(水产)行业职业技能大赛(水生物病害防治员)选拔赛试题库(含答案)
- 中国早期结直肠癌筛查流程专家共识
- 外墙修缮施工协议书
- 《混凝土裂缝控制》课件
- 基于平衡计分卡的MC公司直营连锁店绩效管理方案优化研究
- 电池管理系统(BMS)设计与实现毕业答辩
- 工程质量终身责任承诺书
- 性病预防知识培训课件
- 软件开发管理制度范本
评论
0/150
提交评论