C51单片机的软件基础.ppt
《C51单片机的软件基础.ppt》由会员分享,可在线阅读,更多相关《C51单片机的软件基础.ppt(82页珍藏版)》请在三一办公上搜索。
1、*,1,4.1 80C51单片机的指令系统,4.1.1 指令格式一条汇编语言指令中最多包含4个字段,其格式为:标号:操作码 目的操作数,源操作数;注释例:LOOP:ADD A,10H;A(A)+10H,根据设计使某台计算机具有的指令的集合便构成了这一计算机的指令系统。80C51系列单片机的指令系统共有111条指令。,*,2,1.标号标号是用户定义的一个符号,表示指令或数据的存储单元地址。标号由以英文字母开始的18个字母或数字串组成,以冒号“:”结尾。不能用指令助记符、伪指令或寄存器名来做标号。一旦使用了某标号定义一地址单元,在程序的其它地方就不能随意修改这个定义,也不能重复定义。一条指令中的标
2、号代表该指令所存放的第一个字节存储单元的地址,故标号又称为符号地址,在汇编时,把该地址赋值给该标号。,*,3,2.操作码操作码是用英文缩写的指令或伪指令功能助记符,用来表示指令的性质或功能。如MOV表示传送操作,ADD表示加法操作。,*,4,3.操作数操作数字段给出参与操作的数据或数据所在单元的地址。操作数字段的内容复杂多样,它可能为以下几种情况之一:(1)工作寄存器名(2)特殊功能寄存器名(3)标号名(4)常数(5)$(6)表达式,*,5,(1)工作寄存器名由PSW.3和PSW.4规定的当前工作寄存器区中的R0R7都可以出现在操作数字段中。(2)特殊功能寄存器名8051中的21个特殊功能寄存
3、器的名字都可以作为操作数使用。(3)标号名可以在操作数字段中引用的标号包括:赋值标号:由汇编伪指令EQU等赋值的标号可以作为操作数。指令标号:指令标号虽未被赋值,但这条指令的第一字节地址就是这个标号的值,在以后指令操作数字段中可以引用。,*,6,(4)常数为了方便用户,汇编语言指令允许以各种数制表示常数,即常数可以写成二进制、十进制或十六进制等形式。(5)$操作数字段中还可以使用一个专门符号“$”,用来表示程序计数器的当前值。这个符号最常出现在转移指令中,如“SJMP$”,该指令表示继续执行该指令,在原地循环。,*,7,(6)表达式 汇编程序允许把表达式作为操作数使用。在汇编时,计算出表达式的
4、值,并把该值填入目标码中。例如:MOV A,SUM+l。,*,8,4.1.2 指令系统的寻址方式寻找操作数所在单元的地址称为寻址;确定操作数所在单元地址的方法称为寻址方式。80C51单片机指令系统中的寻址方式共有七类,分别为立即寻址、寄存器寻址、寄存器间接寻址、直接寻址、变址寻址、相对寻址、位寻址。,*,9,1.立即寻址操作数就跟在操作码的后面,可以立即参与指令所规定的操作,不须另去寄存器或存储器等处寻找和取数。例:MOV A,#30H;A30H MOV DPTR,#2000H;DPTR2000H书写单片机指令时,为了辨识是立即数,规定在它的前面加一个“#”号作为前缀。,*,10,2.寄存器寻
5、址 寻址某工作寄存器,自该寄存器读取或存放操作数,以完成指令所规定的操作。例 MOV R3,A;R3(A)ADD A,R2;A(A)+(R2)可以寻址的寄存器种类有工作寄存器R0R7、累加器A、寄存器B、数据指针DPTR、位累加器Cy。,*,11,3.寄存器间接寻址寄存器中存放的是地址而不是操作数,寻找到该工作寄存器后,以其内容为地址,去寻找所指的RAM单元以读取或存放操作数,称为寄存器间接寻址。例 设R1的内容为40H,则MOV A,R1;A片内RAM(40H)的内容。,图4-1 MOV A,R1指令执行过程,A,1AH,*,12,4.直接寻址直接给出操作数所在的存储单元地址,以供寻址取数或
6、存放的寻址方式称为直接寻址。对于80C51系列单片机,直接寻址可用于访问程序存储器,也可用于访问数据存储器。,*,13,5.变址寻址(或称基址加变址寄存器间接寻址)这种寻址方式只用于访问程序存储器,当然只能读取,不能存放,它主要用于查表性质的访问。以程序计数器PC或数据指针DPTR作为基址寄存器,以累加器A作为变址寄存器,把它们的和作为程序存储器的地址,再寻址该单元,读取数据。,指令 MOVC A,A+DPTR MOVC A,A+PC,*,14,例如:MOVC A,A+DPTR;A(A)+(DPTR)设(A)=10H,(DPTR)=2000H,程序存储器的(2010H)=36H,则上面语句的功
7、能是将A的内容与DPTR的内容相加,形成操作数的地址2010H,把该地址中的数据传送到累加器A。即(DPTR)+(A)A。结果(A)=36H。,图4-2 MOVC A,A+DPTR的执行示意图,*,15,6.相对寻址在相对转移指令中采用相对寻址方式,在指令的操作数部分给出地址的相对偏移量。相对偏移量为一个带符号的8位二进制数。将相对转移指令所在的地址称为源地址;转移后的地址称为目的地址。目的地址=源地址+转移指令字节数+相对偏移量。,*,16,例 SJMP 50H设指令所在PC值为2000H,而指令的机器码为2字节80H、50H,则转移去的地址=2000H+02H+50H=2052H,故指令执
8、行后,PC的值变为2052H,程序下一次执行的地址为2052H。在实际编程中,往往已知源地址和目的地址,从而计算偏移量。在80C51中,常用“rel”表示为相对偏移量。rel计算方法:rel=目的地址(源地址+转移指令字节数),*,17,7.位寻址80C51单片机设有独立的位处理器(布尔处理器),位寻址时,可以对内部RAM和特殊功能寄存器的某些位寻址单元进行寻址。区分位地址与字节地址的方法:主要看是位操作指令还是其它指令,若为位操作指令,则操作数中的地址一定是位地址,反之则为字节地址。例:SETB 30H;(30H)1,*,18,寻址方式总结:,MCS-51系统的各寻址方式对应不同的存储器空间
9、,使用时要特别注意在各种不同的存储器中采用什么寻址方式。,*,19,片内数据存储器,1.直接寻址方式2.间接寻址方式3.位寻址,1.直接寻址方式2.位寻址,间接寻址方式,*,20,4.1.3 指令系统80C51系列单片机的指令系统包括数据传送、算术运算、逻辑运算、控制转移、位操作五大类指令。分类介绍指令之前,先介绍描述指令的一些符号的意义。Rn:表示通用寄存器R0R7。Ri:表示通用寄存器中可间接寻址(即用做8位地址指针)的寄存器R0和R1。#data8:表示8位立即数。#data16:表示16位立即数。,*,21,direct:表示8位片内RAM或SFR区的直接地址。addr16/addr1
10、1:表示外部程序寄存器的16位或11位地址。rel:表示8位偏移量。bit:表示直接位地址。:间接寻址寄存器或基址寄存器的前缀,如Ri,DPTR/:位操作数的前缀,表示对该位取反。(X):X中的内容。(X):由X寻址的单元中的内容。:指令操作流程,将箭头右边的内容送入箭头左边的单元,*,22,共29条,是使用最频繁的一类指令,通用格式如下:MOV 目的操作数,源操作数;目的操作数 源操作数 属“复制”性质,而不是“搬家”数据传送类指令不影响标志位:Cy、Ac和OV,但影响奇偶标志位P。,1 数据传送类指令,*,23,1数据传送到累加器A的指令 MOV A,#data;Adata MOV A,R
11、n;A(Rn)MOV A,Ri;A(Ri)MOV A,direct;A(direct)功能:把源操作数的内容送入累加器A。例如:MOV A,#10H,该指令执行时将立即数l0H送入累加器A中。该操作影响PSW的P标志位。,*,24,2.数据传送到工作寄存器Rn的指令 MOV Rn,#data;Rndata MOV Rn,direct;Rn(direct)MOV Rn,A;Rn(A)功能:是把源操作数的内容送入当前一组工作寄存器区的R0R7中的某一个寄存器。指令中Rn在内部数据存储器中的地址由当前的工作寄存器组选择位RS1、RS0确定,可以是00H07H、08H0FH、10H17H、18H1FH
12、。,*,25,(3)数据传送到直接地址的指令 MOV direct,A;(A)direct MOV direct,Rn;(Rn)direct,n=07 MOV direct1,direct2;MOV direct,Ri;(Ri)direct MOV direct,#data;#datadirect功能:把源操作数送入直接地址指出的存储单元。direct指的是内部RAM或SFR的地址。,*,26,(4)数据传送到间接地址的指令 MOV Ri,#data;(Ri)data MOV Ri,direct;(Ri)(direct)MOV Ri,A;(Ri)(A)功能:把源操作数的内容送入由间接地址Ri所
13、指的片内RAM单元中。,*,27,(5)16位数传送指令 MOV DPTR,#data16;#data16DPTR 唯一的16位数据的传送指令,立即数的高8位送入DPH,立即数的低8位送入DPL。,*,28,设片内RAM30H单元的内容为40H,设片内RAM40H单元的内容为10H,片内RAM10H单元的内容为00H,(P1)=0CAH,请写出下列指令执行后的结果。解:MOV R0,#30H;R030H MOV A,R0;A40H MOV R1,A;R140H MOV B,R1;B10H MOV R0,P1;30H 0CAH MOV P3,P1;P30CAH MOV 10H,#20H;10H2
14、0H MOV 30H,10H;30H20H,*,29,(6)累加器A与外部数据存储器传送指令,MOVX A,DPTR;A(DPTR),且使RD=0MOVX A,Ri;A(Ri),且使RD=0MOVX DPTR,A;(DPTR)(A),且使WR=0MOVX Ri,A;(Ri)(A),且使WR=0,*,30,(7)程序存储器内容送累加器A指令,该类指令采用变址寻址方式,把程序存储器(ROM或EPROM)中存放的表格数据读出,传送到累加器A。它共有两条单字节指令,指令操作码助记符为MOVC。,*,31,设程序存储器中数据与图4-4相同,执行以下程序:1000H:MOV A,#10H 1002H:MO
15、V DPTR,#1000H 1005H:MOVC A,A+DPTR,图4-4 程序存储器的一组数据表格,结果为:(A)=02H,(R0)=02H,(PC)=1004H。,;A10H,查表的偏移量;DPTR1000H,查表的偏移量;A(10H+1000H),*,32,例:,已知(A)=30H,(B)=40H,执行下列指令后,堆栈内容如何变化?MOV SP,#60HPUSH A PUSH B,堆栈工作示意图,;SP(SP)十1,(SP)(A),;SP(SP)十1,(SP)(B),;SP60H,进栈指令或压入指令,PUSH direct;SP(SP)十1,(SP)(direct),(8)堆栈操作指令
16、,*,33,出栈指令或弹出指令,POP direct;(direct)(SP);SP(SP)-1,例:,执行下列两条弹出指令后,堆栈内容如何变化?MOV SP,#60HPUSH A PUSH BPOP A POP B,堆栈工作示意图,;A(SP),SP(SP)-1,;B(SP),SP(SP)-1,*,34,(9)交换指令,XCH A,Rn XCH A,Ri XCH A,direct XCHD A,Ri SWAP A,前三条XCH指令是将A的内容和源操作数内容互换,XCHD是将A的低4位和(Ri)所指出的内部RAM单元的低4位互换,最后一条SWAP指令是将A的高4位与低4位之间进行交换。,*,3
17、5,2 算术操作类指令,算术操作类指令有24条,4种基本操作:加、减、乘、除。,算术操作指令的执行将影响程序状态字PSW的3个标志位:,3个标志除特别指出外,服从以下规则:操作结果在最高位有进位输出(加法时)或借位输入(减法时),Cy=1;否则;Cy=0。操作结果的低4位有进位输出(加法时)或有向高4位的借位(减法时),Ac=1;否则;Ac=0。溢出标志OV满足逻辑关系式OV=C6C7。,*,36,(1)加法指令1)不带进位位的加法指令,指令格式 功能 ADD A,Rn;A(A)+(Rn)ADD A,direct;A(A)+(direct)ADD A,Ri;A(A)+(Ri)ADD A,#da
18、ta;A(A)+data,说明:(1)相加过程中各标志变化符合规则要求;(2)无符号数相加,和的溢出与Cy置位是统一的;带符号数相加,和的溢出是指和+127或-128,另用OV置位来表示。,*,37,例 累加器内容为53H,R0内容为FCH。执行指令 ADD A,R0后,(A)=?(PSW)中有关各位=?,(A)=4FH,Cy=1,Ac=0,OV=0,P=1。,*,38,2)带进位位的加法,指令格式 功能 ADDC A,Rn;A(A)+(Rn)+(Cy)ADDC A,direct;A(A)+(direct)+(Cy)ADDC A,Ri;A(A)+(Ri)+(Cy)ADDC A,#data;A(
19、A)+data+(Cy),说明:(1)Cy值是指指令开始执行时的进位标志值,而不是相加过程中产生的值;(2)带进位加法指令主要用于多字节的加法运算中。,*,39,3)加1指令,指令格式 功能 INC A;A(A)+1 INC Rn;Ri(Rn)+1 INC Ri;(Rj)(Ri)+1 INC direct;direct(direct)+1 INC DPTR;DPTR(DPTR)+1,说明:(1)与加法小类指令不同,加1小类指令执行后不影响标志位。(2)INC DPTR是唯一的16位数算术运算指令。(3)加1指令用途广泛,例可以用来修改操作数的地址,以便使用间址指令。,*,40,4)累加器内容十
20、进制调整指令,DA A 说明:(1)该指令可使加法运算所得存于累加器A中的和进行十进制调整。执行的具体操作是:低半字节的值9或Ac为1时低半字节加6;高半字节的值9或Cy为1时高半字节加6。(2)这一指令专门配用于BCD码加法运算(3)十进制调整指令执行的结果根据有无进位将使进位位相应置位或复位。,*,41,(A)=01H,C=1,相当于十进制数101。,例 作加法后,(A)=9BH,C=0,Ac=0 则执行DA A后,A和C的内容为多少?,*,42,1)带借位减法指令,指令格式 功能 SUBB A,Rn;A(A)-(Rn)-(Cy)SUBB A,direct;A(A)-(direct)-(C
21、y)SUBB A,Ri;A(A)-(Ri)-(Cy)SUBB A,#data;A(A)-data-(Cy),说明:(1)减法指令只有一组带借位的减法指令,没有不带借位的减法指令。若要进行不带借位的减法操作,则在减法之前,要先用指令使Cy清零,即使Cy=0;然后再相减。(2)减法指令执行后按规则影响标志位。,(2)减法指令,*,43,例 设(A)=52H,(R0)=B4H,Cy=0,则执行指令SUBB A,R0后,(A)=?(PSW)中有关位=?,结果(A)=9EH,C=1,Ac=1,OV=1,P=1,*,44,2)减1指令,指令格式 功能 DEC A;A(A)-1 DEC Rn;Rn(Rn)-
22、1 DEC Ri;(Ri)(Ri)-1 DEC direct;direct(direct)-1,说明:与减法小类指令不同,减1小类指令执行后不影响 标志位。,*,45,说明:单字节指令。但执行时间要4个机器周期,与下面的除法指令相同,是指令系统中执行时间最长的两条指令。该指令可使放在累加器A和寄存器B中的两个待乘数相乘,乘法的结果为16位,高8位存放于B中,低8位在A中。指令执行后将影响三个标志位:C、OV、P,C复位,当乘积(B)=0时,OV=0,否则OV=1,P按A中1的个数的奇偶性确定。,(3)乘法指令,MUL AB;BA(A)(B),*,46,说明:该指令可使放在累加器A中的被除数,与
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C51 单片机 软件 基础
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6502463.html