收藏 分销(赏)

理学指令系统福建专升本电子类复习资料专升本电子类复习资料.pptx

上传人:精*** 文档编号:4209277 上传时间:2024-08-25 格式:PPTX 页数:150 大小:1.33MB
下载 相关 举报
理学指令系统福建专升本电子类复习资料专升本电子类复习资料.pptx_第1页
第1页 / 共150页
理学指令系统福建专升本电子类复习资料专升本电子类复习资料.pptx_第2页
第2页 / 共150页
理学指令系统福建专升本电子类复习资料专升本电子类复习资料.pptx_第3页
第3页 / 共150页
理学指令系统福建专升本电子类复习资料专升本电子类复习资料.pptx_第4页
第4页 / 共150页
理学指令系统福建专升本电子类复习资料专升本电子类复习资料.pptx_第5页
第5页 / 共150页
点击查看更多>>
资源描述

1、要求:掌握 MCS-51 单片机的寻址方式及各种寻址方式可用的存贮空间。学会简单的单片机应用程序的设计方法。2.1 2.1 汇编语言汇编语言2.1.1 2.1.1 指令和程序设计语言指令和程序设计语言2.1.2 2.1.2 指令格式指令格式BACK2.1.1 2.1.1 指令和程序设计语言指令和程序设计语言指令:指令:是是CPU根据人的意图来执行某种操作的命令。根据人的意图来执行某种操作的命令。程序设计语言:程序设计语言:是实现人机交换信息的基本工具,是实现人机交换信息的基本工具,分为机器语言、汇编语言和高级语言。分为机器语言、汇编语言和高级语言。机器语言:机器语言:用二进制编码表示每条指令,

2、是计算机用二进制编码表示每条指令,是计算机能直接识别和执行的语言。能直接识别和执行的语言。汇编语言:汇编语言:是用助记符、符号和数字等来表示指令是用助记符、符号和数字等来表示指令的程序设计语言。它与机器语言指令是一一对应的。的程序设计语言。它与机器语言指令是一一对应的。BACK2.1.2 2.1.2 指令格式指令格式89S51汇编语言指令格式汇编语言指令格式操作码操作码 目的操作数目的操作数,源操作数,源操作数;注释;注释汇编语言指令对应的二进制代码格式汇编语言指令对应的二进制代码格式单字节指令单字节指令双字节指令双字节指令三字节指令三字节指令BACK单字节指令单字节指令1、指令码中隐含着对某

3、一种寄存器的操作、指令码中隐含着对某一种寄存器的操作如:指令如:指令“INC DPTR”的指令代码格式为:的指令代码格式为:A3H=1 0 1 0 0 0 1 12、由指令中的、由指令中的rrr三位的不同编码指定某三位的不同编码指定某一寄存器一寄存器如:指令如:指令“MOV A,Rn”的指令代码格式为:的指令代码格式为:1 1 1 0 1 r r r BACK双字节指令双字节指令用一个字节表示操作码,另一个字节表用一个字节表示操作码,另一个字节表示操作数或操作数所在的地址。示操作数或操作数所在的地址。格式为:格式为:操作码操作码立即数或地址立即数或地址BACK三字节指令三字节指令一个字节操作码

4、,两个字节操作数。一个字节操作码,两个字节操作数。格式为:格式为:BACK立即数或地址立即数或地址操作码操作码立即数或地址立即数或地址2.2 2.2 寻址方式寻址方式什么是寻址方式?什么是寻址方式?所谓寻址就是寻找指令中操作数或操作数所谓寻址就是寻找指令中操作数或操作数所在的地址,其目的就是要对操作数进行运算,所在的地址,其目的就是要对操作数进行运算,之后的操作结果根据地址存放在相应的寄存器之后的操作结果根据地址存放在相应的寄存器或存储器单元中。或存储器单元中。BACK符号注释符号注释Rn(n=0-7):当前选中的工作寄存器组:当前选中的工作寄存器组R0-R7。Ri(I=0,1):作为地址指针

5、的两个工作寄存器:作为地址指针的两个工作寄存器R0,R1。#data:8位立即数。位立即数。#data16:16位立即数。位立即数。direct:8位片内位片内RAM单元(包括单元(包括SFR)的直接地址。)的直接地址。addr11:11位目的地址,用于位目的地址,用于ACALL和和AJMP指令中。指令中。addr16:16位目的地址。用于位目的地址。用于LCALL和和LJMP指令中。指令中。rel:补码表示的:补码表示的8位地址偏移量。范围:位地址偏移量。范围:-128-+127D。bit:片内:片内RAM或或SFR的直接寻址位地址。的直接寻址位地址。:间接寄存器的符号。:间接寄存器的符号。

6、/:位操作指令中对该位先取反再参与操作,不影响原值。:位操作指令中对该位先取反再参与操作,不影响原值。():中的内容。中的内容。():指出的地址单元中的内容。指出的地址单元中的内容。:将左边的内容送于右边的单元。多一个将左边的内容送于右边的单元。多一个,则其右边的(),则其右边的()少一个。少一个。$:当前指令的地址。当前指令的地址。BACK寻址方式的种类:寻址方式的种类:1、寄存器寻址、寄存器寻址2、直接寻址、直接寻址3、立即数寻址、立即数寻址4、寄存器间接寻址、寄存器间接寻址 5、变址寻址、变址寻址6、相对寻址、相对寻址 7、位寻址、位寻址BACK1、寄存器寻址、寄存器寻址寄存器寻址:寄存

7、器寻址:由指令指出寄存器组由指令指出寄存器组R0R7中的某一个或其他寄存器中的某一个或其他寄存器(A,B,DPTR等等)的内的内容作为操作数。容作为操作数。例如:例如:MOV A,R0;(R0)A MOV P1,A;(A)P1口 ADD A,R0;(A)+(R0)ABACK2、直接寻址、直接寻址直接寻址方式:直接寻址方式:在指令中直接给出操作数所在存储在指令中直接给出操作数所在存储单元的地址。指令中操作数部分是操作数所在地址。单元的地址。指令中操作数部分是操作数所在地址。直接寻址方式可访问片内直接寻址方式可访问片内RAM的的128个单元以及所有个单元以及所有的的SFR。对于。对于SFR,既可以

8、使用它们的地址,也可以,既可以使用它们的地址,也可以使用它们的名字。使用它们的名字。例如:例如:MOV A,3AH;(3A)A MOV A,P1;(P1口口)A 或:或:MOV A,90H;90H是是P1口的地址口的地址BACK说明:(1)比较以下三条指令INC AINC ACC ;ACC是SFR中的一个INC 0E0HA、ACC、0E0H是累加器的三种表示形式。是寄存器寻址;是直接寻址,但都表示累加器的内容自加1,即执行结果相同。(2)注意区别字节地址和位地址。如:MOV A,20HMOV C,20H ;(20H)Cy 形式相同,但结果不同,因为中的20H为字节地址,中的20H为位地址。3、

9、立即数寻址、立即数寻址立即数寻址:立即数寻址:指令操作码后面紧跟的是一字节或两指令操作码后面紧跟的是一字节或两字节操作数,用字节操作数,用“#”号表示,以区别直接地址。号表示,以区别直接地址。例如:例如:MOV A,3AH;(;(3AH)AMOV A,#3AH;3AHAMOV DPTR,#2000H;2000HDPTR ;(;(DPH)=20H ;(;(DPL)=00H【思考】如下一条指令对否?MOV PC,#2000H BACK4、寄存器间接寻址、寄存器间接寻址 寄存器间接寻址:寄存器间接寻址:操作数的地址事先存放在某个寄操作数的地址事先存放在某个寄存器中,寄存器间接寻址是把指定寄存器的内容

10、作为存器中,寄存器间接寻址是把指定寄存器的内容作为地址,由该地址所指定的单元内容作为操作数。地址,由该地址所指定的单元内容作为操作数。89S51规定规定R0或或R1为间接寻址寄存器,它可寻址内为间接寻址寄存器,它可寻址内部地址部地址RAM低位的低位的128B单元内容单元内容和片外和片外RAM低低256B单元单元。还可采用。还可采用DPTR作为间接寻址寄存器,寻作为间接寻址寄存器,寻址外部数据存储器的址外部数据存储器的64KB空间。空间。堆栈操作指令堆栈操作指令(PUSH、POP)也属于寄存器间接寻址方式,即把也属于寄存器间接寻址方式,即把SP作间址寄存器。作间址寄存器。BACK例如:例如:将片

11、内RAM 65H单元内容47H送A,可执行指令“MOV A,R0”。其中R0内容为65H。如图所示:65H47HR0A47H数据存储器数据存储器地址65H以指令中所指定以指令中所指定的的R0内容内容(65H)为指针)为指针将片内将片内RAM 65H单元内容单元内容47H送送ABACK5、变址寻址、变址寻址(基址寄存器基址寄存器+变址寄存器间接寻址变址寄存器间接寻址)变址寻址:变址寻址:以某个寄存器的内容为基地址,在这个基地址的基础上加上地址偏移量形成真正的操作数地址。89S51中采用DPTR或PC为变址寄存器,A的内容为地址偏移量。变址寻址只能访问程序存储器,访问范围为64KB。BACK只有两

12、条指令:MOVC A,A+PC;(A)+(PC)AMOVC A,A+DPTR;(A)+(DPTR)A 例如:例如:MOVC A,A+DPTR;(A)+(DPTR)A如图所示如图所示1EH0302HROMDPTRAA02F1H11H1EH+DPTR内容与内容与A的内容之的内容之和为程序存储器地址和为程序存储器地址程序存储器内容送程序存储器内容送ABACK6、相对寻址、相对寻址 相对寻址:相对寻址:以程序计数器以程序计数器PC的当前值(指的是从程序存储的当前值(指的是从程序存储器中取出转移指令后的器中取出转移指令后的PC值,也可以说是正在值,也可以说是正在执行指令的下一条指令的地址)作为基地址,执

13、行指令的下一条指令的地址)作为基地址,与指令中给出的相对偏移量进行相加,把所得与指令中给出的相对偏移量进行相加,把所得之和作为程序的转移地址。之和作为程序的转移地址。51单片机中的控制转移类指令都属于此种寻址单片机中的控制转移类指令都属于此种寻址方式。方式。BACK 如在程序存储器中2000H单元有一条双字节的相对转移指令“SJMP 75H”。其操作示意图如图25所示。程序存储器2000H、2001H单元的内容80H、75H是“SJMP 75H”的机器语言代码。实际编程中偏移量75H用标号表示,省去我们手工计算转移地址的麻烦,如:SJMP LOOP LOOP:7、位寻址、位寻址位寻址:位寻址:

14、采用位寻址方式的指令的操作数是8位二进制数中的某一位,指令中给出的是位地址。位地址在指令中用bit表示。例如:CLR bit;位地址的两种表示方法:位地址的两种表示方法:直接使用位地址,如D3H;直接用寄存器名字加位数,如PSW.3。位寻址区域:位寻址区域:片内RAM的20H-2FH的16个单元中的128位;字节地址能被8整除的SFR。BACK表表2-2 操作数寻址方式和有关空间操作数寻址方式和有关空间BACKBACKMCS-51MCS-51指令系统可分为五大类指令系统可分为五大类1 1 数据传送指令:数据传送指令:2929条条2 2 算术运算指令:算术运算指令:2424条条3 3 逻辑运算及

15、移位指令:逻辑运算及移位指令:2424条条4 4 控制转移指令:控制转移指令:1717条条5 5 位操作指令(布尔操作):位操作指令(布尔操作):1717条条Back 2.3.1 2.3.1 数据传送指令数据传送指令Back 数据传送指令是MCS-51单片机汇编语言程序设计中使用最频繁的指令,包括内部 RAM、寄存器、外部RAM以及程序存储器之间的数据传送。数据传送操作是指把数据从源地址传送到目的地址,源地址内容不变,同时很少的数据传送指令会影响PSW的结果。Back 1.1.以累加器以累加器A A为目的操作数的指令为目的操作数的指令 (4(4条条,即即4 4种寻址方式种寻址方式)2.2.以寄

16、存器以寄存器RnRn为目的操作数的指令(为目的操作数的指令(3 3条)条)3.3.以直接地址为目的操作数的指令(以直接地址为目的操作数的指令(5 5条)条)4.4.以间接地址为目的操作数的指令(以间接地址为目的操作数的指令(3 3条)条)5.5.十六位数据传送指令十六位数据传送指令(1(1条条)6.6.查表指令(查表指令(2 2条)条)7.7.累加器累加器A A与片外与片外RAMRAM传送指令传送指令(4(4条条)8.栈操作指令(二条)9.9.交换指令交换指令(4(4条条)2.3.1.1 内部数据传送指令内部数据传送指令格式:MOV dst,src;(src)dst或者,(dst)=(src)

17、各操作数间传送关系如下图所示。说明:(1)立即数不能作dst。(2)direct可以作dst;direct之间还可以互相传送数据,提高了数据传送的速度和效率。(3)无Rn和Rn之间数据传送的指令。Back1.1.以累加器以累加器A A为目的操作数的指令为目的操作数的指令(4(4条条,即即4 4种寻址方式种寻址方式)例:例:MOV A MOV A,#30H#30H ;(;(A A)=30H=30H MOV A MOV A,30H 30H ;(;(A A)=11H=11H MOV A MOV A,R1 R1 ;(;(A A)=11H=11H MOV A MOV A,R1 R1 ;(;(A A)=3

18、0H=30H 2 2、以寄存器、以寄存器RnRn为目的操作数的指令(为目的操作数的指令(3 3条)条)Back如:(如:(A A)=78H=78H,(,(R5R5)=47H=47H,(,(70H70H)=F2H=F2H,执行指令:,执行指令:MOV R5MOV R5,A A ;(;(A A)R5R5,(R5R5)=78H=78HMOV R5MOV R5,70H 70H;(;(70H70H)R5R5,(R5R5)=F2H=F2HMOV R5MOV R5,#A3H#A3H;A3HA3HR5R5,(R5R5)=A3H=A3H注注意意,在在89S5189S51指指令令系系统统中中没没有有“MOV MO

19、V RnRn,RnRn”传送指令。传送指令。Back 3 3、以直接地址为目的操作数的指令(、以直接地址为目的操作数的指令(5 5条)条)Back4 4、以间接地址为目的操作数的指令(、以间接地址为目的操作数的指令(3 3条)条)Back5 5、十六位数据传送指令十六位数据传送指令(1(1条条)这这条条指指令令的的功功能能是是把把1616位位常常数数送送入入DPTRDPTR。DPTRDPTR由由DPHDPH和和DPLDPL组成。组成。BackBack【例 2 1】已 知:Ri=32H,(30H)=AAH,(31H)=BBH,(32H)=CCH,请问执行下列指令后累加器A、50H单元、R6、32

20、H单元和P1口中的内容是什么?MOV A,30H;A=(30H)=AAHMOV 50H,A;(50H)=(A)=AAHMOV R6,31H;R6=(31H)=BBHMOV P1,32H;P1=(32H)=CCHMOV R1,#30H;(R1)=(32H)=30HMOV A,R1;A=(R1)=30H所以,(A)=30H,(50H)=AAH,(R6)=BBH,(32H)=30H,(P1)=CCH。2.3.1.2 查表指令(查表指令(2条)条)ROM的字节传送指令的字节传送指令属于变址寻址指令,所查的表格存放在程属于变址寻址指令,所查的表格存放在程序存储器中,以序存储器中,以DPTRDPTR和和P

21、CPC作基地址即起始作基地址即起始地址,累加器地址,累加器A A为偏移量,分为偏移量,分2 2种:种:Back基地址寄存器+变址寄存器间接寻址PC+A(程序存储器0-64K)基地址寄存器+变址寄存 器间接寻址DPTR+A(程序存储器0-64K)A寄存器图图2-7 2-7 程序存贮器传送(查表)程序存贮器传送(查表)例:执行下面程序段后结果如何?执行下面程序段后结果如何?MOV DPTR,#2000H MOV DPTR,#2000H;(;(DPTRDPTR)=2000H=2000HMOV A ,#0AH MOV A ,#0AH ;(;(A A)=0AH=0AHMOVC MOVC A A ,A+D

22、PTR A+DPTR ;(A A)=(A A)+(DPTRDPTR)=(200AH200AH)则:则:(A)=(200AH)=11H(A)=(200AH)=11H例例:所以,最后结果为:所以,最后结果为:(A)=01 (A)=01 (R0)=01 (PC)=1004(R0)=01 (PC)=1004Back2.3.1.3 外部外部RAM的字节数据传送指令的字节数据传送指令(4条)条)I/O指令指令Back1.MCS51没有专门的I/O指令,它只能通过这种方式与外RAM或外设打交道,其中,前两条指令是输入指令,后两条是输出指令。2.外部RAM的数据传送,只能通过累加器A进行。第第2 2,4 4两

23、两条条指指令令以以DPTRDPTR为为片片外外数数据据存存储储器器1616位位地地址址指指针针,寻寻址址范范围围达达64KB64KB。其其功功能能是是DPTRDPTR所所指指定定的的片片外外数数据据存存储储器器与与累累加加器器A A之之间间传送数据。传送数据。第第1 1,3 3两两条条指指令令是是用用R0R0或或R1R1作作低低8 8位位地地址址指指针针,由由P0P0口口送送出出,寻寻址址范范围围是是256256字字节节。这这两两条条指指令令完完成成以以R0R0或或R1R1为为地地址址指指针针的的片片外外数数据据存存储器与累加器储器与累加器A A之间的传送数据。之间的传送数据。上述四条指令的操

24、作如图上述四条指令的操作如图2-82-8所示所示:寄存器寄存器间接寻址 寄存器间接寻址 R1.R0DP(外RAM0-255)(外RAM0-64K)图 2-8 外部数据存储器传送操作例例:若:片内若:片内RAM(30H)=01HRAM(30H)=01H,片外,片外RAM RAM(30H)=02H(30H)=02H,执行下面程序段后的结果如何,执行下面程序段后的结果如何。Back 2.3.1.4 栈操作指令(二条)Backdirect应是直接地址。如:正确 错误PUSH ACC PUSH APOP OOHPOP R0 例:例:继续上例继续上例:Back 2.3.1.5 2.3.1.5 数据交换指令

25、数据交换指令(5(5条条)Back(1)字节变换指令例例:(2)(2)半字节交换指令半字节交换指令Back SWAP A;(A03)(A 47),A的高低半字节交换注意:1、2两类指令都只影响标志位P,但3指令不影响任何标志位。(3)(3)累加器半字节交换指令累加器半字节交换指令【例】初始时:(A)=34H,(30H)=11H,执行以下程序段:XCH A,30H;(A)=11H,(30H)=34HMOV R1,#30H;(R1)=30HXCH A,R1;(A)=34H,(30H)=11HXCHD A,R1;(A)=31H,(30H)=14HSWAP A;(A)=13H2.3.2 2.3.2 算

26、术运算指令算术运算指令Back 算术逻辑运算和移位类指令中,累加器A是最为繁忙的指令,且多为dst。算术运算类指令执行后除了增1、减1指令不影响CY、AC、OV外,其它指令会影响改变它们的值。其操作对象为8位的无符号二进制整数,若对带符号数或多字节二进制数运算,需通过编写程序实现。Back1.1.不带进位加法指令不带进位加法指令(4(4条条)2.2.带进位加法指令(带进位加法指令(4 4条)条)3.3.十进制调整指令十进制调整指令(1(1条条)4.4.带借位减法指令(带借位减法指令(4 4条)条)5.5.乘法指令(乘法指令(1 1条)条)6.6.除法指令(除法指令(1 1条)条)7.7.加加1

27、 1指令(指令(5 5条)条)8.8.减减1 1指令指令(4(4条条)1 1、不带进位加法指令不带进位加法指令(四条四条)Back例:例:Back2 2 、带进位加法指令(四条)、带进位加法指令(四条)Back3 3、十进制调整指令十进制调整指令(1(1条条)Back例例:设累加器设累加器A A内容为:内容为:01010110B01010110B(即为(即为5656的的BCDBCD码),寄存器码),寄存器R3R3的内容为的内容为01100111B01100111B(即(即6767的的BCDBCD码),码),CYCY内容为内容为1 1。求执行下列指令后的结果。求执行下列指令后的结果。ADDC A

28、ADDC A,R3R3;DA ADA A;Back 例:有两个BCD码表示的4位十进制数,分别存放在内部数据存储器的50H51H单元和60H61H单元,试编写程序求这两个数之和,结果的和存放在40H41H单元,进位存放在42H单元。解:求两个BCD数之和的运算程序段如下:MOVA,50H;取第一个数低2位BCD码ADD A,60H;加第二个数低2位BCD码DA A;十进制调整MOV 40H,A;保存结果的低2位MOV A,51H;取高位BCD码ADDC A,61H;高位相加DA A;十进制调整MOV 41H,A;保存结果的高2位MOV A,#00HADDC A,#00H;计算进位MOV 42H

29、,A;保存进位4 4 、带借位减法指令(四条)、带借位减法指令(四条)Back 说明:说明:(1)51 1系系列列单单片片机机没没有有不不带带借借位位的的减减法法指指令令。那那么么对对于于单单字字节节的的减减法法指指令令怎怎么么处处理理这这种种情情况况呢呢?可可用用“CLR CLR C C”清清CyCy,即,即Cy=0Cy=0,类似于不带借位。,类似于不带借位。(2)减减法法指指令令结结果果影影响响程程序序状状态态字字寄寄存存器器PSW的的CY、OV、AC和和P标志。标志。例:设(例:设(A A)=0C9H,=0C9H,(R2R2)=54H,Cy=1=54H,Cy=1。执行指令执行指令“SUB

30、B ASUBB A,R2R2”的结果如何的结果如何?Back5 5、乘法指令(乘法指令(1 1条)条)单字节四周期指令单字节四周期指令,操作数均为操作数均为8位无位无符号整数。符号整数。该该指指令令若若乘乘积积大大于于0FFH0FFH,则则OVOV置置1 1,否否则则OVOV清清0 0。CyCy位位总总是是被被清清0 0。该该操操作作也也影影响响标标志位志位P。Back6 6、除法指令(除法指令(1 1条)条)单字节四周期指令单字节四周期指令,操作数均为操作数均为8位无位无符号整数。符号整数。Back若若除除数数(B)=00H,则则结结果果无无法法确确定定,则则OV置置1。CY总总是是被被清清

31、0。该该操操作作也也影影响响标标志志位位P。7 7、加加1 1指令(指令(5 5条)条)Back8 8、减减1 1指令指令(4(4条条)Back2.3.3 2.3.3 逻辑操作指令逻辑操作指令Back 1.1.简单操作指令(简单操作指令(2 2条)条)2.2.移位指令(移位指令(4 4条)条)3.3.逻辑逻辑“与与”指令(指令(6 6条)条)4.逻辑逻辑“或或”指令(指令(6条)条)5.5.逻辑逻辑“异或异或”指令(指令(6 6条)条)Back1.1.简单操作指令(简单操作指令(2 2条)条)Back(1)(1)累加器累加器A A清清0 0指令指令(2)(2)累加器累加器A A取反指令取反指令

32、Back【思考】编程序段,实现功能:对30H单元中的数X求补并保存在原单元。2.2.移位指令(移位指令(4 4条)条)Back(1)(1)累加器累加器A A循环左移指令循环左移指令(2)(2)累加器累加器A A循环右移指令循环右移指令 (3)(3)累加器累加器A A连同进位位循环左移指令连同进位位循环左移指令 RLCRLCA A;(4)(4)累加器累加器A A连同进位位循环右移指令连同进位位循环右移指令 RRCRRCA A;Back3.3.逻辑逻辑“与与”指令(指令(6 6条)条)Back 这这组组指指令令中中前前四四条条指指令令是是将将累累加加器器A A的的内内容容和和操操作作数数所所指指出

33、出的的内内容容按按位位进进行行逻逻辑辑“与与”,结结果果存存放放在在A A中中。前前四四条条指指令令的的操操作作影响标志位影响标志位P P。后后两两条条指指令令是是将将直直接接地地址址单单元元中中的的内内容容和和操操作作数数所所指指出出的的单单元元的的内内容容按按位位进进行行逻逻辑辑“与与”,结结果果存存入入直直接接地地址址单单元元中中。若若直直接接地地址址正正好好是是I/OI/O端端口口,则则为为“读读改改写写”操作。操作。Back 应用:可以使目的操作数清零或保留其中有用的位,如ANL dst,80H 【思考】将41H(ASCII码值)的高4位清零,低4位不变,何法?MOVA,#41HAN

34、LA,#0FH 或MOV direct,#0FH 4.逻辑逻辑“或或”指令(指令(6条)条)Back 这这组组指指令令的的功功能能是是将将两两个个指指定定的的操操作作数数按按位位进进行行逻逻辑辑“或或”。前前四四条条指指令令的的操操作作结结果果存存放放在在累累加加器器A A中中,操操作作影影响响标标志志位位P P;后后两两条条指指令令的的操作结果存放在直接地址单元中。操作结果存放在直接地址单元中。应应用用:对对RAMRAM存存储储器器单单元元或或A A中中的的数数的的某某些些位位置置“1 1”,而其余位不变。,而其余位不变。Back5.5.逻辑逻辑“异或异或”指令(指令(6 6条)条)Back

35、这这组组指指令令的的功功能能是是将将两两个个指指定定的的操操作作数数按按位位进进行行“异异或或”。前前四四条条指指令令的的结结果果存存放放在在累累加加器器A A中中,操操作作影影响响标标志志位位P P;后后两两条条指指令令的的操操作作结结果果存存放放在在直直接接地地址址单元中。单元中。“异或异或”原则:相同为原则:相同为0 0,不同为,不同为1 1。应应用用:对对RAMRAM存存储储器器单单元元或或A A中中的的数数的的某某些些位位变变反反,而而其其他他位位不不变变,如如#0FH#0FH前前四四位不变。位不变。Back上述逻辑操作类指令归纳如图。上述逻辑操作类指令归纳如图。例:拆字程序:在内部

36、RAM 40H单元保存有以压缩BCD码表示的2位十进制数,编程将它们拆开,分别保存在内部RAM的41H、42H单元。程序如下:MOV A,40H;压缩BCD码送累加器ANL A,#0FH;高4位清0,保留低4位MOV 41H,A;保存低4位BCD码MOV A,40H;取数据MOV A,#0F0H;低4位清0,保留高4位SWAP A;高低位交换MOV 42H,A;保存高4位BCD码 2.3.4 控制程序转移类指令控制程序转移类指令 1.无条件转移指令(无条件转移指令(4条条)2.空操作指令(空操作指令(1条)条)3.条件转移指令(条件转移指令(8条)条)4.调用和返回指令调用和返回指令Back

37、Back1、无条件转移指令(、无条件转移指令(4条)条)Back(1)短短(绝对绝对)转移指令转移指令 Back 这条指令提供了11位地址,可在2K范围内无条件转移到由a10-a0所指出的地址单元中。因为指令只提供低11位地址,高5位为原PC11-15位值,因此,转移的目标地址必须在AJMP指令后面指令的第一个字节开始的同一2K字节范围内。Back(2)长转移指令长转移指令BackBackORG 0000H;开机后(PC)=0000HLJMP 0F80H 已知某单片机监控程序始地址为0F80H,请问可用什么办法可使单片机开机后自动执行该监控程序。(3)相对转移(短转移)指令相对转移(短转移)指

38、令BackSJMP rel;1000 0000rel (相对地址)先(PC)+2 PC 后(PC)+rel PC(4)间接转移指令间接转移指令BackBack总结:四个无条件转移指令的转移范围。除长转指令外,其他转移指令可以生成浮动 代码,在64KB任意范围内浮动。涉及到的目标地址和偏移量均可用符号地址表示。2 空操作指令(空操作指令(1条)条)Back3 条件转移指令(条件转移指令(8条)条)Back(1)(1)判零转移指令判零转移指令 按给出的条件判断,满足则转移,不满足继续执行下一条指令,转移的目标地址为PC当前值为中心的-128+127共256B范围,共有三类:BackBack(2)比

39、较转移指令(比较转移指令(4条)条)Back格式:CJNE A,direct,rel;先(PC)+3PCCJNE A,#data,rel;先(PC)+3PCCJNE Rn,#data,rel;先(PC)+3PCCJNE Ri,#data,rel;先(PC)+3PC 说明:(1)rel为8位的带符号数,常用符号地址表示。指令的相对转移范围为-125+130,从(PC)+3为起始地址的+127-128字节单元地址。(2)指令执行后均不影响任何操作数。(3)执行过程的比较操作实际上是减法操作,只是不保存差值,而是形成标志位CY。(4)若(dst)和(src)均为无符号数,则根据CY可判断大小:CY0

40、时,(dst)(src);CY=1时,(dst)(src)(3)循环转移指令(循环转移指令(2条)条)Back 程序每执行一次本指令,将第一操作数的字节变量减1,并判字节变量是否为零,若不为0,则转移到目标地址,继续执行循环程序段;若为0,则结束循环程序段的执行,程序往下执行。其中,rel为一个带符号的8位数。转移范围同相对转移指令。指令结果不影响程序状态字寄存器PSW。DJNZ指令通常用于循环程序中控制循环次数。Back【思考思考】请用一个示意图归纳条件转移指令。请用一个示意图归纳条件转移指令。4 调用和返回指令调用和返回指令Back(1)短调用指令短调用指令Backaddr11常用符号地址

41、代替。调用范围同AJMP指令。(2)长调用指令长调用指令Backaddr16常用符号地址代替。调用范围同LJMP指令。(3)返回指令(返回指令(2条)条)BackBack在编程时不能将两种返回指令混用,中断返回一定要安排在中断服务程序的最后。例 编程:利用子程序技术把内RAM 20H2AH单元中的数清零。【思考】把本例题中的DJNZ指令改成CJNE指令,程序该如何修改?2.3.5 2.3.5 位操作位操作(布尔处理布尔处理)类指令类指令(17(17条条)1 1、位数据传送指令(、位数据传送指令(2 2条)条)2、位修正指令(位修正指令(6 6条)条)3 3、逻辑运算指令(、逻辑运算指令(4 4

42、条)条)24 4、位条件转移类指令(、位条件转移类指令(5 5条)条)本类指令分为四小类,除对本类指令分为四小类,除对C C为目的操作数进为目的操作数进行操作的指令会对行操作的指令会对CYCY产生影响外,其它指令结产生影响外,其它指令结果均不影响果均不影响PSWPSW中的标志位。中的标志位。Back回顾:1.位操作指令不是以字节为单位对操作数进行操作,而是以字节中某位为对象进行操作。位操作是对字节中的位进行操作,位值只能是0或1,又叫布尔操作。2.位操作的范围。3.3.在在进进行行位位操操作作时时,进进位位标标志志位位CYCY布布尔尔累累加加器(位累加器),简写成器(位累加器),简写成“C C

43、”。位地址的表达方式:位地址的表达方式:接写位地址:如D4H;点操作符号:如PSW.4(D0H).4;位名称方式:如RS1;用户定义名方式:如用伪指令bitBack1 1、位数据传送指令(位数据传送指令(2 2条)条)Back2、位修正指令(位修正指令(6 6条)条)Back(1)(1)位清0指令(2)位置位置1 1指令(指令(2 2条)条)Back(3)位取反指令(位取反指令(2 2条)条)Back3 3、逻辑运算指令(逻辑运算指令(4 4条)条)Back(1 1)位逻辑)位逻辑“与与”指令(指令(2 2条)条)(2 2)位逻辑)位逻辑“或或”指令(指令(2 2条)条)Back注意:注意:5

44、151单片机中没有位异或指令。单片机中没有位异或指令。4 4、位条件转移类指令(、位条件转移类指令(5 5条)条)Back说明:本小类指令中,rel为8位带符号数,指令的转移范围同SJMP指令。Back(2 2)判位变量转移指令()判位变量转移指令(2 2条)条)Back(3)判位变量并清判位变量并清0 0转移指令(转移指令(1 1条)条)Back【例】已知外RAM 2000H单元开始处有一个输入数据缓冲区,该缓冲区数据以回车符CR(ASCII码为0DH)为结束标志,试编一个完整程序能把正数送入30H(片内RAM)单元开始的正数区和把负数送入40H(片内RAM)单元开始的负数区。解:流程图如下

45、图所示,程序如下:ORG 0000HORG 0000H AJMP MAINAJMP MAIN ORG 0030HORG 0030HMAIN:MAIN:MOV DPTR,#2000H MOV DPTR,#2000H MOV R0,#30H MOV R0,#30H ;R0R0指向正数区指向正数区MOV R1,#40H MOV R1,#40H ;R1R1指向负数区指向负数区NEXT:NEXT:MOVX A,DPTR MOVX A,DPTR ;从外部;从外部RAMRAM取数取数CJNE A,#0DH,COMP CJNE A,#0DH,COMP ;若;若(A)0DH(A)0DH,转,转COMPCOMPS

46、JMP DONE SJMP DONE ;若;若(A)=0DH,(A)=0DH,转转DONEDONECOMP:COMP:JB ACC.7,LOOP JB ACC.7,LOOP ;若为负数,转;若为负数,转LOOPLOOPMOV R0,A MOV R0,A ;若为正数,则送正数区;若为正数,则送正数区INC R0 INC R0 ;修改正数区指针;修改正数区指针INC DPTR INC DPTR ;修改缓冲区指针;修改缓冲区指针SJMP NEXT SJMP NEXT ;循环;循环LOOP:LOOP:MOV R1,A MOV R1,A ;若为负数,则送负数区;若为负数,则送负数区INC R1 INC R1 ;修改负数区指针;修改负数区指针INC DPTR INC DPTR ;修改缓冲区指针;修改缓冲区指针SJMP NEXT SJMP NEXT ;循环;循环DONE:DONE:ENDEND

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 考试专区 > 专升本考试

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服