单片机指令系统.pptx
《单片机指令系统.pptx》由会员分享,可在线阅读,更多相关《单片机指令系统.pptx(231页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、2关于汇编语言:特点:易于记忆,理解,但不能被计算机识别和执行。必须翻译成机器语言指令。汇编:把汇编语言编写的原程序翻译成机器语言的过程叫汇编。翻译工具称为汇编程序或汇编器。机器码汇编语言指令格式E562MOVA,62H操作码操作数第1页/共231页第2页/共231页汇编语言格式:用助记符表示指令的格式。80C51 80C51汇编语言典型的指令格式 操作码 操作数;注释 目的操作数,源操作数 操作码:是用助记符表示的字符串,它的作用 是命令CPUCPU做某种操作。操作数:是参与指令操作的数据或数据地址 MOV A MOV A,38H38H;(38H38H)A A 第3页/共231页3.2 80
2、C513.2 80C51单片机寻址方式MOVA,38H;(38H)A指令的执行:在执行指令时,CPU首先要根据地址寻找参加运算的操作数,然后才能对操作数进行操作,操作结果还要根据地址存入相应存储单元或寄存器寻址方式:在计算机中,寻找操作数的方法定义为指令的寻址方式。80C51有7种寻址方式第4页/共231页80C51的寻址方式1.寄存器寻址2.直接寻址3.寄存器间接寻址4.立即寻址5.变址寻址6.位寻址7.相对寻址第5页/共231页1.寄存器寻址操作数在寄存器中。指定寄存器就能得到操作数。在指令中,以符号名称来表示寄存器。寻址范围:当前寄存器组R0-R7。部分专用寄存器,累加器A,寄存器B及数
3、据指针等例:”INCR2”第6页/共231页北航p53图3-1第7页/共231页2.直接寻址方式是由指令直接给出操作数地址。也就是直接寻址指令的指令码中含有操作数地址,该地址通常是8位二进制数。E562MOVA,62H;A(62H)62H为直接寻址地址。第8页/共231页第9页/共231页直接寻址方式可访问三种地址空间(1)内部RAM的007F(片内RAM的低128字节)。E562MOVA,62H;A(62H)(2)高128个RAM中的专用寄存器(除了以单元地址形式出现外,还可以以寄存器符号)E581MOVA,SP;ASP(3)特定的位地址空间A220 MOV C,20H;Cy (20H)第1
4、0页/共231页注:是专用寄存器的唯一的寻址方法 可以直接写地址 部分可写名字 E581 MOV A E581 MOV A,SPSP;A SP A SP E581 MOVA E581 MOVA,81H;A 81H;A(81H)(81H)第11页/共231页3.寄存器间接寻址指令码中含有操作数地址的寄存器号。计算机执行这类指令时,首先根据指令码中寄存器号找到所需要的操作数地址,再由操作数地址找到操作数。MOVA,R0;寄存器R0中存放着地址,操作数在该地址中。第12页/共231页第13页/共231页寻址范围:(1)内部数据RAM:低128个RAM,只能使用R0,R1作间接寻址寄存器(2)外部RA
5、M64KB,间接寻址寄存器为DPTRMOVXA,DPTR(3)外部低256单元:可用DPTR,R0,R1间址寄存器采用Ri,DPTR区别于寄存器寻址的标记第14页/共231页注意:Ri用于片内RAM的寻址007F也可以用于片外RAM000000FFDPTR:寻址范围可覆盖片外64K不能用于寻址特殊功能寄存器SFR例如,如下程序不能访问SPMOVR0,#81H;MOVA,R0第15页/共231页4立即寻址操作数在指令中直接给出“#”为立即数指示符,没有就是直接地址如:7462 MOV A,#62H;A 62H立即数,一般为8位,16位立即数作地址MOVDPTR,#data16;第16页/共231
6、页5.变址间接寻址以程序计数器PC或数据指针DPTR作为基址寄存器,以累加器A作为变址寄存器,这两者内容之和形成新的16位地址作为操作数地址.如:MOVCA,A+DPTR第17页/共231页累加器A中应预先存放有被寻址操作数地址对基地址的偏移量,该地址偏移量应是00H-FFH范围内的无符号数.第18页/共231页专门针对程序存储器的寻址方式第19页/共231页6位寻址方式位寻址指令的指令码中含有位地址。根据位地址可以找到位操作数。如:ANLC,30H;位寻址范围:(1)内部RAM寻址区,20H2FH,128位(2)某些特殊功能寄存器SFR,其特征是它们的物理地址应能被8整除。分布在80HFFH
7、的字节区。第20页/共231页第21页/共231页第22页/共231页位寻址时,指令中位的表示方法(1)直接使用物理位地址表示法MOVC,7FH;Cy(7FH)(2)采用第几字节单元第几位的表示MOVC,2FH.7;Cy(7FH)(3)可以位寻址的特殊功能寄存器直接采用寄存器名加位数MOVC,ACC.7;(4)经伪指令定义过的字符名称第23页/共231页7.相对寻址方式:为程序转移而设置,只为转移指令所使用在相对转移指令中使用.是以PC的当前值为基准,加上指令中给出的相对偏移量(rel),形成有效转移地址.地址的相对偏移量是一个带符号的8位二进制数.常以补码的形式出现。其取值范围-128-+1
8、27.例如:1000HSJMPrel;设rel=36H,指令放在1000H目的地址:转移指令地址+转移指令字节数+rel第24页/共231页第25页/共231页转移范围:以PC的当前值为起始地址,相对偏移在-128-+127个字节单元之间两类相对转移指令:双字节相对转移指令,又称短转移指令三字节相对转移指令,又称长转移指令第26页/共231页机器数的原码,反码和补码机器数的原码:二进制数符号化以后的表现形式。定义为最高位为符号位,其余位为数值位。符号位的0表示该数为正数。符号位为1表示它是负数。机器数有原码,反码和补码共三种表示方法。反码:正数的反码和原码相同,负数反码的符号位和负数原码的符号
9、位相同,数值位是按位取反补码:正数的补码与正数的原码,反码相同。负数的补码符号位为1。负数的补码是反码加1。-Y补=Y+1符号位数值位第27页/共231页已知X=+1010B,Y=-01010B,试分别写出它们在8位微机中的补码,反码和补码X原=00001010B Y原=10001010BX反=00001010B Y反=11110101BX补=00001010B Y补=11110110B第28页/共231页 8位有符号数表示的范围:原码:-127+127反码:-127+127补码:-128+127运算的结果超过此范围则发生溢出。第29页/共231页教材表5.1P134相对寻址位寻址第30页/共
10、231页练习:1.指出下列每条指令源操作数的寻址方式和功能MOVA,#40HMOVA,40HMOVA,R1MOVCA,A+PCMOVA,R3SJMPLOOP第31页/共231页注1 1:在指令系统中,字节地址和位地址是有区别的,前者表示direct后者表示bitE520MOVA,20H;A(20H)A220MOVC,20H;Cy(20H)第32页/共231页注2 2:在80C5180C51指令系统中,累加器有A A,ACCACC和E0HE0H三种表现形式,分属于不同的寻址方法,但执行效果完全相同。04 INC A 04 INC A;05E0 INC ACC 05E0 INC ACC;05E0
11、INC 0E0H;05E0 INC 0E0H;在指令系统中累加器的助记符A A,作为直接地址时的助记符ACCACC第33页/共231页3.380C51单片机指令系统111条5大类:1数据传送指令(29条)2算术运算类指令(24条)3逻辑运算及移位类指令(24条)4控制转移指令(17条)5位操作类(17条)第34页/共231页教材45页指令中符号意义说明:在分类介绍指令之前,先把指令中使用的一些符号意义作简单说明/-加在位地址的前面,表示对该位状态取反。()-某寄存器或某单元的内容。()-由间接寻址的单元中的内容。箭头左边的内容被箭头右边的内容所取代。第35页/共231页Rn-当前寄存器组的8个
12、通用寄存器R0R7,所以n=07。Ri-可用作间接寻址的寄存器,只能是R0、R1两个寄存器,所以i=0,1。direct-内 部 RAM的 8位 地 址。既可以是内部RAM的低128个单元地址,也可以是专用寄存器的单元地址或符号。因此在指令中表示直接寻址地址。#data-8位立即数。#data16-16位立即数。addr16-16位目的地址,只限于在LCALL和LJMP指令中使用。第36页/共231页addr11-11位目的地址,只限于在ACALL和AJMP指令中使用。rel-相对转移指令中的偏移量,为8位带符号补码数。DPTR-数据指针。bit-内部RAM(包括专用寄存器)中的直接寻址位。A
13、-累加器。(直接寻址方式的累加器表示为ACC)B-B寄存器。C-进位标志位,它是布尔处理机的累加器,也称之为累加位。-间址寄存器的前级标志。第37页/共231页3.3.1数据传送指令(数据流动的路径)用于数据的保存和交换内部RAM数据传送(MOV)数据传送外部数据传送(MOVX)程序存储器数据传送 (MOVC)数据交换AB堆栈操作第38页/共231页1.内部RAM数据传送指令组 包括:寄存器,累加器,RAM,专用寄存器间数据传送(1)立即传送指令位立即数传送指令(条)MOVA,#data;AdataMOVdirect,#data;directdata内部个RAM和部分专用寄存器MOVRn,#d
14、ata;RndataMOVRi,#data;(Ri)data 01111rrrdata第39页/共231页16位立即数传送指令(1条)(三字节指令)MOV DPTR,#data 16;DPTR data16例题例题:已知:R0=20H,8031执行如下指令后,累加器A,R7,20H和21H单元中的内容是什么MOVA,#18H;MOVR7,#28H;MOVR0,#38H;MOV21H,#48H;解:A=18H,R7=28H,(20H)=38H,(21H)=48H第40页/共231页(2)内部内部RAM单元之间的数据传送指令(单元之间的数据传送指令(5条)条)MOVdirect2,direct1;
15、direct2(direct1)MOV direct,Rn;(direct)(Rn)MOVRn,direct;Rn(direct)MOV direct,Ri ;direct((Ri))MOV Ri,direct;(Ri)(direct)功能:把上述逗号右侧所规定的源操作数传送到逗号左侧的目的存储单元。内部RAM单元之间的数据传送可以使用直接寻址,寄存器寻址以及寄存器间接寻址第41页/共231页例题:已知:R1=32H,(30H)=AAH,(31H)=BBH,(32H)=CCH,试问如下指令执行后累加器A,50H,R6,32H和P1口中的内容是什么MOVA,30H;MOV50H,A;MOVR6,
16、31H;MOVR1,30H;MOVP1,32H;解:A=AAH,(50H)=AAH,R6=BBH,(32H)=AA,P1=AAH第42页/共231页(3)通过累加器的数据传送指令()通过累加器的数据传送指令(6条):条):MOVA,Rn;ARnMOVRn,A;RnAMOV A,direct;A(direct)MOVdirect,A;directAMOVA,Ri;A(Ri)MOVRi,A;(Ri)A功能:实现累加器与不同寻址方式的内部RAM单元之间的数据传送第43页/共231页例题已知(40H)=11H,(41H)=22H,R0=40H,R1=41H,试问如下指令执行后,A,40H,41H和42
17、H单元的内容是什么。MOVA,R0;MOVR1,A;MOV42H,R1;A=11H、(40H)=11H,(41)=11H,(42H)=11H第44页/共231页数据交换的方式第45页/共231页注意:以累加器A为目的地址的传送指令会影响PSW中的奇偶标志位。其余传送指令对所有标志均无影响。正确估计指令字节数的方法:凡指令中含有直接地址或立即数的,指令字节数均应在原有基础上加1。MOV A,Ri;单字节指令MOVA,direct;双字节指令MOVdirect,#data;三字节指令注意程序的合法性:MOVRn,Ri;MOV#data,A第46页/共231页3.3.1数据传送指令(数据流动的路径)
18、用于数据的保存和交换内部数据传送(MOV)数据传送外部数据传送(MOVX)程序存储器数据传送 (MOVC)数据交换AB堆栈操作第47页/共231页2外部RAM数据传送指令外部数据存储器的读/写指令为MOVXMOVX对外部数据存储器读/写只能通过累加器A A使用间接寻址方式进行。间接寻址寄存器可以是DPTRDPTR和RiRi累加器A寄存器间接寻址R1R08位指针寻址外部256个单元寄存器间接寻址DPTR16位指针外部寻址64K第48页/共231页1.使用DPTR进行间接寻址MOVXA,DPTR;A(DPTR)MOVXDPTR,A;(DPTR)(A)DPTR所指定的片外数据存储器与累加器之 间 传
19、 送 数 据。访 问 外 部 RAM的 64K区0000H-FFFFH2.使用R1,R0进行间接寻址MOVXA,Ri;A(Ri)MOVXRi,A;(Ri)(A)完成R0,R1为地址指针的片外存储器与累加器之间的数据传送。访问RAM的低地址区。0000H-00FFH(注意:p53)第49页/共231页例题若已知片内RAM的(30H)=88H,编写程序将30H中的内容送到片外RAM的1200H单元。解:内部RAM30H单元中的数是不能直接传送到外部RAM的1200H单元的,必须通过累加器A的转送。相应程序为:MOVR0,#30H;MOVA,R0;A(30H)MOVDPTR,#1200;MOVXDP
20、TR,A;1200HA第50页/共231页传送过程片内RAM30H88H片外RAM1200H88H累加器A第51页/共231页3.程序存储器数据传送指令(向A传送指令)功能是对存放在程序存储器中的数据表格进行查找传送.只能向累加器A传送无论是内部程序存储器还是外部程序存储器,读指令为MOVC只能向A传送,采用变址寻址方式。第52页/共231页只有两条读指令:MOVCA,A+DPTR;A(A)(DPTR)MOVCA,APC;A(A)(PC)累加器A基址寄存器+变址寄存器变址寻址PC+A(程序存储器0-256K)基址寄存器+变址寄存器变址寻址DPTR+A(程序存储器0-64K)第53页/共231页
21、例:第54页/共231页MOVCA,A+DPTR;执行过程:第55页/共231页两条指令的区别:DPTR 作基址寄存器,可灵活地查询64KB空间的数据(远程查表)PC作基址寄存器,只能查询当前PC至PC256个字节范围内的数据(近程查表)第56页/共231页第57页/共231页3.3.1数据传送指令(数据流动的路径)用于数据的保存和交换内部数据传送(MOV)数据传送外部数据传送(MOVX)程序存储器数据传送 (MOVC)数据交换AB堆栈操作第58页/共231页4数据交换指令组(RAM与A的交换)整字节半字节1.整字节交换指令(3条)XCHA,Rn;(A)(Rn)XCH A,direct;(A)
22、(direct)XCH A,Ri;(A)(Ri)2.半字节交换指令(低4位交换)XCHDA,Ri;A30(Ri)303.累加器高低半字节交换指令SWAPA;(A)30(A)74第59页/共231页例:设(A)57H,(20H)=68H,(R0)30H,(30H)39H代码结果XCHA,20H;(A)68H,(20H)57HXCHA,R0;(A)39H,(30H)57HXCHA,R0;(A)30H,(R0)57HXCHDA,R0;(A)59H,(30H)37HSWADA,;(A)75H第60页/共231页5。堆栈操作指令组堆栈操作指令是一种特殊的数据传送指令,其特点是根据堆栈指示器SPSP中栈顶
23、地址进行数据交换。1.1.进栈指令:PUSH PUSH direct direct ;(sp)(sp)(sp)+1,(sp)+1,((spsp))(direct)(direct)其功能内部低128128个单元或专用寄存器内容送栈顶单元。或者说把直接地址中的数压入堆栈。第61页/共231页2 2.出栈指令:POP POP directdirect;(direct)(direct)(sp),(sp)(sp),(sp)(sp)-1(sp)-1把栈顶中的数弹出到直接地址。注意:是对直接寻址单元的内容进行操作:内部RAMRAM低128128个单元或专用寄存器第62页/共231页例:PUSHDPL;保护D
24、PL内容PUSHDPH;保护DPH内容PUSHPSW;保护PSW内容PUSHACC;保护累加器内容.POPACC;恢复累加器内容POPPSW;恢复PSW内容POPDPH;恢复DPH内容POPDPL;恢复DPL内容以上是对DPTR、PSW,A中内容的保护第63页/共231页A:代表累加器ACC:代表累加器的地址堆栈操作只有直接寻址方式注:正确指令错误指令PUSHACCPUSHAPUSH00HPUSHR0POPACCPOPAPOP00HPOPR0第64页/共231页数据传送类指令一览表第65页/共231页第66页/共231页对指令的几点说明:(1)不同的寻址方式可实现相同的数据传递。如:(26H)
25、(A)1.MOV26H,A寄存器寻址方式两字节F5H26H2.MOVR0,#26HMOVR0,A3.MOV26H,ACC直接寻址方式三字节85H26HE0H4.MOV26H,E0H5.PUSHACCPOP26H(2)两条指1、3令看起来类似,但是是两条不同的指令数据传送,不影响程序状态字PSW。第67页/共231页(3)数据传送,除了在以累加器A为目的操作数时会对奇偶标志P有影响外,其余不影响程序状态字PSW。第68页/共231页3.3.2算数运算类指令ADD类指令:共4条(1)ADDA,Rn;AA+(Rn)(2)ADDA,direct;AA+(direct)(3)ADDA,Ri;AA+(Ri
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 指令系统
限制150内