版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章 MCS-51单片机指令系统第三章 MCS-51单片机指令系统第一节 MCS-51单片机指令系统概述教学目的: 1、熟练掌握各种寻址方式。 2、了解指令格式。 3、熟悉单片机执行指令的过程。重点、难点: 1、寻址方式。 2、执行过程。复习旧课: 1、片内ROM。 2、片内RAM。 3、工作方式。引入新课:1、一台计算机所能执行的指令集合就是它的指令系统。对于 单片机用户必须直接使用指令编写程序,因此了解操作系 统十分重要。2、机器语言与汇编语言。 机器语言指令的二进制编码表示。 汇编语言指令的符号表示。 *机器语言:程序长、不易书写、难于阅读和调试、容易错且出错产易查找。 计算机只能识别
2、二进制数,因此用二进制编码的机器语言能直接执行。 *由以上缺点可知,使用符号指令是必要的,指令的符号助记符。 以助记符表示的指令汇编语言。 *以英文名、缩写形式作为助记符。3、操作系统由计算机生产厂商定义的,实际上,它就成了用 户必须遵循的标准。 *无通用性、无法直接移植。 *MCS-51单片机指令系统共有指令111条,分五大类: 1、数据传送。 2、算术运算。 3、逻辑运算及移位指令。 4、控制转移指令。 5、位操作指令。讲授新课: 一、指令格式:1、定义: 指令的表示方法称为指令格式,内容包括指令的长 度和指令的内部信息安排。2、组成:操作码操作数; 操作码规定指令进行何种操作; 操作数指
3、令操作的对象(具体数据或取得数据的 地址或符号。3、语句格式: 标号: 操作码 操作数1,操作数2 ,操作数3;注释其中,方括号内为可选项。各部分之间必须用界定符隔开,即标号要以冒号“:”结尾,操作码和操作数之间要有一个或多个空格,操作数和操作数之间用“,”分隔。注释开始之前要加“;”。 1、标号: 语句地址的标志符号,有了标号,程序中的其 它语句才能访问该语句,有关规定如下: 、由18个ASCII字符组成,但头一个字符必须 是字母,其余字符可以是字母,数字或其它特定字 符。 、不能使用本汇编语言已经定义了的符号作为标 号,如指令助记符,伪指令助记符以及寄存器的符 号名称。 、标号必须跟以冒号
4、。 、同一标号在一个程序中只能定义一次,不能重 复定义。 、一条语句可以有标号,也可无标号,取决于其 它语句是否需要访问这条语句。 举例: 错误 正确3BT:(以数字开头) LOOP1:BEGIN(无冒号)STNB:TA+5G:(“+”)T1349:ADD:(指令助记符)Q: 2、操作码: 规定语句执行的操作,不能空缺。 操作码指出了指令操作的性质,在汇编语言指令中用能够表示指令功能的英文缩写表示。例如,MOV_move的缩写,表示传送RL_rotate left的缩写,表示左循环ANL_and logic的缩写,表示与逻辑运算 3、操作数: 给指令操作提供数据或地址,可能空白,一项、两项、三
5、项、各操作数之间以逗号分隔。 4、注释: 不属于语句的功能部分,它只是对语句的解释说明,可使程序文件编制更加清楚,帮助程序人员阅读,以利于软件保护。 5、分界符: 在上述各部分之间、把它们分隔开以使区分:,;4、指令格式: 由于字长短,指令不定长,有一字节、二字节、三字 节不同长度指令。 1、一字节指令: 只有一个字节,操作码和操作数在同一字节中 *有些是因为指令功能明确,无需具体指定操作数。 INC DPTR、 10100011 *操作数在通用寄存器,可把寄存器编码与指令操作 码“挤”在一个字节中。 例如:MOV A, Rn 1110 1rrr 2、二字节指令: 第一字节操作码。 第二字节操
6、作数。 3、三字节指令:操作码操作码操作数操作码第一操作数第二操作数 操作码2个操作数。 二、寻址方式:(7种) “址”-操作数所在的单元地址 “寻址”-如何确定操作数单元地址。 寻址方式越多-寻址能力越强-指令系统越复杂 MCS-51 有七种寻址方式。1、立即寻址方式在立即寻址中,由指令直接给出参与实际操作的数据(即立即数)。用“#”开头表示立即数。2、寄存器寻址方式*操作数在寄存器中,指定了寄存器就能得到操作数。 MOV A,R0;A-(R0)*范围:32个通用寄存器 部分SFR,A,AB,DPTR 3、直接寻址方式*操作数直接以单元地址的形式给出. MOV A,3AH;*只限于内部RAM
7、*范围:低128单元 SFR4、寄存器间接寻址方式寄存器间接寻址时,指令操作数中指定的寄存器内容为操作数的地址,将该地址所对应的存储单元内容作为操作数。能够用于寄存器间接寻址的寄存器包括数据指针DPTR、堆栈指针SP、R0和R1。5、变址寻址方式变址寻址方式使用程序计数器PC或数据指针DPTR作为基址寄存器,累加器A为变址寄存器,将基址寄存器的内容与变址寄存器的内容之和作为操作数地址。操作数的有效地址可表示为:操作数有效地址=PC或DPTR的内容+A的内容变址寻址只能对程序存储器中的数据作寻址操作,通常用于查表操作中,使用指令符MOVC。6、相对寻址方式相对寻址以当前程序计数器PC的值(源地址
8、)为基址,与指令给出的偏移量rel(相对地址的机器码)相加形成下一条要执行指令的有效地址(又称为目的地址D)。相对寻址是用于寻找指令地址的寻址方式,仅用于相对转移指令中,指令中的偏移量为用补码表示的8位有符号数,取值为:-128+127,所以程序的转移范围为相对于PC当前值的-128+127个字节单元之间,在源程序中,相对地址一般用标号表示。7、位寻址方式位寻址是指对内部RAM中的位寻址区(20H2FH)和某些具有位寻址功能的特殊功能寄存器SFR进行位操作时的寻址方式。位操作指令可对位寻址区内的每个位进行逻辑运算、状态控制等操作。三、小结寻址方式寻址空间示例立即寻址程序存储器MOV A,#20
9、H直接寻址片内RAM,SFRMOV A,20H寄存器寻址工作寄存器R0R7,A,B,C,DPTRMOV A,R0寄存器间接寻址片内RAM低128个字节,片外RAMMOV A,ROMOV A,DPTR变址寻址程序存储器,数据存储器MOVC A,A+PC相对寻址程序存储器JNZ 30H位寻址片内RAM20H2FH,部分SFR的位地址区SETB 3AH第二节 MCS51单片机指令分类介绍教学目的: 1、熟练掌握各类指令。 2、指令存储格式。 3、熟悉指令的代码及执行时间。重点、难点:1、存储格式。2、助记符的记忆 3、代码及执行时间复习旧课: 1、语句格式。 2、寻址方式。讲授新课:3.2.1指令格
10、式中符号意义说明MCS-51的指令系统按功能可分为五类,有数据传送类28条,算术运算类24条,逻辑操作类25条,控制转移类17条,布尔位操作类17条。在具体描述这些指令时通常使用下面的符号,它们的意义如下:1#data表示八位立即数,#data16表示是十六位立即数。“#”表示后面的data是立即数。2direct表示片内RAM和特殊功能寄存器的8位直接地址。其中特殊功能寄存器还可直接使用名称符号来代替直接地址。3Rn(n=07)表示当前选中的工作寄存器组R0R7。选中工作寄存器组的地址由PSW中的RS1和RS0确定,分别为组0:00H07H,组1:08H0FH,组2:10H17H,组3:18
11、H1FH。4Ri(i=0,1)表示对寄存器R0或R1间接寻址。其中为寄存器间接寻址符。5DPTR表示以数据指针DPTR的内容为地址,对片外RAM进行间接寻址。其中的意义同上。6addr11表示11位目的地址。用于AJMP和ACALL指令中,使转向的目的地址与下一条指令首字节位于同一个2K字节的程序存储器地址空间。7addr16表示16位目的地址。用于LJMP和LCALL指令中,可使转向的目的地址为64K程序存储器地址空间的任意单元。8/bit表示对bit位先取反再参与运算,但不影响该位的原值。其中“/”表示取反,bit表示位地址。9rel表示补码形式的8位偏移量。用于相对转移指令中,地址偏移量
12、的范围为-128+127之间。在编写源程序时rel通常由标号代替,其具体值由汇编程序自动计算确定。10()间接寻址时表示间接寄存器指出的地址单元的内容;直接寻址时表示直接地址中的内容。如(30H)表示直接地址30H存储单元的内容。11rrr表示在指令编码中rrr三位的值由当前工作寄存器Rn确定。R0R7对应的三位rrr值分别为000111。如当前工作寄存器为R0则指令编码中rrr的值应为000。3.2.2数据传送类指令组 数据传送类指令是MCS-51指令系统中最基本、也是包含指令最多的一类指令。用于实现寄存器、存储器之间的数据传送,即把“源操作数”中的数据传送到目的操作数,而源操作数不变,目的
13、操作数被传送后的源操作数所代替。该类指令中的源操作数可以是立即数、累加器A、工作寄存器Rn或片内RAM单元,目的操作数可以是累加器A、工作寄存器Rn或片内RAM存储单元,但要注意立即数不能作为目的操作数。一、片内RAM数据传送1、立即数传送MOV A,#dataMOV direct, #dataMOV Rn, #dataMOV Ri, #dataMOV DPTR, #data16 1001 0000B高八位低八位例如:MOV DPTR,#403AH90H40H3AH2、片内RAM之间数据传送指令MOV direct2,direct1MOV direct, RnMOV Rn, directMOV
14、 direct, RiMOV Ri, direct寻址方式3、累加器A数据传送指令MOV A, RnMOV Rn, AMOV A, directMOV direct, AMOV A, RiMOV Ri, A二、片外RAM数据传送指令组1、用DPTR间接寻址MOVX A,DPTRMOVX DPTR,A2、用Ri间接寻址MOVX A, RiMOVX Ri,A 说明:三、程序存储器数据传送指令组MOVC A,A+DPTRMOVC A,A+PC 64KB 后一指令, A为无符号数(0255),只能是当前指令下256个单元之内 举例:查ASCII码四、数据交换指令组1、整字节交换指令组XCH A, Rn
15、XCH A, RiXCH A,direct2、半字节交换指令(低4位)XCHD A, Ri3、累加器高低半字节交换SWAP A五、堆栈操作指令1、PUSH direct2、POP direct说明对前述指令的几点说明:1)访问片外数据存储器不能使用直接寻址。例如下列为非法指令:MOVX A,1000H 2)一条指令中不能同时出现两个工作寄存器。例如下列为非法指令:MOV R2,R3MOV R2,R03)间接寻址寄存器只能使用工作寄存器R0和R1。例下列为非法指令:MOV A,R24)SFR区只能直接寻址,不能使用寄存器间接寻址。下列为非法指令:MOV R0,#80HMOV A,R05)注意只有
16、指令表中的指令才有对应的指令代码,计算机才能执行。用户不能随意创造发明指令。3.2.3算术运算类指令组MCS-51的算术运算指令共有24条,主要完成片内 RAM 和累加器 A 中数据的加减乘除运算。包括对8位无符号二进制数的加、减、乘、除运算;增1、减1运算;对压缩BCD码的加减运算及对带符号二进制数进行补码运算。与数据传送指令不同,多数算术运算指令会影响程序状态字PSW的CY、AC、OV和奇偶标志位P。加1和减1指令不影响这些标志,除非操作数为A时,加1和减1指令才影响标志位P,乘法和除法指令影响标志位OV和P。一、加法指令(1)不带进位加法指令 指令功能:将累加器A中的值与源操作数指定的值
17、相加,运算结果存放到累加器A中。ADD A,#DATA ;AA+dataADD A,direct ;AA+(direct)ADD A,Rn ;AA+RnADD A,Ri ;AA+(Ri)例如,设A=AEH,R1=20H,(20H)=75H,PSW=0,执行指令ADD A,R1的操作如下:1010 1110 + 0111 0101 10010 0011执行结果:A=23H,CY=1,OV=1,AC=1,P=1 (2)带进位位加法指令 ADDC A,Rn ;AA+data+CYADDC A,direct ;AA+(direct)+CYADDC A,Ri ;AA+Rn+CYADDC A,#data
18、; AA+(Ri)+CY带进位加法指令通常用于多字节加法运算中. 由于MCS-51单片机是一种8位机,所以只能做8位的数学运算,为扩大数的运算范围,实际应用时通常将多个字节组合运算。例如两字节数据相加时先算低字节,再算高字节,低字节采用不带进位位的加法指令,高字节采用带进位位的加法指令。二、减法指令指令功能:从累加器A中减去源操作数指定的值及借位位CY的值,差值存放到累加器A中。SUBB A,Rn ;AA-data-CYSUBB A,direct ;AA-(direct)-CYSUBB A,Ri ;AA-Rn-CYSUBB A,#data ;AA-(Ri)-CY说明:系统没有提供不带借位的减法
19、指令,如果需要做不带借位位的减法,只要先用CLR C指令将CY清零即可。例如,设A=85H,R2=55H,CY=1,指令SUBB A,R2的执行情况如下:1000 0101 累加器A-0101 0101 R2- 1 CY0010 1111运算结果:A=2FH,CY=0,OV=0,AC=1,P=1。三、乘法指令MUL AB ;ABBA指令功能:将累加器A和寄存器B中的两个8位无符号数相乘,所得16位乘积的高字节放在B寄存器中,低字节存放在A中。当积高字节B0即乘积大于255(FFH)时,溢出标志位OV置1,当积高字节B=0时,OV为0。进位标志位CY总是为0,AC标志位保持不变。例如,设A=40
20、H,B=62H,执行指令MUL AB运算结果:B=18H,A=80H,乘积为1880H。CY=0,OV=1,P=1。四、除法指令DIV AB ;AAB的商,BAB的余数指令的功能:将A中的8位无符号数除以B中的8位无符号数(A/B),所得的商存放在A中,余数存放在B中。标志位CY和OV都为0,但如果在做除法前B中的值是00H,即除数为0,那么0V=1。例如,设=F2H,B=10H,执行指令DIV AB运算结果:商A=0FH,余数B=02H,CY=0,OV=0,P=0。五、加1指令 指令功能:将操作数指定单元的内容加1。INC A ;A(A)+1INC Rn ;Rn(Rn)+1INC direc
21、t ;direct(direct)+1INC Ri ;Ri(Ri)+1INC DPTR ;DPTR (DPTR)+1此组指令除INC A影响奇偶标志位外,其余指令不对PSW产生影响。若执行指令前操作数指定的单元内容为FFH,则加1后为00H。从运算结果可以看出INC A和ADD A,#1相同,但INC A是单字节,单周期指令,而且INC A除了影响奇偶标志位外,不会影响其它的PSW标志位;而ADD A,#1则是双字节,双周期指令,影响PSW标志位CY、OV、AC和P。所以从标志位状态和指令长度来看,这两条指令是不同的。六、减1指令 指令功能:将操作数指定单元的内容减1。DEC A ;A(A)-
22、1DEC Rn ;Rn(Rn)-1DEC direct ;direct(direct)-1DEC Ri ;Ri(Ri)-1此组指令除DEC A影响奇偶标志位外,其余指令不对PSW产生影响。若执行指令前操作数指定的单元内容为00H,则减1后为FFH。七、BCD码调整指令DA A ;十进制修正指令指令功能:对BCD码进行加法运算后,根据PSW标志位CY、AC的状态及A中的结果对累加器A的内容进行修正,使其转换成压缩的BCD码形式。该指令不能单独使用,只能在ADD和ADDC指令之后使用。例如,设A=29BCD,data=68BCD,执行指令ADD A,#dataDA A执行第一条指令,运算过程如下:
23、执行结果为:标志位AC=1,A=91,而正确结果为97,所以结果错误。执行第二条指令,运算过程如下:1001 0001 + 0000 0110 (符合修正规则,+6修正) 1001 0111执行结果为:A=97,可见调整后的结果才是正确的。3.2.4逻辑操作类指令组准备知识:(逻辑运算)与、或、非、异或或运算:10=1 01=1 00=0 11=1 与运算:10=0 01=0 00=0 11=1 异或: 0V0=0 0V1=1 1V0=1 1V1=0 1、逻辑与运算指令组: ANL A,Rn;A(A)(Rn) ANL A,direct ANL A,Ri ANL A,#data ANL dire
24、ct,A;direct(direct)(A) ANL direct,#data 例:对片内RAM、20H、21H单元内容进行与运算: 错误:ANL 20H、21H 正确:MOV A,20H ANL A,21H 或者:MOV A,20H ANL 21H,A2、逻辑或运算指令组: ORL A,Rn ORL A,direct ORL A,Ri ORL A,#data ORL direct,A ORL direct,#data *应用: 数据处理中,只改变字节数据中的某几位,而其余 位不变时,必须通过逻辑运算完成。(屏蔽) 例:将A的低四位传送到P1口的低四位,且P1口高4位不变。 MOV R0,A
25、ANL A,#0FH ;屏蔽A高4位 ANL P1,#0F0H;屏蔽P1口低4位 ORL P1,A; MOV A,R0 SJMP 3、逻辑或运算指令组: XRL A,Rn XRL A,direct XRL A,Ri XRL A,#data XRL direct,A XRL direct,#data 4、累加器清0、取反指令。 清0:CLR A;A00H 取反:CLR A;A(A) 例:求补码的应用(负值时)原数放在R0; MOV A,R0 CRL A, INC A MOV R0,A;尚不完善5、移位指令:D7 D0D7 D0D7 D0CYD7 D0CY 1)、循环左移:RL A 2)、循环右移
26、:RR A 3)、带进位循环左移:RLC A 4)、带进位循环右移:RRC A3.2.5控制转移类指令组一般地情况下,程序是顺序执行的,每取出一条指令,PC(PC)1。但在实际使用中总有许多分支,以出现不同的情况。 分支,就是人为地改变PC的内容,使程序转移到指定的入口地址执行。-循环、子程序,中断服务程序。一、无条件转移指令。 无论什么情况,只要碰到此类指令都要转移到指定的地址去执行。 1、长转移指令。 (1)、格式: LJMP addr16 (2)、存放格式:操作码地址高8位地址低8位 (3)、功能: 把16位地址(addr16)送PC,从而实现程序转移,范围64KB。 2、短转移指令:
27、(1)、格式SJMP rel (2)、存放格式:操作码转移量 (3)、功能: 用相对寻址方式,使程序转移。 PC(PC)+2+rel Rel:8位二进制补码、范围(80H7FH)。 3、绝对转移指令。 (1)、格式:AJMP、addr11A10A9A8 0001 A7A0 (2)、存放格式: (3)、功能: 构造程序转移目的地址、以addr11代替PC中低11位地址内容。 4、变址寻址转移指令。 (1)、格式:JMPADPTR;PC(A)(DPTR) (2)、目的地址:(A)(DPTR);PC(A)(DPTR) 若DPTR不变,改变A的内容,就可实现多分支转 移。二、条件转移指令组。 条件转移
28、指程序转移是有条件的,条件满足则转移, 否则顺序执行。 1、累加器判断需转移指令: JZ rel;若(A)0,则PC(PC)2rel 若(A)0,则PC(PC)2 JNZ rel; 2、数值比较转移指令: CJNE A,#data,rel CJNE A,direct,rel CJNE Rn,data,rel CHNE Ri,#data,rel 功能说明: (1)、左操作数右操作数,不转移,CY0 (2)、左操作数右操作数,转移,CY0 (3)、左操作数右操作数,转移,CY1 3、CY状态转移指令: JC rel;(CY)1,转移 JNC rel;(CY)0,转移 4、位状态转移指令: JB bit,rel JNB bit,rel JBC bit,rel;位状态为1转移,且使位清0。 例P54温度控制系统。 5、减1条件转移指令: DJNZ Rn,rel 功能:Rn(Rn)1;若(Rn)0,转移; 若(Rn)0,顺序; DJNZ direct,rel;功能同上。 举例:成批数据传送。三、程序调用及返回指令。1、图解:子程序SUBRET主程序LCALL SUBLCALL SUB *调用和返回指令; 具有自动保护断点地址及恢复; 断点
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电商行业市场前景及投资研究报告:618大促好内容创作三感六度方法论+实战案例
- 合规转利润:降本增效全指南(2026)《GBT 39167-2020电阻点焊及凸焊接头的拉伸剪切试验方法》
- 合规转利润:降本增效全指南(2026)《GBT 39102-2020定制消费品设计与生产质量控制指南》
- 合规转利润:降本增效全指南(2026)《GBT 39055-2020机械式停车设备制造安装监理技术要求》
- 河北省唐山市玉田县多校2026-2027学年高三上学期开学物理试题(含答案)
- 单片机技术应用与实践(第二版) 课件 孙大许 工作模块1-6 单片机工作环境搭建 -按键控制
- 下肢骨折手术护理查房
- 心理健康教育班会课件
- 2025年医学分析-基孔肯雅热关节痛的特点是什么
- 2026年西北大学学位英语考试真题与答案
- 尼得科电机(大连)扩建项目环境影响评价报告表
- 小学语文口语训练案例分析范文
- 感恩教师节主题班会
- 龋病的健康宣教
- 中国骨关节炎诊疗指南2024版下载
- 被执行人财产申报表(官方标准完整版)
- 人教版二年级全册《体育与健康》全套课件
- (2026秋新版)苏教版五年级数学上册全册教案
- GJB3243A-2021电子元器件表面安装要求
- 第一单元第一课我们走在大路上(课件)-初中美术湘美版七年级上册
- 深圳民润农产品配送连锁商业有限公司-收银员、收银主管手册
评论
0/150
提交评论