第9章 单片机的指系统说明.ppt
《第9章 单片机的指系统说明.ppt》由会员分享,可在线阅读,更多相关《第9章 单片机的指系统说明.ppt(71页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 MCS-51MCS-51共有共有111111条指令,可分为条指令,可分为5 5类:类:(1 1)数据传送类指令(共)数据传送类指令(共2929条)分为片内条)分为片内RAMRAM、片外、片外RAMRAM、程、程序存储器的传送指令、交换及堆栈操作指令。序存储器的传送指令、交换及堆栈操作指令。(2 2)算数运算类指令(共)算数运算类指令(共2424条)条):分为加、带进位加、减、分为加、带进位加、减、乘、除、加乘、除、加1 1、减、减1 1指令。指令。(3 3)逻辑运算及移位类指令(共)逻辑运算及移位类指令(共2424条):分为逻辑与、或、条):分为逻辑与、或、异或、移位指令。异或、移位指令。(
2、4 4)布尔变量操作类指令(共)布尔变量操作类指令(共1717条):分为位变量传送、位条):分为位变量传送、位变量与、或、位测试转移指令。变量与、或、位测试转移指令。(5 5)控制转移类指令(共)控制转移类指令(共1717条):分为无条件转移、调用、条):分为无条件转移、调用、条件转移和空操作指令。条件转移和空操作指令。第第9章章 单片机的指令系统单片机的指令系统9.1 数据传送指令(29条)9.1.19.1.1通用传送指令通用传送指令 通用传送指令的助记符为通用传送指令的助记符为MOVMOV(MoveMove),格式如下:),格式如下:MOV MOV ,此类指令的功能是把源操作数指定的数据传
3、送到目的此类指令的功能是把源操作数指定的数据传送到目的操作数(目的地址)所指定的存储单元中。操作数(目的地址)所指定的存储单元中。MOVMOV指令的传指令的传送关系如图送关系如图9-19-1所示。所示。例例1 1 设内部设内部RAMRAM中中(50H)=40H(50H)=40H,(40H)=10H(40H)=10H,P1P1口作输入口,口作输入口,(P1)=0ABH(P1)=0ABH,问程序执行后各存储器中的数据是什么,问程序执行后各存储器中的数据是什么?MOV R0MOV R0,#50H#50H;立即数;立即数50H50H送送R0R0中,(中,(R0R0)=50H=50H MOV A MOV
4、 A,R0 R0;R0R0间接寻址,将间接寻址,将50H50H单元内容送单元内容送A A,(,(A A)=40H=40H MOV R1 MOV R1,A A ;A A送送R1R1,(,(R1R1)=40H=40H MOV B MOV B,R1 R1;R1R1间接寻址,将间接寻址,将40H40H单元内容送单元内容送B B,(,(B B)=10H=10H MOV R1 MOV R1,P1 P1 ;将;将P1P1内容送内容送40H40H单元,(单元,(40H40H)=0ABH=0ABH MOV P2 MOV P2,P1 P1 ;将;将P1P1内容送内容送P2 P2,(,(P2P2)=0ABH=0AB
5、H执行结果:执行结果:(R0)=50H(R0)=50H,(A)=40H(A)=40H,(R1)=40H(R1)=40H (B)=10H (B)=10H,(P1)=0ABH(P1)=0ABH,(40H)=0ABH(40H)=0ABH (P2)=0ABH (P2)=0ABH任何不符合格式要求的任何不符合格式要求的“指令指令”都是不合法的。都是不合法的。这类指令用于访问片外这类指令用于访问片外RAMRAM或扩展的或扩展的I/OI/O口。口。1读写片外读写片外RAM指令指令MOVX (1 1)用)用DPTRDPTR进行间接寻址的指令进行间接寻址的指令读:读:MOVX AMOVX A,DPTR DPTR
6、 ;A(DPTR)A(DPTR)写:写:MOVX DPTRMOVX DPTR,A A ;(DPTR)A(DPTR)A DPTRDPTR为为1616位数据指针,该指令可以寻址外部位数据指针,该指令可以寻址外部RAMRAM的的64KB64KB范围范围(0000H(0000H0FFFFH)0FFFFH),地址的低,地址的低8 8位由位由P0P0口口输出,高输出,高8 8位由位由P2P2口输出,数据通过口输出,数据通过P0P0口输入口输入/输出。输出。9.1.2 9.1.2 特殊传送指令特殊传送指令(2 2)用)用 RiRi进行间接寻址的指令进行间接寻址的指令 读:读:MOVX AMOVX A,RiR
7、i ;(A A)(RiRi)写:写:MOVX MOVX RiRi,A A ;(RiRi)A)A 指令可寻址范围:指令可寻址范围:u 当片外当片外RAMRAM小于或等于小于或等于256256个单元,用个单元,用 RiRi间接寻址进间接寻址进行数据传送时,行数据传送时,8 8位地址线足够使用。位地址线足够使用。u 当片外当片外RAMRAM单元较多时,单元较多时,8 8位地址线不够用,此时低位地址线不够用,此时低8 8位地址在位地址在R0R0或或R1R1中,中,P0P0口分时作低口分时作低8 8位地址线和数据线;位地址线和数据线;高高8 8位地址由位地址由P2P2口提供,因此口提供,因此P2P2口应
8、预先设置。口应预先设置。u 若设计循环程序,则若设计循环程序,则RiRi被加到被加到0 0或减到或减到0 0时必须考虑时必须考虑对对P2P2口高口高8 8位地址进位或借位的影响。位地址进位或借位的影响。例例2 2 把片外把片外RAMRAM的的36H36H单元中的数据送到片外单元中的数据送到片外RAMRAM的的1200H1200H单元。单元。分析分析(36H36H)(1200H1200H)程序如下:程序如下:MOV R1MOV R1,#36H#36H MOVX A MOVX A ,R1R1 MOV DPTR MOV DPTR,#1200H#1200H MOVX DPTR MOVX DPTR,A
9、A 下面的程序可以实现吗?下面的程序可以实现吗?MOV DPTRMOV DPTR,#1200H#1200H MOV R1 MOV R1,#36H#36H MOV DPTR MOV DPTR,R1R1注意:片外注意:片外RAMRAM之间不能直接传送数据,必须经过累加器之间不能直接传送数据,必须经过累加器A A 2.查表指令查表指令MOVC(ROM传送指令)传送指令)MOVC A,A+DPTR ;A(A)+(DPTR)MOVC A,A+PC ;A(A)+(PC)这两条指令主要用于查表,可以完成从程序存储器中这两条指令主要用于查表,可以完成从程序存储器中取得数据并送入累加器取得数据并送入累加器A A
10、的功能。的功能。(1 1)第一条指令以第一条指令以DPTRDPTR为基址寄存器,查表时为基址寄存器,查表时DPTRDPTR用于用于存放表格的起始地址。表格起始地址可以设置在存放表格的起始地址。表格起始地址可以设置在64KB64KB程序程序存储器中的任何位置。存储器中的任何位置。(2 2)第二条指令以)第二条指令以PCPC为基址寄存器,因为基址寄存器,因A A为为8 8位无符号数,位无符号数,故该指令的查找范围是从故该指令的查找范围是从PCPC当前值开始的当前值开始的255255个地址单元个地址单元内。内。若(若(DPTRDPTR)=3000H=3000H,(,(A A)=60H=60H,执行指
11、令,执行指令“MOVC AMOVC A,A+DPTRA+DPTR”后,将程序存储器后,将程序存储器3060H3060H单元的内容送单元的内容送A A。3.数据交换指令数据交换指令 交换类指令完成的传送是双向的,是两个字节间或两个交换类指令完成的传送是双向的,是两个字节间或两个半字节间的双向交换。半字节间的双向交换。特点是只能与累加器特点是只能与累加器A A进行交换。进行交换。字节交换字节交换 XCH AXCH A,RnRn ;(;(A A)()(RnRn)XCH AXCH A,direct direct ;(;(A A)()(directdirect)XCH AXCH A,RiRi ;(;(A
12、 A)()(RiRi)功能:功能:字节数据交换,实现字节数据交换,实现3 3种寻址操作数内容与种寻址操作数内容与A A中内容的互中内容的互换。换。例如,若(例如,若(R1R1)=16H=16H,(,(A A)=28H=28H,执行,执行“XCH AXCH A,R1R1”后,后,(A A)=16H=16H,(,(R1R1)=28H=28H 半字节交换半字节交换 XCHD AXCHD A,RiRi ;(;(A3A30 0)()(RiRi)3 30 0)SWAP A SWAP A ;(;(A3A30 0)()(A7A74 4)例如,若(例如,若(R1R1)=50H=50H,(,(50H50H)=74
13、H=74H,(,(A A)=26H=26H。执行指令执行指令“XCHD AXCHD A,R1R1”后,(后,(A A)=24H,(50)=76H=24H,(50)=76H。再如,若(再如,若(A A)=38H=38H,执行指令,执行指令“SWAP ASWAP A”后,后,(A A)=83H=83H。4.堆栈操作指令(堆栈操作指令(PUSH、POP)堆栈操作指令只有两条:堆栈操作指令只有两条:u 入栈指令用于保护片内某个单元的内容,入栈指令用于保护片内某个单元的内容,u 出栈指令用于恢复片内某个单元的内容。出栈指令用于恢复片内某个单元的内容。u 通常入栈指令和出栈指令是成对出现的。通常入栈指令和
14、出栈指令是成对出现的。入栈:入栈:PUSH direct PUSH direct ;SP(SP)+1SP(SP)+1,(SP)(direct)(SP)(direct)出栈:出栈:POP direct POP direct ;direct(SP)direct(SP),SP(SP)SP(SP)1 1 入栈操作:首先入栈操作:首先(SP)+1(SP)+1,然后写入数据;,然后写入数据;出栈操作:首先读出数据,然后出栈操作:首先读出数据,然后(SP)(SP)1 1。图图9-2 9-2 堆栈存入堆栈存入/取出数据的操作取出数据的操作 如图如图2-62-6所示,在堆栈的原始状态下执行一条所示,在堆栈的原始
15、状态下执行一条“PUSH ACCPUSH ACC”后,后,堆栈的变化过程如图堆栈的变化过程如图9-29-2(b b);在堆栈的原始状态下执行一条);在堆栈的原始状态下执行一条“POP ACCPOP ACC”后,堆栈的变化过程如图后,堆栈的变化过程如图9-2(c)9-2(c)例例4 4 设(设(60H60H)=X=X,(,(70H70H)=Y=Y,试用堆栈指令实现,试用堆栈指令实现60H60H和和70H70H单元内容的互换。单元内容的互换。MOV SPMOV SP,#50H#50H ;设栈底;设栈底 PUSH 60H PUSH 60H ;51H51H(60H60H),),X X压入压入51H51
16、H单元单元 PUSH 70H PUSH 70H ;52H52H(70H70H),),Y Y压入压入52H52H单元单元 POP 60H POP 60H ;60H60H(52H52H),),Y Y弹出进入弹出进入60H60H单元单元 POP 70H POP 70H ;70H70H(51H51H),),X X弹出进入弹出进入70H70H单元单元想一想想一想 用数据交换指令如何实现用数据交换指令如何实现60H60H和和70H70H单元内容的互换?单元内容的互换?9.2 9.2 算术运算指令(算术运算指令(2424条)条)算术运算指令可以完成加、减、乘、除四则运算以及算术运算指令可以完成加、减、乘、除
17、四则运算以及加加1 1、减、减1 1和二和二-十进制调整操作。十进制调整操作。这类指令多与累加器这类指令多与累加器A A有关,有关,A A常作为目的操作数,常作为目的操作数,即指令运算结果存放在即指令运算结果存放在A A中。同时它也能充当源操作数。中。同时它也能充当源操作数。这类指令大多影响标志位,因而分析指令运算结果这类指令大多影响标志位,因而分析指令运算结果和对标志位的影响是本小节的重点。具体影响见表和对标志位的影响是本小节的重点。具体影响见表9-1 9-1 表表9-1 算术运算指令对标志位的影响算术运算指令对标志位的影响 指令指令标标志志ADDADDADDCADDCSUBBSUBBDAD
18、AMULMULDIVDIV进进位位标标志志CYCY0 00 0半半进进位位标标志志ACAC溢出溢出标标志志OVOV奇偶奇偶标标志志P P说明:说明:1.1.“”表示对应的指令操作影响该标志位;表示对应的指令操作影响该标志位;“0 0”表示相应的指令操作对该标志位清表示相应的指令操作对该标志位清0 0;“”表示相应的表示相应的指令操作不影响该标志。指令操作不影响该标志。2.2.累加器加累加器加1 1(INC AINC A)和减)和减1 1(DEC ADEC A)指令仅影响)指令仅影响P P标志。标志。1.1.不带不带CYCY位的加法指令位的加法指令格式:格式:ADD AADD A,RnRn ;A
19、A(A A)+(RnRn)ADD AADD A,direct direct ;AA(A A)+(directdirect)ADD AADD A,RiRi ;AA(A A)+((RiRi))ADD AADD A,#data#data ;AA(A A)+data+data功能:功能:把源操作数与把源操作数与A A中内容相加后再送入中内容相加后再送入A A中。中。在上述在上述4 4条指令中,参与运算的操作数都是条指令中,参与运算的操作数都是8 8位二进制数,位二进制数,且其中一个操作数必须是累加器且其中一个操作数必须是累加器A A。编程人员可以将参与运算的两个操作数视为无符号数(编程人员可以将参与运
20、算的两个操作数视为无符号数(0 0255255),也可以把它们看作是有符号数。若看作是有符号数,),也可以把它们看作是有符号数。若看作是有符号数,则通常采用补码形式(则通常采用补码形式(-128-128+127+127)。)。9.2.19.2.1加法指令加法指令 计算机总是把操作数当作有符号数(补码形式)看待计算机总是把操作数当作有符号数(补码形式)看待并影响并影响PSWPSW的相关标志位。影响情况如下:的相关标志位。影响情况如下:进位进位/借位标志借位标志CYCY:两数和的两数和的D7D7位有进位时,(位有进位时,(CYCY)=1=1,否则,(,否则,(CYCY)=0=0。半进位半进位/借位
21、标志借位标志ACAC:两数和的两数和的D3D3位有进位时,(位有进位时,(ACAC)=1=1,否则,(,否则,(ACAC)=0=0。溢出标志溢出标志OVOV:两数和的两数和的D7D7,D6D6位只有一位有进位时,(位只有一位有进位时,(OVOV)=1=1;否则,;否则,(OVOV)=0=0,即,即OV=C6C7OV=C6C7。奇偶标志奇偶标志P P:当累加器当累加器A A中中“1 1”的个数为奇数时,(的个数为奇数时,(P P)=1=1;为偶数;为偶数时(时(P P)=0=0。例例5 5 试分析试分析80518051单片机执行下述指令后,累加器单片机执行下述指令后,累加器A A和和PSWPSW
22、各标各标志位的变化。志位的变化。MOV AMOV A,#0A5H#0A5H ADD A,#0CFH ADD A,#0CFH解:解:(A A)=10100101B=10100101B +Data=11001111B+Data=11001111B CY 01110100B CY 01110100B C7 C6 AC C7 C6 AC(CYCY)=C7=1=C7=1;(;(ACAC)=1=1;溢出标志(;溢出标志(OVOV)=C7C6=10=1,=C7C6=10=1,有有溢出;(溢出;(P P)=0=0。执行结果:(。执行结果:(A A)=74H=74H。若为无符号数运算,若为无符号数运算,(CYC
23、Y)=1=1,表示结果超出(,表示结果超出(0 0255)范范围。若为带符号数运算,因(围。若为带符号数运算,因(-49-49)+(-91-91)=-140=-140,超出了,超出了(-128-128+127+127)的范围,所以)的范围,所以OV=1OV=1溢出。溢出。2.2.带带CYCY位加法指令位加法指令带带CYCY位加法指令常用于多字节加法运算,格式如下:位加法指令常用于多字节加法运算,格式如下:ADDC AADDC A,RnRn ;AA(A A)+(RnRn)+(CYCY)ADDC AADDC A,direct direct ;AA(A A)+(directdirect)+(CYCY
24、)ADDC AADDC A,RiRi ;AA(A A)+((RiRi))+(CYCY)ADDC AADDC A,#data#data ;AA(A A)+data+data+(CYCY)功能:功能:把源操作数与把源操作数与A A中内容相加后再加上标志位中内容相加后再加上标志位CYCY的当的当前值,将和送入前值,将和送入A A中。中。这组指令的操作影响这组指令的操作影响PSWPSW的的CYCY、ACAC、OVOV和和P P标志。标志。假设当前(假设当前(CYCY)=1=1,(,(A A)=85H=85H,(,(R0R0)=97H=97H,执行指,执行指令令“ADDC AADDC A,R0R0”后,
25、则使(后,则使(A A)=1DH=1DH,(,(CYCY)=1=1,(ACAC)=0=0,(,(OVOV)=1=1,(,(P P)=0=0。3.3.加加1 1指令指令格式:格式:INC A INC A ;AA(A A)+1+1 INC direct INC direct ;directdirect(directdirect)+1+1 INC INC RnRn ;RnRn(RnRn)+1+1 INC INC RiRi ;(RiRi)((RiRi))+1+1 INC DPTR INC DPTR ;(;(DPTRDPTR)(DPTRDPTR)+1+1功能:功能:把源操作数的内容加把源操作数的内容加1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第9章 单片机的指系统说明 单片机 系统 说明
限制150内