第3章 单片机指令系统.ppt
《第3章 单片机指令系统.ppt》由会员分享,可在线阅读,更多相关《第3章 单片机指令系统.ppt(58页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3章章 单片机指令系统单片机指令系统一、汇编语言指令格式:一、汇编语言指令格式:标号标号:操作码操作码 操作数操作数1 1,操作数,操作数2 2 ;注释;注释 换行表示一条指令结束。换行表示一条指令结束。例:例:LOOPLOOP:MOV A MOV A,#40H#40H ;取参数;取参数1.1.标号:标号:指令的符号地址。指令的符号地址。2.2.操作码:操作码:指明指令功能。指明指令功能。3.3.操作数:操作数:指令操作对象。指令操作对象。数据、地址、寄存器名及约定符号。数据、地址、寄存器名及约定符号。4.4.注释行:注释行:说明指令在程序中的作用。说明指令在程序中的作用。操作码和操作数是
2、指令主体。操作码和操作数是指令主体。MOVmove 传送传送XCHexchange 交换交换ANLand logic 与逻辑运算与逻辑运算XRLexclusive or 异或运算异或运算MULmultiply 乘法乘法RRrotate right 右循环右循环SJMPshort jump 短跳转短跳转RETreturn 子程序返回子程序返回3.1 指令格式和寻址方式指令格式和寻址方式2022/11/22二、机器语言指令格式:二、机器语言指令格式:操作码操作码 操作数操作数1 1 操作数操作数22有单字节、双字节和三字节指令。有单字节、双字节和三字节指令。汇编语言指令中操作码和操作数是指令主体,
3、称汇编语言指令中操作码和操作数是指令主体,称为指令可执行部分,指令表中可查出对应指令代码。为指令可执行部分,指令表中可查出对应指令代码。举例:举例:汇编语言:汇编语言:机器语言:机器语言:MOV AMOV A,R R0 0E8HE8HMOV RMOV R6 6,#32H#32H7E 32H7E 32HMOV 40HMOV 40H,#64H#64H75 40 64H75 40 64H1110100001111110001100100111010101000000011001002022/11/23三、指令寻址方式三、指令寻址方式(一)操作数类型:(一)操作数类型:位位 (bit)bit)位寻址区
4、中的一位二进制数据位寻址区中的一位二进制数据字节字节(Byte)8Byte)8位二进制数据位二进制数据字字 (Word)16Word)16位双字节数据位双字节数据(二)寻址方式:(二)寻址方式:1.1.立即寻址方式立即寻址方式:指令中给出实际指令中给出实际操作数据操作数据(立即数立即数),一般用于为,一般用于为寄存器或存储器赋常数初值。寄存器或存储器赋常数初值。举例:举例:8 8位立即数:位立即数:MOV AMOV A,#40H#40H ;A40HA40H 16 16位立即数:位立即数:MOV DPTRMOV DPTR,#2100H#2100H ;DPTR2100HDPTR2100H2022/
5、11/242.2.直接寻址方式直接寻址方式:指令操作数是存储器单元指令操作数是存储器单元地址地址,数据放在存储器单元中。,数据放在存储器单元中。MOV A MOV A,40H40H;A(40H)A(40H)直接寻址方式对数据操作时,地址是固定直接寻址方式对数据操作时,地址是固定值,而地址所指定的单元内容为变量形式。值,而地址所指定的单元内容为变量形式。41H 78H40H 56H 例:例:设存储器两个单元的内容如图所示,设存储器两个单元的内容如图所示,执行指令执行指令 MOV AMOV A,40H 40H 后后 A=A=?思考题:思考题:直接寻址方式指令和立即寻址方式指令的形式有什么不同?直接
6、寻址方式指令和立即寻址方式指令的形式有什么不同?56H2022/11/253.3.寄存器寻址方式:寄存器寻址方式:4.4.寄存器间接寻址方式:寄存器间接寻址方式:指令的操作数为寄存器名,寄存器中为数据指令的操作数为寄存器名,寄存器中为数据地址地址。存放地址的寄存器称为间址寄存器或数据指针。存放地址的寄存器称为间址寄存器或数据指针。例例例例:MOV AMOV A,RR0 0;A(RA(R0 0)设指令执行前设指令执行前 A=20HA=20H,R R0 0=40H=40H,地址为地址为4040H H存储器单元内容如图所示存储器单元内容如图所示。执行指令后,执行指令后,A=A=?,R,R0 0=?,
7、(40H)=,(40H)=?34H40H34H0100 0000AR00100 0000 41H 67H 40H 34HR0A20HR040H例例:MOV AMOV A,R R0 0;A A(R R0 0)设指令执行前设指令执行前 A=20HA=20H,R R0 0=40H=40H,执行指令后,执行指令后,A=A=?,R R0 0=?指令操作数为寄存器名,数据在寄存器中。指令操作数为寄存器名,数据在寄存器中。40H40H2022/11/265.5.变址间接寻址方式:变址间接寻址方式:例:例:MOVC AMOVC A,A+DPTRA+DPTR;A(A+DPTR)A(A+DPTR)设指令执行前设指
8、令执行前 A=09HA=09H,DPTR=2000HDPTR=2000H,存储器存储器单元内容如图所示。执行指令后,单元内容如图所示。执行指令后,A=A=?DPTR=DPTR=?12H2000H2008H 89H2009H 12H数据在存储器中,指令给出的寄存器中为数据在存储器中,指令给出的寄存器中为数据数据的基地址和偏移量。的基地址和偏移量。数据地址数据地址=基地址基地址+偏移量。偏移量。说明:说明:1 1、只对、只对程序存储器程序存储器;2 2、指令形式:、指令形式:MOVC AMOVC A,A+DPTR A+DPTR MOVC A MOVC A,A+PCA+PC JMP A+DPTR J
9、MP A+DPTR2022/11/276.6.6.6.位寻址方式:位寻址方式:位寻址方式:位寻址方式:指令给出位地址。一位数据在存储器位寻址区。指令给出位地址。一位数据在存储器位寻址区。(1 1)内部)内部RAMRAM中的位寻址区:字节地址为中的位寻址区:字节地址为2020H H2FH2FH;(2 2)专用寄存器的可寻址位:专用寄存器的可寻址位:1111个(个(8383位)位)表示方法:表示方法:1 1)直接使用位地址;如:)直接使用位地址;如:PSWPSW的位的位6 6可表示为可表示为0 0D6HD6H 2 2)位名称表示;)位名称表示;或或ACAC 3 3)字节地址加位数表示;)字节地址加
10、位数表示;或或0 0D0H.D0H.6 6 4 4)专用寄存器符号加位数表示。)专用寄存器符号加位数表示。或或PSW.PSW.6 6 例:例:MOV CMOV C,40H40H;Cy(Cy(位地址位地址4040H)H)设指令执行前设指令执行前 Cy=1Cy=1,位地址位地址4040H H存储器单元如图,存储器单元如图,执行指令后,执行指令后,Cy=Cy=?29H 0110001028H 11010110位寻址区位寻址区 02022/11/287 7.相对寻址方式:相对寻址方式:相对寻址方式:相对寻址方式:目的地址目的地址=转移指令地址转移指令地址+转移指令字节数转移指令字节数+rel (rel
11、为偏移量)为偏移量)当当前前PCPC值值加加上上指指令令中中规规定定的的偏偏移移量量 relrel,构构成实际的操作数地址成实际的操作数地址例:例:SJMP rel SJMP rel 操作:跳转到的目的地址操作:跳转到的目的地址 =当前当前1616位位PCPC值值 +rel+rel注意注意:1 1)“当当前前PCPC值值”指指程程序序中中下下一一条条指指令令所所在在的的首首地地址址,是是一个一个1616位数;位数;2 2)符符号号“rel”rel”表表示示“偏偏移移量量”,是是一一个个带带符符号号的的单单字字节节数数,范围是范围是:-128:-128+127(80H+127(80H7FH)7F
12、H)。在实际编程中,在实际编程中,“rel”rel”通常用标号代替。通常用标号代替。2022/11/29 指令功能分类:指令功能分类:指令功能分类:指令功能分类:数据传送、数据操作、布尔处理、程序控制。数据传送、数据操作、布尔处理、程序控制。数据传送、数据操作、布尔处理、程序控制。数据传送、数据操作、布尔处理、程序控制。3 3.2.1 .2.1 数据传送指令数据传送指令实现寄存器、存储器之间的数据传送。实现寄存器、存储器之间的数据传送。一、内部传送指令:一、内部传送指令:片内数据存储器数据传送。片内数据存储器数据传送。二、外部传送指令二、外部传送指令:片外数据存储器数据传送。片外数据存储器数据
13、传送。三、交换指令:三、交换指令:片内数据存储器数据传送。片内数据存储器数据传送。四、堆栈操作指令:四、堆栈操作指令:片内数据存储器数据传送。片内数据存储器数据传送。五、查表指令:五、查表指令:程序存储器数据传送。程序存储器数据传送。3.2 指令分类介绍指令分类介绍2022/11/210(一一)内部传送指令:内部传送指令:习题:习题:找出配对指令,实现反向传送。找出配对指令,实现反向传送。指令机器码:指令机器码:1110111101rrrrrr E8E8EFEF11100101 n11100101 n E5E5 n n1110011i 1110011i E6E6、E7E7 01110100 0
14、1110100 d d 74 74 d d 10101rrr n10101rrr n 1010011i n 1010011i n 85 n1 n2 85 n1 n2 90 90 d1 d2d1 d2MOV AMOV A,RnRn ;A(Rn)A(Rn),Rn=RRn=R0 0R R7 7MOV AMOV A,direct direct ;A(direct)A(direct)MOV AMOV A,Ri Ri;A(Ri)A(Ri),Ri=RRi=R0 0、R R1 1 MOV AMOV A,#data#data ;AdataAdataMOV Rn,directMOV Rn,direct ;Rn(d
15、irect)Rn(direct)MOV Ri,direct MOV Ri,direct;(Ri)(direct)(Ri)(direct)MOV direct1MOV direct1,direct2direct2 ;(direct1)(direct2)(direct1)(direct2)MOV DPTRMOV DPTR,#d1d2#d1d2;DPTRd1d2DPTRd1d2 实现片内数据存储器中数据传送。实现片内数据存储器中数据传送。指令格式:指令格式:MOV 目的操作数,源操作数目的操作数,源操作数寻址方式:立即寻址、直接寻址、寄存器寻址、寄存器间址。寻址方式:立即寻址、直接寻址、寄存器寻址、
16、寄存器间址。2022/11/211例:例:MOV AMOV A,#30H#30HMOV 4FHMOV 4FH,A AMOV RMOV R0 0,#20H#20HMOV RMOV R0 0,4FH4FHMOV 21HMOV 21H,20H20H习题:习题:用两种寻址方式实现,将片内用两种寻址方式实现,将片内RAMRAM 6060H H单元的数据传送给累加器单元的数据传送给累加器A A。解:解:MOV A,#60HMOV A,#60H()MOV RMOV R0 0,#60H#60H()MOV AMOV A,RR0 0;A=30HA=30H;(4FH)=30H(4FH)=30H;R R0 0=20H
17、=20H;(20H)=30H(20H)=30H;(21H)=30H(21H)=30HMOV MOV R R0 0,60H 60H MOV AMOV A,R R0 0 ()解:解:MOV A,60HMOV A,60H ()结果结果A=32HA=32H顺序执行下列指令序列,求每一步执行结果。顺序执行下列指令序列,求每一步执行结果。2022/11/212 说说 明:明:只有指令表中的指令才有对应指令代码,计算机才能只有指令表中的指令才有对应指令代码,计算机才能执行。编程时,不能随意创造发明指令。执行。编程时,不能随意创造发明指令。1.一条指令中不能同时出现两个工作寄存器:一条指令中不能同时出现两个工
18、作寄存器:非法非法指令:指令:MOV RMOV R1 1,R R2 2MOV RMOV R2 2,RR0 02.间址寄存器只能使用间址寄存器只能使用 R R0 0、R R1 1。非法非法指令:指令:MOV AMOV A,RR2 23.SFRSFR区只能直接寻址,不能用寄存器间接寻址。区只能直接寻址,不能用寄存器间接寻址。非法非法指令:指令:MOV RMOV R0 0,#80H#80H MOV A MOV A,RR0 04.指令表指令表(P70):B B:指令字节数,指令字节数,M M:机器周期数机器周期数2022/11/213(二)(二)外部外部RAMRAM传送指令传送指令:(MOVX)MOV
19、X)指令格式:指令格式:MOVXMOVX 目的目的操作数,操作数,源源操作数操作数寻址方式:片外数据存储器用寄存器间址方式。寻址方式:片外数据存储器用寄存器间址方式。1.1.DPTRDPTR作作1616位数据指针,寻址位数据指针,寻址6464KBKB片外片外RAMRAM空间:空间:2.2.MOVX AMOVX A,DPTRDPTR;A(DPTR)A(DPTR)(读)(读)MOVX DPTRMOVX DPTR,A A;(DPTR)A (DPTR)A (写)(写)2.2.RiRi作作8 8位数据指针,寻址位数据指针,寻址256256B B片外片外RAMRAM空间空间 (页内寻址):(页内寻址):M
20、OVX MOVX A A,RRi i;A(PA(P2 2R Ri i)(读)(读)MOVXMOVX R Ri i,A A ;(P(P2 2R Ri i)A )A (写)(写)实现实现片外数据存储器片外数据存储器和和A A累加器累加器之间的数据传送。之间的数据传送。2022/11/214例:例:实现片外数据存储器数据传送(实现片外数据存储器数据传送(实现片外数据存储器数据传送(实现片外数据存储器数据传送(2000200020002000H)(2100H)H)(2100H)H)(2100H)H)(2100H)。MOV DPTRMOV DPTR,#2000H#2000HMOVX AMOVX A,DP
21、TRDPTRMOV DPTRMOV DPTR,#2100H#2100HMOVX DPTRMOVX DPTR,A A习题:习题:将片外将片外RAM 0000HRAM 0000H单元的数据传送到片内单元的数据传送到片内RAMRAM的的6060H H单元单元。;DPTR=2000HDPTR=2000H;A=X A=X;DPTR=2100H DPTR=2100H;(2100H)=X(2100H)=X片外数据存储器不能直接寻址。片外数据存储器不能直接寻址。下列为下列为非法非法指令:指令:MOVX AMOVX A,2000H 2000H MOVX 2100H MOVX 2100H,2000H2000H思考
22、题:思考题:为什么对为什么对DPTRDPTR的数据传送使用内部传送指令?的数据传送使用内部传送指令?2022/11/215(三三)ROM)ROM传送指令(查表指令)传送指令(查表指令):(MOVC)(MOVC)1 1DPTRDPTR为基址寄存器为基址寄存器:MOVCMOVC A A,A+DPTR A+DPTR;A(A+DPTR)A(A+DPTR)(读)(读)查表范围为查表范围为 6464KBKB 程序存储器任意空间,程序存储器任意空间,称为称为远程远程查表指令。查表指令。2 2PCPC为基址寄存器为基址寄存器:MOVCMOVC A A,A+PCA+PC;A(A+PC)A(A+PC)(读)(读)
23、常数表只能在查表指令后常数表只能在查表指令后256256B B范围内,范围内,称为称为近程近程查表指令。查表指令。实现从实现从程序存储器程序存储器读取数据到读取数据到A A累加器累加器,只能使,只能使用变址间接寻址方式。用变址间接寻址方式。多用于查常数表程序,可直接求取常数表中的多用于查常数表程序,可直接求取常数表中的函数值。函数值。2022/11/216P49:例例1:以查表方法把累加器中的十六进制数转换:以查表方法把累加器中的十六进制数转换 为为ASCII码,并送回累加器中。码,并送回累加器中。程序如下:程序如下:指令地址指令地址 源程序源程序 ORG 2000HORG 2000H 200
24、0 HBA 2000 HBA:INC AINC A 2001 MOVC A 2001 MOVC A,A+PCA+PC 2002 RET2002 RET 2003 DB 30H 2003 DB 30H 2004 DB 31H 2004 DB 31H 2005 DB 32H 2005 DB 32H 2011 DB 45H 2011 DB 45H 2012 DB 46H 2012 DB 46H 2022/11/217例例例例2 2 2 2:程序:程序:ORG 1000HORG 1000H SQU:SQU:MOV DPTR MOV DPTR,#3000H#3000H;确定表首地址(;确定表首地址(基地
25、址基地址)MOV AMOV A,20H20H;取取 X X(变量:变量:偏移量偏移量)MOVC A MOVC A,A+DPTRA+DPTR;查表求查表求Y=XY=X2 2 MOV 21H MOV 21H,A A;保存保存Y Y(结果)结果)RET RET;子程序结束子程序结束 ;其它程序段;其它程序段 ORG 3000H ORG 3000H ;常数表格首地址常数表格首地址 TAB:DB 00 TAB:DB 00,0101,0404,0909,225225;平方表平方表 ENDEND方法方法1 1:查表法求查表法求Y=XY=X2 2。设设X(0X15)X(0X15)在片内在片内RAMRAM的的2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第3章 单片机指令系统 单片机 指令系统
限制150内