




已阅读5页,还剩65页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章80C51单片机指令系统,3.1单片机指令系统概述3.280C51单片机指令寻址方式3.380C51单片机指令分类介绍,重点,80C51寻址方式、指令系统,难点,控制转移类指令,其他,尝试编写简单程序,第3章80C51单片机指令系统,3.1单片机指令系统概述,指令:规定计算机基本操作的语句或命令。指令通常有两个组成部分:操作码和操作数。操作码:用于规定指令进行什么操作。操作数:指令操作的对象,可以是具体的数据、数据的地址或符号。例如:MOVA,#20H,指令系统:一个单片机所能执行的指令集合。指令系统由单片机生产厂商定义的,由CPU的内部结构决定的。不同的单片机,其指令系统不尽相同。,80c51指令中使用的符号的意义作简要说明:,Rn(n=07):表示当前工作寄存器R0R7中的任一个寄存器。Ri:可用作间接寻址的寄存器,只能是R0,R1两个寄存器,i=0,1。direct:8位直接地址,在指令中表示直接寻址方式,寻址范围256个单元。#data:8位立即数。#data16:16位立即数。addr16:16位目的地址,主要用于LCALL和LJMP指令中。addr11:11位目的地址,主要用于ACALL和AJMP指令中。,rel:相对转移指令中的偏移量,为8位带符号补码。DPTR:数据指针。bit:内部RAM(包括专用寄存器)中的直接寻址位。A:累加器ACC:直接寻址方式的累加器。B:寄存器BC:进位标志位。也称为累加位。/:加在位地址的前面,表示对该位状态取反。:间接寻址寄存器的前缀标志。(X):某寄存器或某单元中的内容。(X):由“X”间接寻址单元中的内容。:箭头左边的内容被箭头右边的内容所取代。,3.280C51单片机指令寻址方式,寻址方式,通常是指某一个CPU指令系统中规定的寻找操作数所在地址的方式,或者说通过什么样的方式找到操作数。寻址方式的方便与快捷是衡量CPU性能的一个重要方面。MCS51单片机有七种寻址方式。,1.寄存器寻址方式定义:操作数在寄存器中,只要指定了寄存器就能得到操作数。例:MOVA,R0特点:由指令指出某一个寄存器的内容作为操作数。存放操作数的寄存器在指令代码中不占据单独的一个字节,而是嵌入(隐含)到操作码字节中。寻址范围:四组通用寄存器Rn(R0R7)、部分专用寄存器(A,B,DPTR,Cy)。,MOVA,Rn;A(Rn)其中n为07之一,Rn是工作寄存器。MOVRn,A;Rn(A)MOVB,A;B(A),2.直接寻址方式定义:指令中操作数直接以存储单元地址的形式给出。例如:MOVA,3AH特点:指令中含有操作数的地址。该地址指出了参与操作的数据所在的字节单元地址或位地址。只能使用8位二进制数表示的地址。寻址范围:片内RAM区(低128字节)、专用寄存器。,常见形式:MOVA,52H;把片内RAM字节地址52H单元的内容送累加器A中。MOV52H,A;把A的内容传送给片内RAM的52H单元中。MOV50H,60H;把片内RAM字节地址60H单元的内容送到50H单元中。MOVIE,#40H;把立即数40H送到中断允许寄存器IE。IE为专用功能寄存器,其字节地址为0A8H。该指令等价于MOV0A8H,#40H。INC60H;将地址60H单元中的内容自加1。,直接寻址方式示意图,3.寄存器间接寻址方式定义:指令给出的寄存器中存放的是操作数据的单元地址。这种寻址方式称为寄存器间接寻址。如:MOVA,R0,特点:指令给出的寄存器中存放的是操作数地址。寄存器间接寻址是一种二次(间接)寻找操作数的寻址方式,寄存器前边必须加前缀符号“”。不能用于寻址特殊功能寄存器SFR。,例如:MOVR0,#31HMOVA,R0例如:MOVDPTR,#3456H;DPTR3456HMOVXA,DPTR;A(DPTR),寄存器间接寻址方式示意图,寻址范围:内部RAM低128B(只能使用R0或R1作间址寄存器)外部RAM(使用DPTR作间址寄存器)对于外部低256单元RAM的访问,除可以使用DPTR外,还可以使用R0或R1作间址寄存器。堆栈操作指令(PUSH和POP)为SP作间址寄存器的间址寻址方式。,4.立即寻址方式定义:将立即参与操作的数据直接写在指令中,这种寻址方式称为立即寻址。例如MOVA,#3AHMOVDPTR,#data16立即数只能作为源操作数,不能当作目的操作数。特点:指令中直接含有所需的操作数。该操作数可以是8位的,也可以是16位的。通常使用#data或#data16表示.在立即数前面加“#”标志,用以和直接寻址中的直接地址(direct或bit)相区别。,例如:MOVA,#52H;A52HMOVDPTR,#5678H;DPTR5678H,立即寻址示意图,5.变址寻址方式定义:以基址寄存器(DPTR或PC)的内容为基本地址,加上变址寄存器A的内容形成16位的地址,访问程序存储器中的数据表格。这种寻址方式称为基址加变址寄存器间接寻址,简称为变址寻址。例如:MOVCA,A+DPTR;A(A)+(DPTR)MOVCA,A+PCJMPDPTR仅有3条变址寻址指令。这种寻址方式用于访问程序存储器中的数据表格.,特点:指令操作码中隐含作为基址寄存器用的DPTR(或PC)和作为变址用的累加器A。在执行变址寻址指令时,80c51单片机先把基地址(DPTR或PC的内容)和地址偏移量(A的内容)相加,以形成操作数地址,再由操作数地址找到操作数,并完成相应的操作。变址寻址方式是单字节指令。,寻址范围:只能对程序存储器ROM进行寻址,主要用于查表性质的访问。,6.位寻址方式MCS-51单片机中设有独立的位处理器。位操作指令能对内部RAM中的位寻址区(20H2FH)和某些有位地址的特殊功能寄存器进行位操作。定义:指令中给出的操作数是一个可单独寻址的位地址,这种寻址方式称为位寻址方式。MOVC,3AH特点:位寻址是直接寻址方式的一种,其特点是对8位二进制数中的某一位的地址进行操作。,例如:SETBTR0;TR01CLR00H;(00H)0MOVC,57H;将57H位地址的内容传送到C中ANLC,5FH;将5FH位与进位位C相与,结果在C中,寻址范围:内部RAM中的位寻址区单元地址为20H2FH的128位,位地址是00H7FH。两种表示方法:一种是位地址;另一种是单元地址加位。专用寄存器的可寻址位(4种表示方法)以PSW寄存器(单元地址为0D0H)的第5位,F0标志位,位地址为0D5H。直接使用位地址。例:为0D5H。位名称表示方法。例:使用F0表示该位。单元地址加位数的表示方法。例:表示为0D0H.5。专用寄存器符号加位数的表示方法。例:表示为PSW.5,7.相对寻址方式(解决程序转移),定义:将程序计数器PC的当前值(取出本条指令后的PC值)与指令第二个字节给出的偏移量(rel)相加,形成新的转移目标地址。称为相对寻址方式。例如:SJMPrel;(PC)(PC)+2+rel特点:目的地址指令地址指令字节数偏移量寻址范围:只能对程序存储器ROM进行寻址。相对地址偏移量(rel)是一个带符号的8位二进制补码,其取值范围为128127(以PC为中间的256个字节范围)。rel可以是标号。,3.380C51单片机指令分类介绍,MCS-51指令系统有42种助记符,代表了33种功能,指令助记符与各种可能的寻址方式相结合,构成80C51单片机的111条指令。这些指令按功能分成5大类:数据传送类(29条)算术运算类(24条)逻辑运算及移位类(24条)控制转移类(17条)位操作类(17条),3.3.1数据传送类指令,数据传送类指令一般的操作是把源操作数传送到指令所指定的目标地址。指令执行后,源操作数保持不变,目的操作数为原操作数所替代。数据传送类指令用到的助记符有:MOV,MOVX,MOVC,XCH,XCHD,PUSH,POP,SWAP。,3.380C51单片机指令分类介绍,一、数据一般传送指令助记符“MOV”表示:格式:MOV目的操作数,源操作数功能:目的操作数(源操作数中的数据)源操作数可以是:A、Rn、direct、Ri、#data目的操作数可以是:A、Rn、direct、Ri数据传送指令一般不影响标志。,1以累加器为目的操作数的内部数据传送指令,2数据传送到工作寄存器Rn的指令,3数据传送到内部RAM单元或特殊功能寄存器SFR的指令,片内数据RAM及寄存器的数据传送指令MOV、PUSH和POP共18条,如图所示。,例1:若(30H)=35H,(R1)=70H,说明指令MOVR1,30H的结果。解:执行后,直接地址70H(即寄存器R1的内容)的内容为35H,30H与R1的内容不变。例2:已知(70H)=60H,(60H)=20H,(P1)=0B7H,执行下面指令,说明结果。MOVR0,#70HMOVA,R0MOVR1,AMOVB,R1MOVR0,P1解:结果是:(70H)=0B7H,(60H)=20H,B=20H(R1)=60H,(R0)=70H,;R0-70H;A-60H;R1-60H;B-20H;70H-0B7H,例3指出下面指令的错误:MovR1,R3MovRn,RiMovA,R3解:MovR1,R3无寄存器之间直接传送指令MovRn,Ri,无寄存器间接寻址指令MovA,R3,间接寻址只能是R1或R0,二、外部数据存储器读/写指令(1)Ri作间址寄存器的外部RAM单元读/写指令MOVXA,Ri(Ri间接寻址的外部RAM单元读)MOVXRi,A(Ri间接寻址的外部RAM单元写)(2)DPTR作间址寄存器的外部RAM单元读/写指令MOVXA,DPTR(DPTR间接寻址的外部RAM单元读)MOVXDPTR,A(DPTR间接寻址的外部RAM单元写)三、程序存储器读指令组(只能读不能写,单字节指令)MOVCA,A+DPTR(程序存储器读)MOVCA,A+PC(程序存储器读)注意:读写程序存储器时,只能通过A.,片外数据存储器数据传送指令MOVX共4条,如图:,程序存储器查表指令MOVC共2条,如图所示。,HBA:INCAHMOVCA,A+PCHRETHDB30HHDB31H200CHDB39H200DHDB41H200EHDB42H200FHDB43H2010HDB44H2011HDB45H2012HDB46H,例:假定(A)=00H,程序执行情况:,解:PC+A=2002H+01H=2003HA=30H。,四、数据交换指令组(1)整字节交换指令XCHA,Rn(寄存器寻址字节交换)XCHA,direct(直接寻址字节交换)XCHA,Ri(Ri间接寻址字节交换)(2)半字节交换指令XCHDA,Ri(Ri间接寻址半字节交换)(3)累加器高低半字节交换指令SWAPA(累加器内容高低半字节交换),数据交换指令XCH、XCHD、和SWAP共5条,如图所示。,【例】(R0)30H,(A)65H,(30H)8FH分别执行下列指令:,XCHA,R0;(R0)30H,(A)8FH,(30H)65HXCHDA,R0;(R0)30H,(A)6FH,(30H)85HSWAPA;(A)56H,五、堆栈操作指令组PUSHdirect(进栈)POPdirect(出栈)例5:设(SP)=30H,(ACC)=60H,(B)=70H执行PUSHACC,PUSHB后的结果如何?解:PUSHACC;(SP)-31H,(31H)-60HPUSHB;(SP)-32H,(32H)-70H结果为:(SP)=32H,(31)(32H)=70H,例如:进入中断服务程序时,把程序状态寄存器PSW、累加器A、数据指针DPTR进栈保护。设当前SP为60H。则程序段执行后,SP内容修改为64H,而61H、62H、63H、64H单元中依次压入PSW、A、DPL、DPH的内容,当中断服务程序结束之前,以下程序段(SP保持64H不变)指令执行之后,SP内容修改为60H,而64H、63H、62、61H单元的内容依次弹出到DPH、DPL、A、PSW中。,PUSHPSWPUSHACCPUSHDPLPUSHDPH,POPDPHPOPDPLPOPACCPOPPSW,【练习1】指出下列程序段的每条指令的源操作数是什么寻址方式,并写出每步运算的结果。(相关单元的内容)设程序存储器(1050H)=5AH:,;A=0FH,立即寻址;(30H)=0F0H,立即寻址;R2=0FH,寄存器寻址;R1=30H,立即寻址;A=0F0H,寄存器间接寻址;DPTR=1000H,立即寻址;A=50H,立即寻址;A=5AH,基址变址寻址;PC目标105AH,基址变址寻址;C=0,寄存器寻址;(20H)=0,寄存器寻址,【练习2】用数据传送指令实现下列要求的数据传送。(1)R0的内容输出到R1。(2)内部RAM20H单元的内容传送到A中。(3)外部RAM30H单元的内容送到R0。(4)外部RAM30H单元的内容送内部RAM20H单元。(5)外部RAM1000H单元的内容送内部RAM20H单元。(6)程序存储器ROM2000H单元的内容送R1。(7)ROM2000H单元的内容送内部RAM20H单元。(8)ROM2000H单元的内容送外部RAM30H单元。(9)ROM2000H单元的内容送外部RAM1000H单元。,解(1)MOVA,R0MOVR1,A(2)MOVA,20H(3)MOVR0,#30H或MOVR1,#30HMOVXA,R0MOVXA,R1MOVR0,AMOVR1,A(4)MOVR0,#30H或MOVR1,#30HMOVXA,R0MOVXA,R1MOV20H,AMOV20H,A(5)MOVDPTR,#1000HMOVXA,DPTRMOV20H,A,(8)MOVDPTR,#2000HCLRAMOVCA,A+DPTRMOVR0,#30HMOVXR0,A(9)MOVDPTR,#2000HCLRAMOVCA,A+DPTRMOVDPTR,#1000HMOVXDPTR,A,(6)MOVDPTR,#2000HCLRAMOVCA,A+DPTRMOVR1,A(7)MOVDPTR,#2000HCLRAMOVCA,A+DPTRMOV20H,A,3.3.2算术运算类指令,1加法指令加法指令分为普通加法指令、带进位加法指令和加1指令。(1)普通加法指令,算术运算指令都是按8位二进制无符号数执行的。,【例】(A)=85H,(R0)=20H,(20H)=0AFH,执行指令:ADDA,R010000101+10101111100110100结果:(A)=34H;Cy=1;AC=1;OV=1。对于加法,溢出只能发生在两个加数符号相同的情况。,对标志位产生影响注意课本指令表格中的含义。,(2)带进位加法指令【例如】(A)=85H,(20H)=0FFH,Cy=1执行指令:ADDCA,20H结果:(A)=85H;Cy=1;AC=1;OV=0。,(3)加1指令【例如】(A)12H,(R3)0FH,(35H)4AH,(R0)56H,(56H)00H执行如下指令:INCA;执行后(A)13HINCR3;执行后(R3)10HINC35H;执行后(35H)4BHINCR0;执行后(56H)01H,2减法指令(1)带借位减法指令,(2)减1指令,3.乘法指令乘法指令完成单字节的乘法,只有一条指令:MULAB;AB(A)(B)【例如】(A)50H,(B)0A0H,执行指令:MULAB结果:(B)32H,(A)00H(即乘积为3200H),Cy0,OV1。4.除法指令除法指令完成单字节的除法,只有一条指令:DIVAB;A(A)/(B)的商B(A)/(B)的余数,说明:MUL指令实现8位无符号数的乘法操作,两个乘数分别放在累加器A和寄存器B中,乘积为16位,低8位放在A中,高8位放在B中;DIV指令实现8位无符号数除法,被除数放在A中,除数放在B中,指令执行后,商放在A中而余数放在B中。,5.十进制调整指令DAA执行该指令时,判断A中的低4位是否大于9,若满足大于则低4位做加6操作;同样,A中的高4位大于9则高4位加6操作。例如:有两个BCD数36与45相加,程序如下:MOVA,#36HADDA,#45HDAA得结果7BH;第三条指令对累加器A进行十进制调整,低4位(为0BH)大于9,因此要加6,最后得到调整的BCD码81。,算术运算类指令包括:ADD、ADDC、SUBB、MUL、DIV、INC、DEC和DA,如图3.9所示。图3.9算术运算类指令,3.3.3逻辑运算及移位类指令,1逻辑与指令【例如】(A)37H,(R0)0A9H执行指令:ANLA,R0结果:(A)21H,2逻辑或指令【例如】(A)37H,(P1)09H执行指令:ORLP1,A结果:(A)3FH,3逻辑异或指令,4累加器清0和取反指令CLRA;对累加器A清“0”CPLA;对累加器A按位取反,ClearConversePositionLogical,当需要只改变字节数据的个别位而其余位不变时,只能通过逻辑运算完成。,应用举例将累加器A的低4位传送到P1口的低4位,但P1口的高4位保持不变。,MOVR0,AANLA,#0FHANLP1,#0F0HORLP1,AMOVA,R0,5移位指令,RecycleLeftRecycleLeftCarry,循环左移指令示意图:RLA,循环右移指令示意图:RRA,带进位的循环左移指令示意图:RLCA,带进位的循环右移指令示意图:RRCA,逻辑运算及移位类指令总结,3.3.4控制转移类指令,1.无条件转移指令(1)绝对转移指令AJMPaddr11这是2KB范围内的无条件跳转指令。操作过程可表示为:PC(PC)2PC100addr11(2)短转移指令SJMPrel操作过程可表示为:PC(PC)2PC(PC)rel目标地址=源地址+2+rel,AbsoluteJump,ShortJump,(3)长转移指令LJMPaddr16;PCaddr16程序无条件转向pc指定的目标地址。转移指令的目标地址可在64KB程序存储器地址空间的任何地方,不影响任何标志。(4)变址寻址转移指令(散转指令)JMPA+DPTR;PC(A)(DPTR)2.条件转移指令,(1)累加器判零转移指令,LongJump,Jump,JumpZeroJumpNotZero,(2)数值比较转移指令在MCS-51中没有专门的比较指令,但提供了下面4条比较不相等转移指令;(3)减1不为0转移指令DJNZRn,rel;R(R)10转移DJNZdirect,rel;direct(direct)10转移,DecreaseJumpNotZero,CompareJumpNotEqual,条件转移类指令总结,4.子程序调用及返回指令(1)绝对调用指令ACALLaddr11执行该指令时,PC(PC)2SP(SP)1,(SP)(PC)70SP(SP)1,(SP)(PC)158PC100addr11(2)长调用指令LCALLaddr16这条
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能楼宇系统升级改造合作协议
- 2025年北京市西城区高考地理一模试卷
- 公文语言的简练与表达试题及答案
- 出生日期及工作背景综合证明书(6篇)
- 智能硬件产品创新研发方案
- 小区农业综合服务合作协议
- 工业自动化设备采购合同
- 行政管理与政策倡导的结合试题及答案
- 法律服务行业执业资格证明书(7篇)
- 管理心理学对市场营销的启示试题及答案
- 每日安全检查表
- 学会宽容快乐生活主题班会课件
- 毕业生就业意向调查表
- 微电网及储能技术
- 《食品安全事故处置方案》
- 国家电网招聘之其他工学类复习提高资料打印
- 婴儿抚触与婴儿操-婴儿抚触的手法(婴幼儿抚触与按摩课件)
- 学校食堂病媒生物防治管理制度范本(通用8篇)
- PID传感器CF值异丁烯标定
- 气排球记录方法五人制2017年5月9日
- 硕士研究生专业研究方向证明(模板)
评论
0/150
提交评论