单片机课件 第3章_第1页
单片机课件 第3章_第2页
单片机课件 第3章_第3页
单片机课件 第3章_第4页
单片机课件 第3章_第5页
已阅读5页,还剩57页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式系统基础主讲:

李静第3章51单片机汇编语言介绍单片机课件第3章第1页3.151单片机指令系统电子系

李静指令系统MCS-51单片机有111条指令有49条单字节、45条双字节、17条三字节有64条单周期、45条双周期、2条四面期按功效分类可划分为5类:1)数据传送类指令29条。2)算术运算类指令24条。3)逻辑运算类指令24条。4)控制转移类指令22条。5)位操作类指令12条。单片机课件第3章第2页3.151单片机指令系统电子系

李静指令系统——符号约定Rn(n=0~7)Ri(i=0、1)#data:代表8位马上数。#data16:代表16位马上数。direct:代表8位片内RAM单元(包含SFR)直接地址。Addr11

addr16rel:指定补码形式8位地址偏移量。地址偏移量范围为-128~+127。bit:代表片内RAM或SFR可直接寻址位地址。@:间接寻址方式中,表示间址存放器符号。/:位操作指令中,表示先对该位求反再参加操作,但不影响该位原值。(×):表示由×所指地址单元中内容。←:指令操作流程,将箭头右边内容送到箭头左边单元中。$:指本条指令起始地址。单片机课件第3章第3页3.151单片机指令系统电子系

李静汇编语言指令格式[标号:]操作码[操作数1][,操作数2][,操作数3][;注释]MAIN:MOVSP,#5FH;设置栈底指令格式机器语言指令格式操作码操作数地址码单字节指令,如RETI双字节指令,如MOVA,#54H三字节指令,如MOV30H,#54H0123H0122H00110010B(32H)0121H0123H01010100B(54H)0122H01110100B(74H)0121H01010100B(54H)0123H00110000B(30H)0122H01110101B(75H)0121H单字节指令操作码本身就隐含了操作数信息;普通情况下,双字节指令首字节为操作码,第二字节为操作数或操作数地址;三字节指令首字节为操作码,后面两个字节为操作数或操作数地址。指令字节越多,所占内存单元越多,但执行时间长短只取决于执行该指令需要多少个机器周期。单片机课件第3章第4页3.151单片机指令系统电子系

李静寻址方式怎样找到操作数地址方式马上寻址相对寻址位寻址直接寻址存放器寻址变址寻址存放器间接寻址单片机课件第3章第5页3.151单片机指令系统电子系

李静寻址方式——马上寻址马上寻址方式在指令中直接给出操作数表示马上数时前面加#马上数能够用二进制数(B)十六进制数(H)十进制数例:MOVA,#23H;A←23HMOVDPTR,#2040H;DPL←40H,DPH←20HMOV

A,#3AH;A←3AH单片机课件第3章第6页3.151单片机指令系统电子系

李静寻址方式——直接寻址直接寻址方式指令中给出操作数地址直接寻址方式可寻址内部128字节RAM特殊功效存放器SFR位寻址单元特殊功效存放器只能使用直接寻址方式,能够用其名称表示直接地址例:MOV90H,A;90H←(A)MOVP1,A;P1←(A)MOVA,70H;A←(70H)单片机课件第3章第7页3.151单片机指令系统电子系

李静寻址方式——存放器寻址存放器寻址方式指令中给出存放器编号存放器编号为R0--R7其对应工作存放器组由RS1、RS0决定例INCR0;R0←(R0)+1ADDA,R2;A←(A)+(R2)MOVA,R5;A←(R5)对累加器A、通用存放器B、数据指针存放器DPTR和进位位CY,其寻址时详细存放器已隐含在其操作码中,而对选定8个工作存放器R0~R7则用操作码低三位指明所用存放器。用户可用PSW中RS1、RS0来选择存放器组,再用操作码中低三位来确定是组内哪一个存放器,以到达寻址目标。单片机课件第3章第8页3.151单片机指令系统电子系

李静寻址方式——存放器间接寻址存放器间接寻址在指令中给出存放操作数地址存放器可用于间接寻址方式存放器有R0、R1用于寻址内部256字节RAM/SFRDPTR用于寻址外扩数据存放器(R0、R1)寻址外扩数据存放器,只能用存放器间接寻址方式例:MOVA,@R0MOVX@DPTR,A单片机课件第3章第9页3.151单片机指令系统电子系

李静寻址方式——变址寻址变址寻址方式是以累加器A中内容加上变址存放器值形成操作数地址可用做变址存放器是DPTR或PC变址寻址方式只用于读取程序存放器中数据例:MOVCA,@A+DPTRMOVCA,@A+PC单片机课件第3章第10页3.151单片机指令系统电子系

李静相对寻址方式仅用于转移指令相对转移基准是PC当前值相对转移范围为-128~+127全部条件转移都采取相对寻址方式例:JNZrelrel可为一指令标号,其位置应在相对转移范围内JZ30H寻址方式——相对寻址单片机课件第3章第11页3.151单片机指令系统电子系

李静寻址方式——位寻址位寻址是指对片内RAM位寻址区和一些有位地址特殊功效存放器进行位操作时寻址方式。例:MOVC,07H单片机课件第3章第12页电子系

李静数据传送类指令数据传送类指令有29条,分为5类内部RAM及SFR间传送MOV读写外部数据存放器MOVX读程序存放器MOVC数据交换XCHXCHD SWAP栈操作PUSHPOP传送指令不影响标志位3.151单片机指令系统单片机课件第3章第13页电子系

李静数据传送类指令——内部RAM及SFR间传送(MOV)另有一条16位传送指令MOVDPTR,#data163.151单片机指令系统单片机课件第3章第14页电子系

李静数据传送类指令——读写外部数据存放器(MOVX)读写外部数据存放器必须经过累加器A读写外部数据存放器指令只能用间接寻址方式间址单元为DPTR或R0、R1MOVXA,@DPTRMOVX@DPTR,AMOVXA,@RiMOVX@Ri,A3.151单片机指令系统单片机课件第3章第15页电子系

李静数据传送类指令——读程序存放器(MOVC)读程序存放器必须经过累加器A读程序存放器指令只能用变址寻址方式变址单元为DPTR或PCMOVCA,@A+DPTRMOVCA,@A+PC3.151单片机指令系统单片机课件第3章第16页电子系

李静数据传送类指令——数据交换字节交换指令Rn

XCHA,direct

@Ri半字节交换指令

XCHDA,@Ri

累加器A中低四位与Ri所指单元低四位交换

SWAPA

累加器A中高四位与低四位交换3.151单片机指令系统单片机课件第3章第17页电子系

李静数据传送类指令——栈操作指令栈操作只能用直接寻址方式压栈指令

PUSHdirect出栈指令

POPdirect3.151单片机指令系统单片机课件第3章第18页电子系

李静传送关键点指令中包含源操作数与目操作数传送完成后目与源相同(交换除外)传送指令不影响标志位立即数只能作为源操作数两个操作数不能同时用工作寄存器注意各操作数寻址方式3.151单片机指令系统单片机课件第3章第19页电子系

李静算术运算类指令算术运算指令共有24条算术运算必须经过ACC算术运算指令将影响标志位算术运算包含加ADD、带进位加ADDC带借位减SUBB增量INC、减量DEC乘MUL、除DIV十进制调整DAA3.151单片机指令系统单片机课件第3章第20页电子系

李静算术运算类指令——加减指令3.151单片机指令系统单片机课件第3章第21页电子系

李静算术运算类指令——其它算术运算指令16位存放器加一指令INCDPTR十进制调整指令DAA乘法指令MULAB(A)X(B)=BACY=0若乘积>0FFH则

OV=1除法指令DIVAB(A)/(B)=A……BCY=0若(B)=0则

OV=13.151单片机指令系统单片机课件第3章第22页电子系

李静逻辑运算类指令逻辑运算类指令有24条单操作数指令累加器操作指令 CLRCPL移位指令 RLRLCRRRRC双操作数指令逻辑与ANL逻辑或 ORL逻辑异或XRL3.151单片机指令系统单片机课件第3章第23页电子系

李静逻辑运算类指令——累加器操作指令累加器清零CLRA只影响P标志累加器求反CPLA不影响标志3.151单片机指令系统单片机课件第3章第24页电子系

李静逻辑运算类指令——移位指令移位指令必须经累加器A全部移位都是循环移位,分左移、右移可带进位移或不带进位移RLARLCARRARRCA除带进位移位外,不影响标志3.151单片机指令系统单片机课件第3章第25页电子系

李静逻辑运算类指令——与/或/异或指令ANL/ORL/XRL源操作数目标操作数ARn@Ridirect#dataAX****direct*XXX*逻辑与运算惯用于将一些位屏蔽(即清零)。方法:将要屏蔽位同“0”相与,要保留不变位同“1”相与。例:设(A)=63H,执行指令:ANLA,#0FCH逻辑或运算惯用于将一些位置位。方法:将要置位位同“1”相或,要保留不变位同“0”相或。例:设(A)=63H,执行指令:ORLA,#80H逻辑异或运算惯用于将一些位取反。方法:将要取反位同“1”相异或,要保留不变位同“0”相异或。例:试编程,试内部RAM30H单元中低2位置1,高2位清0,其余4位取反ANL 30H,#3FHORL 30H,#03HXRL 30H,#3CH3.151单片机指令系统单片机课件第3章第26页电子系

李静逻辑运算类指令逻辑运算类指令执行时普通不影响PSW仅当目标操作数为A时对P有影响带进位移位指令影响CY3.151单片机指令系统单片机课件第3章第27页电子系

李静控制转移类指令控制转移类指令有22条,分为:无条件转移指令AJMPLJMPSJMPJMP条件转移指令 JZ/JNZJC/JNCJB/JNBJBC比较转移指令 CJNE循环转移指令 DJNZ调用返回指令 ACALL/LCALLRETRETI空操作指令 NOP3.151单片机指令系统单片机课件第3章第28页电子系

李静控制转移类指令——无条件转移指令短(绝对)转移指令AJMPaddr11PC高5位与指令中给出11位地址相加,可在当前PC2K范围内转移长转移指令LJMPaddr16转移范围为整个64K存放空间相对转移指令SJMPrel转移范围为-128~+127散转指令JMP@A+DPTR3.151单片机指令系统单片机课件第3章第29页电子系

李静控制转移类指令——散转指令累加器A中内容与DPTR内容相加形成转移地址A=?AJMPf0AJMPf1AJMPf2AJMPf3AJMPf4A=0A=2A=4A=6A=8……MOVA,#dataRLAMOVDPTR,#TABLEJMP@A+DPTR…...TABLEAJMPf0AJMPf1AJMPf2AJMPf3AJMPf43.151单片机指令系统单片机课件第3章第30页电子系

李静控制转移类指令——条件转移指令条件转移指令有7条,都是相对转移指令JZrel累加器为“0”转移,PC←(PC)+2+relJNZrel累加器非“0”转移,PC←(PC)+2+relJCrel有进位转移,PC←(PC)+2+relJNCrel无进位转移,PC←(PC)+2+relJBbit,relbit=“1”转移,PC←(PC)+3+relJNBbit,relbit=“0”转移,PC←(PC)+3+relJBCbit,relbit=“1”转移且转移后将bit清零,PC←(PC)+2+rel3.151单片机指令系统单片机课件第3章第31页电子系

李静控制转移类指令——比较转移指令CJNE操作数1,操作数2,操作数3

A,direct,relA,#data,relRn,#data,rel@Ri,#data,rel操作数1与操作数2比较,不等于零转移操作数1<操作数2则CY=“1”3.151单片机指令系统单片机课件第3章第32页电子系

李静控制转移类指令——循环转移指令循环转移指令是相对转移循环计数器减一,不等于“0”转移循环计数器可用工作存放器DJNZRn,rel直接地址DJNZdirect,rel3.151单片机指令系统单片机课件第3章第33页电子系

李静控制转移类指令——调用返回指令调用指令短调用(2K范围内)ACALLaddr11长调用(64K范围内)LCALLaddr16返回指令子程序返回RET中止返回RETI空操作

NOP3.151单片机指令系统单片机课件第3章第34页电子系

李静位操作类类指令8051中含有一个一位布尔处理器布尔处理器以CY为位累加器布尔处理器能够进行逻辑与、逻辑或运算置位、清零、求反位处理单元有:20H--2FH单元SFR中地址能被8整除单元3.151单片机指令系统单片机课件第3章第35页电子系

李静位操作类类指令——位处理单元20H21H22H2DH2EH2FH000102030405060708090A0B0C0D0E0F7F7E7D7C7B7A79783.151单片机指令系统单片机课件第3章第36页电子系

李静位操作类类指令——位地址表示形式位地址只有直接寻址方式直接地址0D5H单元地址.位序号0D0H.5单元名称.位序号PSW.5位存放器名称F03.151单片机指令系统单片机课件第3章第37页电子系

李静位操作类类指令——位传送指令位传送指令:MOVC,bitMOVbit,C位传送指令特点必须经过CY位地址只有直接寻址方式不影响其它标志3.151单片机指令系统单片机课件第3章第38页电子系

李静位操作类类指令——位变量修改指令清“0”CLRCCLRbit置“1”SETBCSETBbit求反CPLCCPLbit3.151单片机指令系统单片机课件第3章第39页电子系

李静位操作类类指令——位变量逻辑操作指令指定位变量与位累加器CY进行逻辑操作,结果在CY中逻辑与ANLC,bitANLC,/bit逻辑或ORLC,bitORLC,/bit3.151单片机指令系统单片机课件第3章第40页电子系

李静注意区分位操作指令与字节操作指令ANLC,20HANLA,20HCLRACLRP1.3SETBRS03.151单片机指令系统单片机课件第3章第41页3.151单片机指令系统电子系

李静伪指令——定位伪指令格式:

ORGnn为十进制或十六进制数作用:定位后面指令地址注意:ORG定义地址次序不能颠倒ORG定义地址不能被占用伪指令不产生目标码指令单片机课件第3章第42页3.151单片机指令系统电子系

李静伪指令——定义字节伪指令格式: DBX1,X2,…XnXi可认为8位数据、ASCII码、表达式作用:在程序存放器中存入常数或表格单片机课件第3章第43页3.151单片机指令系统电子系

李静伪指令——定义字伪指令格式: DWY1,Y2,…YnYi可认为16位数据或表达式作用:在程序存放器中存入常数或表格Yi低8位在高地址字节高8位在低地址字节单片机课件第3章第44页3.151单片机指令系统电子系

李静伪指令——定义存放空间伪指令格式:

DS表示式作用:在编译时,编译器从指令地址开始保留DS之后表示式值所要求存放单元,以备后用。例:

ORG 1000H DS 07H DB 20H,20 DW 12H汇编后,存放器怎样存放数据?单片机课件第3章第45页3.151单片机指令系统电子系

李静伪指令——指令当前地址格式符号:$例:

JNB P1.0,$单片机课件第3章第46页3.151单片机指令系统电子系

李静伪指令——定义常量格式:

字符串1EQU字符串2例:

OUT1EQUP1 MOV OUT1,A单片机课件第3章第47页3.151单片机指令系统电子系

李静伪指令——数据地址赋值伪指令格式:

字符名称DATA数据或表示式例:

ORG 8000H INDEXJ DATA 8096H LJMP INDEXJ单片机课件第3章第48页3.151单片机指令系统电子系

李静伪指令——定义位符号伪指令格式:

字符名称BIT位地址例:

P11 BIT P1.1单片机课件第3章第49页3.151单片机指令系统电子系

李静伪指令——汇编结束指令格式:

END作用:结束汇编注意:后续指令不参加汇编单片机课件第3章第50页3.2汇编语言程序结构电子系

李静汇编语言程序设计基本方法分析问题,明确任务建立数学模型,确定算法绘制程序流程图编写源程序汇编、调试汇编语言程序设计普通流程当接到程序设计任务后,首先对任务进行详尽分析,搞清楚已知数据和想要得到结果,程序应该完成何种功效。

依据实际问题要求和指令系统特点,确定处理问题详细步骤。依据任务要求,对不一样计算方法进行比较,选择最适宜算法。将处理问题详细步骤用一个约定几何图形、指向线和必要文字说明描述出来图形。经过上述各步骤后,处理问题思绪已经非常清楚,所以接下来就能够按流程图次序对每一个功效框选取适当指令编写出汇编语言程序。在应用程序设计中,几乎没有一个程序只经过一次编写就完全成功,所以必须经过上机调试。单片机课件第3章第51页不论程序结构是简单还是复杂,普通都可分为4种基本形式:次序结构、分支结构、循环结构和子程序调用结构。3.2汇编语言程序结构电子系

李静次序程序设计分支程序设计循环程序设计子程序设计次序程序又称简单程序,是指一个次序执行程序。在这种程序中,没有分支、循环或子程序。分支程序就是条件分支程序,即依据不一样条件,执行不一样程序段。在编写分支程序时,关键是怎样判断分支条件。循环程序普通由以下组成:初始化部分;处理部分;修改部分;控制部分;结束部分。在MCS-51指令系统中,提供了两条调用子程序指令ACALL、LCALL以及一条返回主程序指令RET单片机课件第3章第52页例:将30H单元中存放一个两位BCD,拆开并存入31H和32H单元,高字节存入32H单元。05H32H06H31H56H30H3.2汇编语言程序结构电子系

李静示例拆字程序32H31H56H30H56H05H06H分别屏蔽高4位与低4位,再将高4位交换开始将30H单元内容送A将A中高、低4位交换将A中内容存入32H单元屏蔽30H单元内容高4位屏蔽A中内容低4位将30H单元内容存入31H单元结束MOVA,30HANLA,#0F0HSWAPAMOV32H,AMOV31H,30HANL31H,#0FHSJMP$分析问题确定算法画流程图编写程序汇编调试单片机课件第3章第53页3.2汇编语言程序结构电子系

李静例:设2个16位二进制数存于以30H为首址连续单元中,求二者和,并将和存于以40H为首址区域。(低字节在前)分析问题确定算法画流程图编写程序汇编调试(30H)+(32H)送40H单元;(31H)+(33H)+Cy送41H单元;Cy+0送42H单元开始(30H)+(32H)送40H单元(31H)+(33H)+(CY)送41H单元Cy+0送42H单元结束MOVA,30HADDA,32HMOV40H,AMOVA,31HADDCA,33HMOV41H,AMOVA,#00HADDCA,#0MOV42H,ASJMP$示例求和程序单片机课件第3章第54页例:两个无符号数分别存于ONE和TWO单元,试比较它们大小,将较大者存人MAX单元。若两数相等则任存入一个即可。电子系

李静分析问题确定算法画流程图编写程序汇编调试开始将ONE单元内容送A结束A≥TWO将TWO单元内容送MAX单元YN将ONE单元内容送MAX单元MOV A,ONECJNE A,TWO,NEXT1NEXT1:JCNEXT2MOVMAX,ONE

SJMP$NEXT2:MOVMAX,TWO SJMP$示例比较大小3.2汇编语言程序结构单片机课件第3章第55页电子系

李静多分支程序设计利用JMP@A+DPTR转移指令实现多分支程序MCS-51指令系统中有一条JMP@A+DPTR转移指令,利用它能够方便地编制多分支(也称散转)程序。下面介绍两种方法。(1)用转移指令表实现散转在有些程序中,需要依据某一单元值0,1,…,n,对应地转向处理程序0,处理程序1,…,处理程序n。这时能够用转移指令AJMP或LJMP组成一个转移表。(2)用转移地址表实现散转

例题当转移范围比较大时,可使用转移地址表方法。即每个处理程序入口地址直接置于地址表内,用查表指令找到对应转向地址,把它装入DPTR中。将累加器清零后,用指令JMP@A+DPTR直接转向各个处理程序入口。3.2汇编语言程序结构单片机课件第3章第56页电子系

李静循环程序设计图3.1循环程序结构示意图3.2汇编语言程序结构单片机课件第3章第57页3.2汇编语言程序结构电子系

李静例:使00H---7FH单元清0。开始给R0赋128、A清0A送@R0R0减1结束R0=00H?YN用MOV@R0,A做循环主体,修改R0值,能够将0送入00H—7FH单元中。MOVR0,#127CLRAUP:MOV@R0,ADECR0CJNER0,#00H,UPSJMP$分析问题确定算法画流程图编写程序汇编调试思索:以下程序能使00H—7FH单元清0吗?为何?MOVR0,#0MOVR7,#128CLRAUP:MOV@R0,AINCR0DJNZR7,UPSJMP$示例清零程序单片机课件第3章第58页3.2汇编语言程序结构电子系

李静分析问题确定算法画流程图编写程序汇编调试例:内存中以STRING开始区域有若干个字符和数字,普通称为一个字符串,最末一个字符为"$",试统计这些字符数字数目,结果存人NUM单元CLR AMOVR0,#STRINGLOOP:CJNE@R0,#24H,NEXTSJMPCOMPNEXT:INC A INCR0SJMPLOOPCOMP:INC AMOVNUM,ASJMP$开始给R0赋STRING、A清0A加1,并送NUM单元A加1R0加1结束@R0=24H?YN示例字符串长度单片机课件第3章第59页3.2汇编语言程序结构电子系

李静示例求最大值分析问题确定算法画流程图编写程序汇编调试例:从BLOCK单元开始有一个无符号数数据块,其长度存于LEN单元,试求出数据块中最大数,并存入MAX单元。开始将LEN单元内容赋给R2,A清0,给R1赋BLOCKA与内RAM内容相减结束CY=0?YNR2减1;R1加1恢复AR2=0?A送MAX单元NY@R1送ACLRAMOVR2,LENMOVR1,#BLOCKLOOP:CLR C SUBBA,@R1 JNC NEXT MOVA,@R1SJMPNEXT1NEXT:ADD A,@R1NEXT1:INC R1DJNZR2,LOOPMOVMAX,ASJMP$思索:假如用CJNE指令实现比较,则怎样修改程序?思索:假如用CJNE指令实现比较,则怎样修改程序?

MOVR2,LENMOVR1,#BLOC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论