单片机原理及接口技术第三章指令系统

上传人:仙*** 文档编号:155573182 上传时间:2022-09-23 格式:PPT 页数:89 大小:2.24MB
收藏 版权申诉 举报 下载
单片机原理及接口技术第三章指令系统_第1页
第1页 / 共89页
单片机原理及接口技术第三章指令系统_第2页
第2页 / 共89页
单片机原理及接口技术第三章指令系统_第3页
第3页 / 共89页
资源描述:

《单片机原理及接口技术第三章指令系统》由会员分享,可在线阅读,更多相关《单片机原理及接口技术第三章指令系统(89页珍藏版)》请在装配图网上搜索。

1、南昌大学过控教研室南昌大学过控教研室2008.91第第3 3章章 指令系统指令系统 南昌大学过控教研室南昌大学过控教研室2008.923.1单片机指令系统概述单片机指令系统概述指令是指挥计算机工作的命令,一种计算机所指令是指挥计算机工作的命令,一种计算机所能执行的指令集合称之为该种计算机的指令系统。能执行的指令集合称之为该种计算机的指令系统。指令机器指令 0010 0100 0000 1010B(二进制数表示)24 0A(十六进制数表示)汇编指令 ADD A,#0AH 3.1.13.1.1汇编语言汇编语言南昌大学过控教研室南昌大学过控教研室2008.93 3.1.2 3.1.2 指令格式指令格

2、式 指令的表示形式称指令格式。编写程序时必须严格按指令的表示形式称指令格式。编写程序时必须严格按指令格式书写。指令格式书写。MCS-51MCS-51指令由操作码和操作数组成。汇编语言指令格指令由操作码和操作数组成。汇编语言指令格式如下:式如下:操作码助记符操作码助记符 操作数操作数1 1,操作数,操作数2 2,操作数,操作数3 3 1.操作码助记符操作码助记符2.操作数操作数南昌大学过控教研室南昌大学过控教研室2008.943.2 3.2 寻址方式寻址方式 指令中,操作数可能是指令中,操作数可能是具体的数据具体的数据,也可能是,也可能是具体的存放具体的存放数据的地址或符号数据的地址或符号,无论

3、何种情况,都,无论何种情况,都可由操作数取得参与指令运行的二进制数据。这个可由操作数取得参与指令运行的二进制数据。这个过程叫作寻址。过程叫作寻址。寻寻指指方方式式立即寻址方式立即寻址方式直接寻址方式直接寻址方式寄存器寻址方式寄存器寻址方式寄存器间接寻址方式寄存器间接寻址方式基址加变寻址方式基址加变寻址方式位寻址方式位寻址方式相对寻址方式相对寻址方式南昌大学过控教研室南昌大学过控教研室2008.953.2.1 3.2.1 立即寻址方式立即寻址方式 所谓立即寻址就是所谓立即寻址就是操作数在指令中直接给出操作数在指令中直接给出。立即寻。立即寻址方式的操作数称立即数,立即数只能是源操作数,不能址方式的

4、操作数称立即数,立即数只能是源操作数,不能作为目的操作数。作为目的操作数。立即数有立即数有8位立即数和位立即数和16位立即数位立即数。使。使用时在立即数前加用时在立即数前加“#”标志。标志。例:例:MOV A,#20H MOV DPTR,#20D8H 南昌大学过控教研室南昌大学过控教研室2008.963.2.23.2.2直接寻址方式直接寻址方式 直接寻址就是操作数直接寻址就是操作数直接以单元地址的形式直接以单元地址的形式给出。直给出。直接地址以存贮单元形式出现接地址以存贮单元形式出现。例如指令:MOV A,20H 0 8HA0 8HA21H20H1FHARAM南昌大学过控教研室南昌大学过控教研

5、室2008.973.2.33.2.3寄存器寻址方式寄存器寻址方式 寄存器寻址就是寄存器寻址就是操作数在寄存器操作数在寄存器中。中。例如指令:例如指令:MOV AMOV A,R R2 2A南昌大学过控教研室南昌大学过控教研室2008.983.2.43.2.4寄存器间接寻址方式寄存器间接寻址方式 寄存器间接寻址使用的寄存器为寄存器间接寻址使用的寄存器为Ri和和DPTR,使用时寄存器前,使用时寄存器前面加面加“标志。标志。MOV A,Ri ;MOVX A,DPTR例如:(例如:(R1)80H、(、(80H)=33H,则执行指令,则执行指令MOV A,Ri后,后,累加器累加器A的内容的内容为为33H而

6、而不是不是80H。33HA33HA80H80H内部RAM寄存器间接寻址是寄存器间接寻址是以寄存器以寄存器中的内容为地址中的内容为地址取得操作数的取得操作数的方法。和寄存器寻址相比,寄方法。和寄存器寻址相比,寄存器寻址时,寄存器中存放的存器寻址时,寄存器中存放的是操作数,而寄存器间接寻址是操作数,而寄存器间接寻址中时,寄存器中存放的是操作中时,寄存器中存放的是操作数的地址。数的地址。南昌大学过控教研室南昌大学过控教研室2008.993.2.53.2.5基址加变址寻址方式基址加变址寻址方式 基址加变址寻址就是以基址加变址寻址就是以DPTRDPTR或或PCPC为基址寄存器为基址寄存器,以,以A A为

7、变址寄为变址寄存器存器,以两者内容相加,以两者内容相加形成形成1616位地址位地址作为操作数地址。作为操作数地址。例如指令:例如指令:MOVC AMOVC A,A+DPTRA+DPTR88HA09H1000H1009H RAMDPTR+100AH1009H1008H南昌大学过控教研室南昌大学过控教研室2008.9103.2.63.2.6位寻址方式位寻址方式 位寻址方式就是位寻址方式就是以位为操作数以位为操作数。MCS-51MCS-51单片机有相当强的单片机有相当强的位处理功能,可以对位进行直接操作。位处理功能,可以对位进行直接操作。例如指令:例如指令:MOV C,4AH 位寻址范围:位寻址范围

8、:1)内部)内部RAM的位寻址区的位寻址区 2)可供位寻址的)可供位寻址的11个专用寄存器个专用寄存器 南昌大学过控教研室南昌大学过控教研室2008.9113.2.73.2.7相对寻址方式相对寻址方式 相对寻址是在相对转移指令中,根据相对寻址是在相对转移指令中,根据地址相对当前地址相对当前 PCPC的偏移量的偏移量得到操作数的方式。如:得到操作数的方式。如:JZ relJZ rel偏移量偏移量rel是一带符号是一带符号8位二进数的补码数,范围位二进数的补码数,范围为为-128+127。实际书写程序时往往先用地址标号代。实际书写程序时往往先用地址标号代替,在汇编为机器指令时再计算出来。替,在汇编

9、为机器指令时再计算出来。南昌大学过控教研室南昌大学过控教研室2008.912例例3-1 指出下列每一条指令的寻址方式。指出下列每一条指令的寻址方式。MOV 2FH,#40HMOV A,R0MOV DPTR,#2020HMOV 45H,P0MOV A,R1MOVC A,A+PCJC LOOP 中的源操作数为立即寻址,目的中的源操作数为立即寻址,目的操作数为直接寻址。操作数为直接寻址。中的源操作数为寄存器间接寻址,中的源操作数为寄存器间接寻址,目的操作数为寄存器寻址。目的操作数为寄存器寻址。中的源操作数为中的源操作数为16位立即寻址,位立即寻址,目的操作数为寄存器寻址。目的操作数为寄存器寻址。中的

10、源操作数和目的操作数都是中的源操作数和目的操作数都是直接寻址。直接寻址。中的源操作数和目的操作数都为中的源操作数和目的操作数都为寄存器寻址。寄存器寻址。中的源操作数为基址加变址寻址,中的源操作数为基址加变址寻址,目的操作数为寄存器寻址。目的操作数为寄存器寻址。中的操作数为相对寻址。中的操作数为相对寻址。南昌大学过控教研室南昌大学过控教研室2008.913 例例3-23-2 判断下列指令是否正确,若不正确请指出判断下列指令是否正确,若不正确请指出错误:错误:MOV A ,DPTR MOV DPTR,#03H MOV#80H,R7 MOV B,C 解解不正确。不正确。A是是8位寄存器,位寄存器,D

11、PTR为为16位寄位寄存器,不匹配。存器,不匹配。正确。不正确。不正确。#80H为立即数,不能作为目的地址。为立即数,不能作为目的地址。不正确。不正确。B为为8位字节寄存器,位字节寄存器,C为为1位位累加位位累加器,不匹配。器,不匹配。南昌大学过控教研室南昌大学过控教研室2008.9143.3 3.3 数据传送指令数据传送指令1.通用传送指令通用传送指令MOV 指令格式:指令格式:MOV MOV ,功能:把源操作数所表示的数据传送到目的地址功能:把源操作数所表示的数据传送到目的地址指定的存贮单元之中,而不改变源操作数。即该指令指定的存贮单元之中,而不改变源操作数。即该指令是是“复制复制”,不是

12、,不是“搬家搬家”。3.3.13.3.1内部内部RAMRAM数据传送指令数据传送指令南昌大学过控教研室南昌大学过控教研室2008.9152)以以Rn为目的地址的指令为目的地址的指令 MOV Rn,A ;Rn (A)MOV Rn,direct ;Rn (direct)MOV Rn,#data ;Rn data1)以累加器以累加器A为目的地址的指令为目的地址的指令 MOV A,Rn ;A (Rn)MOV A,direct ;A (direct)MOV A,Ri ;A (Ri)MOV A,#data ;A data 南昌大学过控教研室南昌大学过控教研室2008.9164)以寄存器间接地址为目的的地址

13、的指令以寄存器间接地址为目的的地址的指令 MOV Ri,A ;(Ri)(A)MOV Ri,direct ;(Ri)(direct)MOV Ri,#data ;(Ri)data3)以直接地址为目的地址的指令以直接地址为目的地址的指令 MOV direct,A ;direct (A)MOV direct,Rn ;direct (Rn)MOV direct,direct;direct (direct)MOV direct,Ri ;direct (Ri)MOV direct,#data ;direct data 5)16位数据传送指令位数据传送指令 MOV DPTR,#data16 ;DPTR dat

14、a16 ;DPL data70 ;DPH data158 南昌大学过控教研室南昌大学过控教研室2008.917Direct(直接寻址)R(间接寻址)iA(累加器)R(寄存器寻址)nData(立即数寻址)图3-5 MOV指令8位数据传送路线示意图南昌大学过控教研室南昌大学过控教研室2008.918例例3-33-3 设设RAM 40HRAM 40H单元的内容为单元的内容为80H80H,80H80H单元内单元内容为容为47H47H,P P1 1口的输入状态为口的输入状态为0FFH0FFH,试判断下列程序执,试判断下列程序执行结果。行结果。MOV R0,#40H MOV A,R0 MOV R1,A M

15、OV B,R1 MOV R1,P1 MOV P2,P1 解执行结果为:解执行结果为:(A)80H,(B)47H,(R0)40H,(R1)80H,(P1)0FFH,(P2)0FFH,(80H)0FFH。;R0 40H;A (40H)80H;R1 80H;B (80H)47H;(80H)0FFH;P2 0FFH 南昌大学过控教研室南昌大学过控教研室2008.9191)字节交换指令字节交换指令XCH XCH A,Rn ;(A)(Rn)XCH A,direct ;(A)(direct)XCH A,Ri ;(A)(Ri)2.2.数据交换指令数据交换指令例:设例:设(A)=08H,(R7)=0DCH,执行

16、指令执行指令 XCH A,R7结果为:结果为:(A)=0DCH,(R7)=08H功能:将累加器功能:将累加器A中内容与源操作数互换。中内容与源操作数互换。南昌大学过控教研室南昌大学过控教研室2008.920 例:例:(A)=80H,(R0)=30H,(30H)=0FH,执行指令,执行指令 XCHD A,R结果为:结果为:(A)=8FH,(30H)=00H2)半字节交换半字节交换XCHDXCHD A,Ri ;(A)低4位(Ri)低4位 功能:累加器功能:累加器A中内容与源操作数低中内容与源操作数低4位交换,高位交换,高4位不变。位不变。3)累加器高低数字节交换指令累加器高低数字节交换指令SWAP

17、 A SWAP A ;(A)低低4位位(A)高高4位位 功能:功能:A中高中高4位与低位与低4位互换。位互换。例:例:(A)=80H,执行,执行SWAP A结果为:结果为:(A)08H.南昌大学过控教研室南昌大学过控教研室2008.921解解 XCH A,20H SWAP A MOV R1,21H XCHD A,R1 SWAP A XCH A,20H 例例3-43-4试用交换指令使片内试用交换指令使片内20H20H单元的高单元的高4 4位与位与21H21H单元的低单元的低4 4位交换。位交换。南昌大学过控教研室南昌大学过控教研室2008.922数据写入堆栈称数据写入堆栈称入栈入栈,数据从堆栈中

18、读出称,数据从堆栈中读出称出栈出栈。栈顶栈底SPSP+1SP栈顶栈底SPSPSP-1a)入栈 b)出栈 图3-6 堆栈示意图3.栈操作指令栈操作指令南昌大学过控教研室南昌大学过控教研室2008.923 PUSH direct;SP (SP)+1,(SP)(direct)功能:将堆栈指针加功能:将堆栈指针加1 1后,片内后,片内RAM单元内容送进栈顶单单元内容送进栈顶单元,原元,原RAM单元内容不变。单元内容不变。说明:说明:PUSH指令常用于保护指令常用于保护CPUCPU现场。现场。栈操作是字节指令,每次只能压入或弹出栈操作是字节指令,每次只能压入或弹出1 1个字个字节的内容。节的内容。如如P

19、USH DPTR是错误的,但可以用以下两条指是错误的,但可以用以下两条指令完成令完成DPTR的入栈。的入栈。PUSH DPH PUSH DPL1)入栈指令入栈指令PUSH南昌大学过控教研室南昌大学过控教研室2008.924例:设例:设(A)=30H,(B)=80H,(SP)=50H.则执行指令:则执行指令:PUSH A PUSH B结果为:结果为:(51H)=30H,(52H)=80H,(SP)=52HSP4AH50HSP4AH50H30H51HSP50H30H51H80H 52H4AH南昌大学过控教研室南昌大学过控教研室2008.925POPdirect ;direct (SP),SP (S

20、P)-1功能:将功能:将(SP)内容传送给片内内容传送给片内RAM单元,单元,SP内容减内容减1。说明:说明:栈操作要注意先入后出的原则。栈操作要注意先入后出的原则。POP指令常用于恢复指令常用于恢复CPU现场。现场。2)出栈指令出栈指令POP南昌大学过控教研室南昌大学过控教研室2008.926例例3-5 试用栈操作指令完成试用栈操作指令完成P0和和P1内容的互换。内容的互换。解解 PUSH P0 PUSH P1 POP P0 POP P1P0P1D0D1SPSPD0P0P1D0D1SPD0D1P0P1D0D1SPD0P0P1D1D1SPP0P1D1D0南昌大学过控教研室南昌大学过控教研室20

21、08.9273.3.2 3.3.2 片外数据存贮器与累加器片外数据存贮器与累加器A A之间的之间的 传送指令传送指令 MOVX A,DPTR ;A (DPTR)MOVX A,Ri ;A (Ri)MOVX DPTR,A ;(DPTR)(A)MOVX Ri,A ;(Ri)(A)说明:说明:片外片外数据存贮单元与数据存贮单元与片内片内RAM之间的数据传送以及片外数据存之间的数据传送以及片外数据存贮单元之间的数据传送贮单元之间的数据传送不能直接进行不能直接进行,必须通过累加器必须通过累加器A中转。中转。MOVX 20H,2000H及及MOVX 3000H,2000H等都是错误的。等都是错误的。寻址方式

22、寻址方式只能是寄存器间接寻址只能是寄存器间接寻址。参与间接寻址的寄存器只有。参与间接寻址的寄存器只有Ri和和DPTR两种(两种(3个)。个)。DPTR为为16位寄数器,寻址范围为位寄数器,寻址范围为000H0FFFFH共共64KB空间。而空间。而Ri是是8位寄数器,只能寻址位寄数器,只能寻址000FFH低低256单元。单元。南昌大学过控教研室南昌大学过控教研室2008.928解解 MOV DPTR,#2000H MOVX A,DPTR MOV 20H,A MOV DPTR,#2000H MOVX A,DPTR MOV R0,#0FAH MOVX R0,A例例3-6 将片外数据存贮器将片外数据存

23、贮器2000H单元的内容传送单元的内容传送到片内的到片内的20H单元中;单元中;将片外数据存贮器将片外数据存贮器2000H单单元的内容传送到片外元的内容传送到片外0FAH单元单元。南昌大学过控教研室南昌大学过控教研室2008.9293.3.3 3.3.3 程序存贮器向累加器程序存贮器向累加器A A传送指令传送指令 MOVC A,A+PC ;A (A)+(PC)MOVC A,A+DPTR ;A (A)+(DPTR)说明:说明:程序存贮器程序存贮器只能读出,不能写入只能读出,不能写入,所以其数据传送都是,所以其数据传送都是单单 向的向的,即从程序存贮器读出数据,且只能向累加器,即从程序存贮器读出数

24、据,且只能向累加器A传送。传送。ROM ROM片内、片外是统一编址,该指令既可访问片内,又可片内、片外是统一编址,该指令既可访问片内,又可 访问片外程序存贮器。访问片外程序存贮器。该类指令主要用于查表,又称查表指令。应用时,一般以该类指令主要用于查表,又称查表指令。应用时,一般以 PC或或DPTR确定表格的首址,查表时,根据确定表格的首址,查表时,根据A中不同的内中不同的内 容查找到表格中的相应项,故此时称容查找到表格中的相应项,故此时称PC或或DPTR为基址寄为基址寄 存器,存器,A为变址寄存器,寻址方式为基址加变址寻址。为变址寄存器,寻址方式为基址加变址寻址。使用使用DPTR作基址寄存器比

25、较灵活,且不易出错。建议尽作基址寄存器比较灵活,且不易出错。建议尽 可能使用可能使用MOVCA,A+DPTR指令。指令。南昌大学过控教研室南昌大学过控教研室2008.930解法一解法一 以以DPTR为基址寄存器为基址寄存器,平方表首址可灵活安排在,平方表首址可灵活安排在适当的位置如适当的位置如2000H,即平方表的内容从,即平方表的内容从2000H单元放起。单元放起。程序如下:程序如下:ORG 1800H MOV DPTR,#2000H MOV A,20H MOVC A,A+DPTR MOV 21H,A ORG 2000H DB 00H,01H,04H,10H,19H,24H DB 31H,4

26、0H,51H,64H,例例3-7 以查表方式求出片内以查表方式求出片内RAM中中20H单元数的平方值单元数的平方值,存入片内存入片内21H单元中。单元中。南昌大学过控教研室南昌大学过控教研室2008.931A05HDPTR2000H5图3-7 查表程序执行示意图24H2005H2006HROM南昌大学过控教研室南昌大学过控教研室2008.932 ORG 1000H1000MOV A,20H 1001 ADD A,#03H 1003 MOVC A,A+PC1004 MOV 21H,A1006 RET1007 DB 00H,01H,04H 解法二解法二 以以PC为基址寄存器,此时表格须紧跟程序之后

27、,为基址寄存器,此时表格须紧跟程序之后,且要计算好表格首址位置。且要计算好表格首址位置。南昌大学过控教研室南昌大学过控教研室2008.933 XCH A,20H XCH A,30H XCH A,20H例例3-8 改正下列指令中的错误,完成其功能:改正下列指令中的错误,完成其功能:MOV A,2000H ;片外;片外RAM 2000H单元内容送入单元内容送入A。MOVX 20H,2000H ;片外;片外RAM 2000H单元内容送入片内单元内容送入片内20H单元。单元。MOVC A,2000H ;将;将ROM 2000H单元内容送入单元内容送入A。MOVX A,A+DPTR ;以查表方式将片外;

28、以查表方式将片外RAM单元的内容送入单元的内容送入A。XCH 40H,30H ;交换片内;交换片内RAM 30H和和40H单元的内容单元的内容.PUSH AB ;将寄存器对;将寄存器对AB的内容压入堆栈。的内容压入堆栈。解解 MOV DPTR,#2000H MOVX A,DPTR MOV DPTR,#2000H MOVX A,DPTR MOV 20H,A MOV DPTR,#2000H MOV A,#0 MOVC A,A+DPTR无法以查表方式将片外无法以查表方式将片外RAM 存贮单元的内容送入存贮单元的内容送入A。PUSH A PUSH B 南昌大学过控教研室南昌大学过控教研室2008.93

29、43.4算术运算类指令算术运算类指令1.不带进位加不带进位加法指令法指令ADD ADD A,Rn ;A(A)+(Rn)ADD A,direct ;A(A)+(direct)ADD A,#data ;A(A)+dataADD A,Ri ;A(A)+(Ri)3.4.1 3.4.1 加法指令加法指令功能:功能:ADD指令把源操作数与累加器指令把源操作数与累加器A内容相加,结果存在累加器内容相加,结果存在累加器中。该操作不改变源操作数,影响中。该操作不改变源操作数,影响PSW中的中的C、AC、OV和和P位。位。说明:说明:ADD指令的指令的目的操作数只能是累加器目的操作数只能是累加器A,且只有以上,且

30、只有以上4种种形式。如形式。如ADDB,40H或或ADD A,203AH都是不存在,非法的。都是不存在,非法的。指令中,参加运算的两个指令中,参加运算的两个8位二进制数,即可看作是位二进制数,即可看作是8位无符号数位无符号数(0255),也可以看作是),也可以看作是7位带符号数的补码数(位带符号数的补码数(-128+127)。南昌大学过控教研室南昌大学过控教研室2008.935 1 0 1 1 0 0 1 1 +0 1 1 1 1 0 0 1 1 0 0 1 0 1 1 0 0例例3-9 试编程计算试编程计算40H和和41H两单元字节数的和,并存放在两单元字节数的和,并存放在42H单元。若(单

31、元。若(40H)=0B3H,(,(41H)=79H,给出计算结果,给出计算结果并判断并判断PSW受影响的位。受影响的位。解程序如下:解程序如下:MOV A,40H ADD A,41H MOV 42H,A若(若(40H)=0B3H,(,(41H)=79H则运算结果:若是无符号数,和为则运算结果:若是无符号数,和为12CH;若是有符号数,和为若是有符号数,和为+2CH。(42H)=2CH,(C)=1,(,(AC)=0,(,(OV)=0,(,(P)=1。南昌大学过控教研室南昌大学过控教研室2008.9362.带进位加法指令带进位加法指令ADCCADDC A,Rn ;A (A)+(Rn)+(C)ADD

32、C A,direct ;A (A)+(direct)+(C)ADDC A,#data ;A (A)+data+(C)ADDC A,Ri ;A (A)+(Ri)+(C)功能:该操作与功能:该操作与ADD类似,只是类似,只是PSW中的进位位中的进位位C参参与运算。带进位加法指令通常用于多字节或多个数加法与运算。带进位加法指令通常用于多字节或多个数加法运算。运算。南昌大学过控教研室南昌大学过控教研室2008.937解当(解当(C C)0 0时,两指令运行结果一样,为(时,两指令运行结果一样,为(A A)0A4H0A4H。当(当(C C)1 1时,两指令运行的结果不同,时,两指令运行的结果不同,相差相

33、差1 1。即即ADD A,30HADD A,30H的结果为(的结果为(A A)0A4H0A4H,而,而ADDC A,30HADDC A,30H 的结果是(的结果是(A A)0A5H0A5H。显然,显然,ADDADD指令与指令与C C值无关,而值无关,而ADDCADDC的运行结果与的运行结果与C C值有关。值有关。例例3-103-10已知(已知(A A)=26H,(30H)=7EH,=26H,(30H)=7EH,比较在(比较在(C C)0 0、(C C)1 1两种情况下执行两种情况下执行 ADD A,30H ADD A,30H 和和 ADDC A,30HADDC A,30H指令的结果。指令的结果

34、。南昌大学过控教研室南昌大学过控教研室2008.938解解 MOV AMOV A,30H 30H ADD AADD A,40H 40H ;低字节相加;低字节相加 MOV 50HMOV 50H,A A MOV AMOV A,31H 31H ADDC AADDC A,41H 41H ;高字节相加;高字节相加 MOV 51HMOV 51H,A A ADDC AADDC A,#00H#00H ;取高相加产生的进位;取高相加产生的进位 MOV 52HMOV 52H,A A说明:说明:多字节数求和,从低字节开始,最低字节相加用多字节数求和,从低字节开始,最低字节相加用ADD指令,高字节相加用指令,高字节相

35、加用ADDC指令。指令。N字节数相加,结果可能为字节数相加,结果可能为N+1字节数。字节数。为单独取得进位的值,可参考例为单独取得进位的值,可参考例3 31111。例例3-113-11 两字节无符号数相加,被加数放在内部两字节无符号数相加,被加数放在内部RAM30HRAM30H,31H31H单单元(低位放在前),加数放在内部元(低位放在前),加数放在内部RAM40HRAM40H、41H41H单元。单元。计算两数的计算两数的和,放在和,放在50H50H52H52H单元中。单元中。南昌大学过控教研室南昌大学过控教研室2008.9393.增量指令增量指令INC INC A INC A ;A (A)+

36、1A (A)+1INC RINC Rn n ;R Rn n (R (Rn n)+1)+1INC direct INC direct ;direct (direct)+1direct (direct)+1INC RINC Ri i ;(;(R R)i i(R(Ri i)+1)+1INC DPTR INC DPTR ;DPTR (DPTR)+1DPTR (DPTR)+1 功能:对功能:对A,Rn,内部内部RAM单元及数据指针单元及数据指针DPTR进行加进行加1操作,除操作,除INC A影响影响P外,不影响任何标志位。外,不影响任何标志位。说明:若原为说明:若原为0FFH,执行该指令后,将变为,执行

37、该指令后,将变为00H,但不,但不影响进位位影响进位位C。南昌大学过控教研室南昌大学过控教研室2008.940 其结果为:其结果为:(A)=00H,(R2)=10H,(R0)=40H,(40H)=01H,(DPTR)=1B00H,PSW中,(中,(P)=0,C及其它位不变。及其它位不变。例例3-123-12(A)=0FFH,(R2)=0FH,(R0)=40H,(40H)=00H,(DPTR)=1AFFH执行下列指令:执行下列指令:INC A INC R2 INC R0 INC DPTR南昌大学过控教研室南昌大学过控教研室2008.9414.十进制调整指令十进制调整指令DA A DA ADA A

38、功能:对累加器中由上一条加法指令(加数和被加数均为压缩的功能:对累加器中由上一条加法指令(加数和被加数均为压缩的BCD码)所获得的结果进行调整。码)所获得的结果进行调整。说明:说明:在指令系统中,在指令系统中,没有专门的十进制(没有专门的十进制(BCD码)的加法运码)的加法运算指令,算指令,只能使用只能使用ADD,ADDC命令,但有时会产生错误。例如:命令,但有时会产生错误。例如:(a)5+38(b)7+6=13 (c)8+9=17 0 1 0 1 0 1 1 1 1 0 0 0+)0 0 1 1 +)0 1 1 0 +)1 0 0 1 1 0 0 0 1 1 0 1 1 0 0 0 1其中其

39、中(a)的运算结果是正确的,的运算结果是正确的,(b)(c)的运算结果是错误的。的运算结果是错误的。为了消除错误,要调整为正确的压缩为了消除错误,要调整为正确的压缩BCD码形式。码形式。注意,注意,DAA指令必须紧跟指令必须紧跟ADD或或ADDC指令使用指令使用。南昌大学过控教研室南昌大学过控教研室2008.942例例3-133-13 在在20H20H、21H21H中分别存放压缩中分别存放压缩BCDBCD码码5555和和7272,试将,试将两数相加,并计算出结果。两数相加,并计算出结果。解解MOV AMOV A,20H 20H ADD AADD A,21H21H DA ADA A,结果结果 (

40、A)=27(A)=27,C=1C=1如果不使用如果不使用DADAA A指令,则结果为指令,则结果为0C7H0C7H,是错误的。,是错误的。南昌大学过控教研室南昌大学过控教研室2008.943例例3-143-14 设两个设两个4 4位位BCDBCD码分别存放在码分别存放在30H30H(十位、个位)和(十位、个位)和31H31H(百位、(百位、千位)、千位)、40H40H(十位、个位)和(十位、个位)和41H41H(百位、千位)。试编程求这两个数的和,(百位、千位)。试编程求这两个数的和,结果存放在结果存放在30H30H、31H31H、32H32H中。中。解程序如下:解程序如下:MOV RMOV

41、R0 0,#30H#30H MOV RMOV R1 1,#40H#40HMOV A,RMOV A,R0 0 ;取十位、个位;取十位、个位ADD A,RADD A,R1 1 ;两数十位、个位相加;两数十位、个位相加DA A DA A ;调整为;调整为BCDBCD码码MOV RMOV R0 0,A A ;存十位、个位;存十位、个位INC RINC R0 0 INC RINC R1 1MOV AMOV A,RR0 0 ;取千位、百位;取千位、百位ADDC A,RADDC A,R1 1 ;两数千位、百位和进位位相加;两数千位、百位和进位位相加DA A DA A ;调整为;调整为BCDBCD码码MOV

42、RMOV R0 0,A A ;存千位、百位;存千位、百位MOV AMOV A,#0#0ADDC AADDC A,#0#0INC RINC R0 0MOV RMOV R0 0,A A ;存万位;存万位南昌大学过控教研室南昌大学过控教研室2008.9443.4.2 3.4.2 减法指令减法指令 1.带进位减法指令带进位减法指令SUBB SUBB A,Rn ;A (A)(Rn)(C)SUBB A,direct ;A (A)(direct)(C)SUBB A,Ri ;A (A)(Ri)(C)SUBB A,#data ;A (A)data (C)功能:指令功能是以功能:指令功能是以A A中数为被减数,减

43、去操作数,再减去进中数为被减数,减去操作数,再减去进位,差存在位,差存在A A中。影响中。影响PSWPSW中的中的C C,ACAC,OVOV,和,和P P位。位。说明:说明:MCS-51MCS-51指令系统中,指令系统中,无不带进位(实为借位)的减法无不带进位(实为借位)的减法指令。指令。若进行不带借的减法运算,要在运算前使用若进行不带借的减法运算,要在运算前使用ADD ADD A,#00HA,#00H或或CLR CCLR C等指令将进位标志清等指令将进位标志清0 0。减法指令中,无减法指令中,无BCDBCD码调整。码调整。南昌大学过控教研室南昌大学过控教研室2008.945例例3-153-1

44、5 两个双字节数相减,被减数放在两个双字节数相减,被减数放在30H30H,31H31H,减数放在减数放在40H40H,41H41H中,差放入中,差放入50H50H、51H51H。解解 ADD AADD A,#00H#00H ;将进位位清;将进位位清0 0 MOV A MOV A,30H30H SUBB A SUBB A,40H 40H ;低字节相减;低字节相减 MOV 50HMOV 50H,A A MOV A MOV A,31H 31H SUBB ASUBB A,41H 41H ;高字节相减;高字节相减 MOV 51HMOV 51H,A A说明:多字节相减,从低字节开始,最低字节相减时,应说明

45、:多字节相减,从低字节开始,最低字节相减时,应先将进位位清先将进位位清0。南昌大学过控教研室南昌大学过控教研室2008.9462.减减1指令指令DEC DEC A ;A (A)-1DEC Rn ;Rn (Rn)-1DEC direct ;direct (direct)-1DEC Ri ;(Ri)(Ri)-1 功能:减功能:减1运算运算说明:说明:与与INC命令类似命令类似,但无但无DPTR减减1指令。指令。若原为若原为00H,执行该指令后,将变为,执行该指令后,将变为0FFH。例如例如(A)=10H,(R5)=00H,(30H)=2FH,(R0)=40H,(40H)=0FFH。则执行以下指令:

46、则执行以下指令:DEC A;DEC R5;DEC 30H;DEC R0结果为:结果为:(A)0FH,(R5)=0FFH,(30H)=2EH,(40H)=0FEH,(P)=0 南昌大学过控教研室南昌大学过控教研室2008.9473.4.3 乘法指令乘法指令MUL MUL AB功能:累加器功能:累加器A和寄存器和寄存器B中的两个无符号中的两个无符号8位数相乘,所得位数相乘,所得16位位乘积的低乘积的低8位放在位放在A中,高中,高8位入在位入在B中。中。说明:乘法指令说明:乘法指令影响影响PSW的状态的状态。执行。执行MUL指令后,指令后,C被清被清0,OV与结果有关,与结果有关,若若OV=0,表示

47、乘积小于,表示乘积小于255(0FFH),只在只在A中,中,(B)0;若若OV=1,则乘积大于,则乘积大于255,(B)0。例如:例如:(A)=20H,(B)=0A0H,执行指令执行指令 MUL AB结果:结果:(A)00H,(B)=14H,即积为,即积为1400H,(C)=0,(,(OV)=1 南昌大学过控教研室南昌大学过控教研室2008.9483.4.4 3.4.4 除法指令除法指令DIV DIV DIV AB 功能:两功能:两8位无符号数相除,被除数置于累加器位无符号数相除,被除数置于累加器A中,除数中,除数置于寄存器置于寄存器B中。指令执行后,商存于中。指令执行后,商存于A中,余数存于

48、中,余数存于B中。中。说明:该指令执行后,说明:该指令执行后,C清清0,若,若除数为除数为0(即寄存器(即寄存器B内内数据为数据为0),(),(OV)=1,表明除表明除0没有意义;若除数不为没有意义;若除数不为0,则(则(OV)=0。例:例:(A)=0FBH,(B)=12H,则,则DIV AB结果:结果:(A)=0DH,(B)=11H,(,(C)=0,(,(OV)=0 南昌大学过控教研室南昌大学过控教研室2008.949例例3-16 编程实现下列运算:编程实现下列运算:FD1D2+D3/D4,其中其中D1、D2、D3、D4都为非都为非0的的8位二进制无符号数。位二进制无符号数。解解 MOV A

49、,#D1 MOV B,#D2 MUL AB ;计算;计算D1D2 MOV R2,A ;暂存;暂存D1D2的结果的结果 MOV R3,B MOV A,#D3 MOV B,#D4 DIV AB ;计算;计算D3/D4 ADD A,R2 ;乘积的低位与商相加;乘积的低位与商相加 MOV R2,A ;存;存F低位低位 MOV A,R3 ADDC A,#0 ;乘积的高位与低位和的进位相加;乘积的高位与低位和的进位相加 MOV R3,A ;存;存F高位在高位在R3中中南昌大学过控教研室南昌大学过控教研室2008.9503.5逻辑运算及移位指令逻辑运算及移位指令 1.逻辑与指令逻辑与指令ANL ANL A,

50、Rn ;A (A)(Rn)ANL A,direct ;A (A)(direct)ANL A,Ri ;A (A)(Ri)ANL A,#data ;A (A)data ANL direct,A ;direct(A)(direct)ANL direct,#data;direct (direct)data 3.5.1 3.5.1 逻辑运算指令逻辑运算指令说明:说明:逻辑运算是按位进行的,只影响标志位逻辑运算是按位进行的,只影响标志位P。该指令用于该指令用于屏蔽某些位屏蔽某些位。南昌大学过控教研室南昌大学过控教研室2008.951 例例3-173-17 将将R R1 1中的低中的低4 4位清位清0 0,

51、高,高4 4位不变。位不变。解解 MOV A,#11110000B ANL A,R1 MOV R1,A 0 1 1 1 1 0 1 0 )1 1 1 0 0 1 1 0 0 1 1 0 0 0 1 0结果为:结果为:(A)=62H例:设例:设(A)=7AH,(20H)=0E6H,执行指令,执行指令 ANL A,20H南昌大学过控教研室南昌大学过控教研室2008.9522.逻辑或指令逻辑或指令ORL ORL A,Rn ;A (A)(Rn)ORL A,direct ;A (A)(direct)ORL A,Ri ;A(A)(Ri)ORL A,#data ;A (A)dataORL direct,A

52、;direct(A)(direct)ORL direct,#data ;direct (direct)data 例例3-18 将片外将片外RAM 2000H单元的单元的0、1位置位置1,2、3位清位清0,其它位不变。,其它位不变。解解 MOV DPTR,#2000H MOVX A,DPTR ORL A,#00000011B ANL A,#11110011B MOV DPTR,A南昌大学过控教研室南昌大学过控教研室2008.9533.逻辑异或指令逻辑异或指令XRL XRL A,Rn ;A (A)(Rn)XRL A,direct ;A (A)(direct)XRL A,Ri ;A(A)(Ri)XR

53、L A,#data ;A (A)dataXRL direct,A,;direct(direct)(A)XRL direct,#data ;direct (direct)data 说明:说明:若若与与0进行异或运算,结果进行异或运算,结果保持不变保持不变;若若与与1进行异或运算,结果进行异或运算,结果取反取反;自身异或等效于清自身异或等效于清0。例例 XRL A,A结果为:(结果为:(A)0 南昌大学过控教研室南昌大学过控教研室2008.954 1 1 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 0 1 0 0 0 1 1例例3-193-19 将将20H20H单元内容单元内容1

54、1、3 3、5 5、7 7位保持不变,位保持不变,0 0、2 2、4 4、6 6位取反。位取反。解解XRL 20H,#01010101B 若若 (20H)=11110110 则执行指令:则执行指令:结果为结果为(20H)=10100011B南昌大学过控教研室南昌大学过控教研室2008.9554.累加器清累加器清0指令指令 CLR CLR A CPL A 5.累加器取反指令累加器取反指令 CPL 例如(例如(A)0E6H执行执行CPL A ,结果为:结果为:(A)=19H说明:说明:1)取反即为)取反即为逻辑非运算逻辑非运算。2)MCS-51单片机没有单片机没有求补指令求补指令,若对累加器,若对

55、累加器A中数求中数求补,则程序如下:补,则程序如下:CPL A INC A 南昌大学过控教研室南昌大学过控教研室2008.9563.5.2 移位指令移位指令 循环左移循环左移 RL A ;An+1An,A0 A7循环右移循环右移 RR A ;An An+1,A7 A0进位循环左移进位循环左移 RLC A ;An+1 An,A0 C,C A7带进位循环右移带进位循环右移 RRC A ;An An+1,A7 C,C A0 移移位位指指令令南昌大学过控教研室南昌大学过控教研室2008.957例例3-21 分析下列程序段实现的功能:分析下列程序段实现的功能:MOV A,direct RL A MOV

56、R1,A RL A RL A ADD A,R1 MOV direct,A解各指令实现的功能依次如程序右边注译,可知该解各指令实现的功能依次如程序右边注译,可知该程序实现的功能是将存贮单元的数乘以程序实现的功能是将存贮单元的数乘以10。;取数设为;取数设为D0;D02;(;(R1)2D0;2D02;4D02;8D0+2D0;存数;存数10D0例例3-20 将将20H单元存放的无符号数除单元存放的无符号数除2。解解 ADD A,#0 ;C清零清零 MOV A,20H RRC A MOV 20H,A南昌大学过控教研室南昌大学过控教研室2008.9583.6位操作指令位操作指令 MOV C,bit ;

57、C (bit)MOV bit,C ;bit (C)例例3-22 将将20H位的内容送至位的内容送至50H位,并要求不改变位,并要求不改变C的状态。的状态。解解 MOV 10H,C ;保护;保护C内容内容 MOV C,20H MOV 50H,C MOV C,10H ;恢复;恢复C内容内容 3.6.1 3.6.1 位传送指令位传送指令MOVMOV 说明:说明:多数位操作指令多数位操作指令由由C参与参与,C称位累加器。称位累加器。位操作指令寻址方式为位操作指令寻址方式为位寻址位寻址。南昌大学过控教研室南昌大学过控教研室2008.9593.6.2 位置位位置位/复位指令复位指令1.位置位(置位置位(置

58、1)命令)命令SETB SETB C ;C 1 SETB bit ;bit 12.位复位(清位复位(清0)命令)命令 CLR C ;C 0 CLR bit ;bit 0说明:说明:位置位位置位/复位命令可以方便改变位空间的单个位复位命令可以方便改变位空间的单个位 的内容,十分灵活。的内容,十分灵活。例如例如许多运算要先将许多运算要先将C清零清零,我们用以用,我们用以用ADD A,#0来清零,也可以直接用来清零,也可以直接用CLR C指令。指令。南昌大学过控教研室南昌大学过控教研室2008.9603.6.3 位运算指令位运算指令 1.逻辑与指令逻辑与指令ANL ANL C,bit ;C(C)(b

59、it)ANL C,/bit ;C(C)(/bit)2.逻辑或指令逻辑或指令ORL ORL C,bit ;C (C)(bit)ORL C,/bit ;C (C)(/bit)3.逻辑非(求反)指令逻辑非(求反)指令CPL CPL bit ;bit (/bit)南昌大学过控教研室南昌大学过控教研室2008.961 解解 MOV C,bit1 ANL C,/bit2 ;C (bit1).(/bit2)MOV bit0,C MOV C,bit2 ANL C,/bit1 ;C (/bit1).(bit2)ORL C,bit0 MOV bit0,C例例3-23 设设bit0,bit1,bit2为三个位地址,

60、试编程实现异为三个位地址,试编程实现异或运算或运算 bit0=bit1 bit2=(bit1)(/bit2)+(/bit1)(bit2)南昌大学过控教研室南昌大学过控教研室2008.962程序如下:程序如下:MOV C,P0.1 ANL C,/P0.0 ORL C,/P0.2 MOV P1.7,CP0.0P0.1P0.2P1.7&图3-9 例3-24图例例3-24 编程实现图编程实现图3-9的逻辑功能。的逻辑功能。化简可得:化简可得:P1.7P0.0 P0.1P0.2解根据逻辑图得出逻辑关系:解根据逻辑图得出逻辑关系:P1.7P0.0 P0.1 P0.1P0.2南昌大学过控教研室南昌大学过控教

61、研室2008.9633.7控制转移类指令控制转移类指令 程序的顺序执行是由程序的顺序执行是由PC自动加自动加1实现的,要改变程序的实现的,要改变程序的执行顺序,实现分支转向,必须通过强迫改变执行顺序,实现分支转向,必须通过强迫改变PC值的方法来值的方法来实现,这就是控制转移类指令的基本功能。控制转移类指令实现,这就是控制转移类指令的基本功能。控制转移类指令可以控制程序根据不同情况执行不同的程序段,令单片机应可以控制程序根据不同情况执行不同的程序段,令单片机应用系统做出相应的动作。控制转移类指令使单片机具有用系统做出相应的动作。控制转移类指令使单片机具有“智智能化能化”功能。功能。控制类指令的掌

62、握使用较复杂,包括无条件转移指令、控制类指令的掌握使用较复杂,包括无条件转移指令、条件转移指令及子程序调用返回指令。条件转移指令及子程序调用返回指令。南昌大学过控教研室南昌大学过控教研室2008.9643.7.1 3.7.1 无条件转移指令无条件转移指令1.长转移指令长转移指令LJMP LJMP addr16 ;PC addr16功能:指令执行后将功能:指令执行后将16位地址(位地址(addr16)传送给)传送给PC,从而,从而 实现程序转移到新的地址开始运行。实现程序转移到新的地址开始运行。说明:该指令可实现说明:该指令可实现64KB范围范围的任意转移。的任意转移。2.短转移指令短转移指令S

63、JMPSJMP rel ;PC (PC)+2+rel南昌大学过控教研室南昌大学过控教研室2008.965功能:执行指令后,程序从功能:执行指令后,程序从当前位置当前位置向前或向后跳转向前或向后跳转rel个个单元运行。单元运行。说明:说明:该指令中寻址方式称该指令中寻址方式称相对寻址相对寻址。rel为为8位带符号补码数位带符号补码数,因此所能实现的程序转移,因此所能实现的程序转移 是双向的,若是双向的,若rel为正数,则向前转移,若为正数,则向前转移,若rel为负为负 数向后转移。转移相对范围图是数向后转移。转移相对范围图是-128127H共共 256个单元;个单元;注译中的注译中的“PC (P

64、C)+2+rel”是这样得来的:注是这样得来的:注 译中译中“(PC)”是该指令执行前的值,前是该指令执行前的值,前 面的面的“PC”是指指令执行后的值。因是指指令执行后的值。因“SJMP rel”指令存放在指令存放在ROM中占用中占用2个字节单元(为双字节个字节单元(为双字节 指令),故程序从指令执行后指令),故程序从指令执行后“当前位置当前位置”向向 前或向后跳转前或向后跳转rel个单元,也就是从指令执行前个单元,也就是从指令执行前 的位置向前或向后跳转的位置向前或向后跳转2rel个单元。个单元。南昌大学过控教研室南昌大学过控教研室2008.966 AJMP addr11 ;PC (PC)

65、+2,PC100 addr11 功能:功能:addr11的的11位数取代该指令执行后程序指针位数取代该指令执行后程序指针PC的低的低11位位PC100,程序根据,程序根据PC值转移运行。值转移运行。说明:说明:addr11为为11位无符号数,程序转移最大范围为位无符号数,程序转移最大范围为2KB。LJMP,STMP,AJMP功能相同,功能相同,只是转移范围不同只是转移范围不同。3.绝对转移指令绝对转移指令AJMP南昌大学过控教研室南昌大学过控教研室2008.967 JMP A+DPTR ;PC (A)+(DPTR)功能:由功能:由A及及DPTR的内容决定程序转移的目的地址。的内容决定程序转移的

66、目的地址。说明:说明:DPTR为基址寄存器,为基址寄存器,A为变址寄存器,为为变址寄存器,为基址加变址寻基址加变址寻 址方式址方式。把把DPTR值固定,值固定,赋与赋与A不同的值不同的值,则可实现程序的多分,则可实现程序的多分 支转移。支转移。4.变址转移指令变址转移指令JMP南昌大学过控教研室南昌大学过控教研室2008.9683.7.2 条件转移指令条件转移指令 测试转移指令测试转移指令 1)累加器累加器A判判0转移指令转移指令 JZ rel ;若;若(A)=0,转移,转移,PC (PC)+2rel ;若;若(A)0,顺序执行。,顺序执行。JNZ rel ;若;若(A)0,转移,转移,PC (PC)+2rel 2)进位位测试转移指令进位位测试转移指令 JC rel ;若(;若(C)=1,转移,转移,PC (PC)+2rel JNC rel ;若(;若(C)=0,转移,转移,PC (PC)+2rel 所谓条件转移就是程序的转移是有条件的,所谓条件转移就是程序的转移是有条件的,当指令中规定当指令中规定的条则满足时,的条则满足时,程序转移,程序转移,否则程序不转移否则程序不转移,仍顺序执行

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!