第2章MCS51指令系统课件.ppt

上传人(卖家):晟晟文业 文档编号:4073824 上传时间:2022-11-08 格式:PPT 页数:59 大小:216KB
下载 相关 举报
第2章MCS51指令系统课件.ppt_第1页
第1页 / 共59页
第2章MCS51指令系统课件.ppt_第2页
第2页 / 共59页
第2章MCS51指令系统课件.ppt_第3页
第3页 / 共59页
第2章MCS51指令系统课件.ppt_第4页
第4页 / 共59页
第2章MCS51指令系统课件.ppt_第5页
第5页 / 共59页
点击查看更多>>
资源描述

1、 第二章第二章 MCS-51MCS-51指令系统指令系统.2.1 MCS-512.1 MCS-51汇编语言指令的格式汇编语言指令的格式 汇编指令格式汇编指令格式 标号:操作码标号:操作码 目的操作数,源操作数目的操作数,源操作数 ;注释;注释标号标号该指令的符号地址,表明指令所在位置,小该指令的符号地址,表明指令所在位置,小于于8个字符,可选。个字符,可选。操作码操作码命令命令CPU进行操作的助记符。进行操作的助记符。操作数操作数操作码的作用对象,一般有目的操作数和操作码的作用对象,一般有目的操作数和源操作数,也有的指令只有单操作数或没有操作源操作数,也有的指令只有单操作数或没有操作数。数。注

2、释注释对该指令功能的解释。用对该指令功能的解释。用“;”与前面的指与前面的指令分开。令分开。.MCS-51MCS-51汇编语言指令的格式汇编语言指令的格式指令的分类:指令的分类:按指令代码长度分:单字节、双字节、三字节。按指令代码长度分:单字节、双字节、三字节。按功能分类:按功能分类:数据传送类数据传送类(28条)条)算术运算类算术运算类(24条)条)逻辑运算和移位类逻辑运算和移位类(25条)条)控制转移类控制转移类(17条)条)1.位操作类位操作类(17条)。条)。.指令寻址方式指令寻址方式 寻找操作数地址的方法称为寻址方式寻找操作数地址的方法称为寻址方式。MCS-51指令系统的寻址方式有下

3、列几种:指令系统的寻址方式有下列几种:立即寻址立即寻址 直接寻址直接寻址 寄存器寻址寄存器寻址 寄存器间接寻址寄存器间接寻址 基寄存器加变址寄存器间接寻址基寄存器加变址寄存器间接寻址 相对寻址相对寻址 位寻址位寻址.立即寻址方式立即寻址方式 指令的源操作数是个数值指令的源操作数是个数值 例:例:MOV A,#0FBH;(A)立即数立即数 0FBH ADD A,#09H;(A)(A)+立即数立即数 09H 注意:符号注意:符号“#”表明其后跟的是立即数表明其后跟的是立即数,立即数立即数就是数字量本身就是数字量本身 74H FBH 程序存储器 指令中的操作数 累加器 A FBH 按照指令的要求将数

4、据送给累加器 A.直接寻址方式直接寻址方式 指令中的操作数是以其所在单元地址的形式给出指令中的操作数是以其所在单元地址的形式给出。仅限于在仅限于在RAM空间寻址,即内部数据存储器空间寻址,即内部数据存储器RAM的低的低128个字节单元(个字节单元(00H7FH)和特殊功能寄)和特殊功能寄存器(存器(SFR)。)。例例 MOV A,31H 程程序序存存储储器器 E5H 31H RAM 31H 地址 8 87 7H 根根据据指指令令码码中中给给出出的的地地址址 31H,去去 RAM 的的31H 单单元元取取操操作作数数 操操作作数数 8 87 7H 累累加加器器 A 取取出出操操作作数数后后送送给

5、给累累加加器器 .寄存器寻址寄存器寻址 操作数是放在寄存器中的,找到了寄存器就可得操作数是放在寄存器中的,找到了寄存器就可得到操作数。到操作数。例例 MOV A,R2 程程序序存存储储器器 11101010 A9H 累累加加器器 A RAM A9H R2 根根据据指指令令码码中中指指出出的的操操作作数数存存放放地地R2,去去取取操操作作数数 取取出出操操作作数数送送给给累累加加器器.寄存器间接寻址寄存器间接寻址 寄存器的内容不是操作数本身,而是存放操作数寄存器的内容不是操作数本身,而是存放操作数的地址,由这个地址再去寻找操作数。的地址,由这个地址再去寻找操作数。只能使用寄存器只能使用寄存器R0

6、或或R1作为间接地址寄存器。作为间接地址寄存器。用符号用符号“”表示是采用间接寻址方式。表示是采用间接寻址方式。例例 MOV A,R0 从操作数所在地从操作数所在地址取出数据放入址取出数据放入累加器累加器 A 0A6H A 40H R0 由指令码去寄存由指令码去寄存器器 R0 取内容取内容 0A6H 40H 11100110(MOV A,R0)程序存储器程序存储器 RAM PC R0 的内容是操作数的地址,由此取得数据 .基址寄存器加变址寄存器间接寻址基址寄存器加变址寄存器间接寻址 基址寄存器(基址寄存器(DPTR或或PC)和变址寄存器)和变址寄存器A的内的内容作为无符号数相加形成容作为无符号

7、数相加形成16位的地址,该地址单位的地址,该地址单元中才是所需的操作数。元中才是所需的操作数。例例 MOVC A,ADPTR (指令码是(指令码是93H)DPTR 程序存储器 H A H (DPTR)+(A)构构成成新新的的地地址址,里里面面存存放放的的是是所所需需的的操操作作数数 H 93H 根根据据指指令令分分别别去去 DPTR和和 A 取取基基址址和和变变址址.相对寻址相对寻址 以当前指令的位置(以当前指令的位置(PC值)为基准点,加上指令值)为基准点,加上指令中给出的相对偏移量(中给出的相对偏移量(rel)来获得操作数所在的)来获得操作数所在的实际地址。实际地址。例例 0500H:JC

8、 rel 设设rel=05H,这条指令在,这条指令在ROM中占两个单元,执行中占两个单元,执行完后,完后,PC=0500H+2=0502H,那么,那么目的地址目的地址=当前当前PC+rel=0502H+05H=0507H 符号符号“rel”表示表示“偏移量偏移量”,是一个带符号的单字是一个带符号的单字节数节数,范围是范围是:-128+127(80H7FH),.位寻址位寻址 指令中直接给出了操作数所在的位地址指令中直接给出了操作数所在的位地址 位地址表示一个可作位寻址的单元,其数据只能位地址表示一个可作位寻址的单元,其数据只能是是1位位0或或1 例例 (1)MOV ACC.7,07H将位地址单元

9、将位地址单元07H的数值送累加器的数值送累加器A的第的第7位,位地位,位地址址07H是单元地址是单元地址20H的第的第7位,即位,即20H.7。(2)CLR C;将;将PSW的第的第7位位CY清零清零.2.2 2.2 数据传送类指令数据传送类指令 1.一般数据传送指令一般数据传送指令 按照数据传送的目的地址的不同,分为传送到累加器型按照数据传送的目的地址的不同,分为传送到累加器型、传送到寄存器型、传送到直接地址型和传送到寄存器间、传送到寄存器型、传送到直接地址型和传送到寄存器间接寻址型。接寻址型。传送到累加器传送到累加器 MOV A,#data;A data MOV A,direct;A(di

10、rect)MOV A,Rn;A(Rn)MOV A,Ri;A(Ri)MOVA,#0A9HMOVA,69HMOVA,R1MOVA,R0.传送到寄存器传送到寄存器MOV Rn,direct;Rn(direct)MOV Rn,A;Rn(A)MOV Rn,#data;Rn data 传送到直接寻址单元传送到直接寻址单元MOV direct,A;direct(A)MOV direct,Rn;direct(Rn)MOV direct,#data;direct dataMOV direct,Ri;direct(Ri)MOV direct,direct;direct(direct)MOVR2,5FHMOVR2,

11、AMOVR2,#5FHMOV 5FH,AMOV 5FH,R5MOV 5FH,#FFHMOV 5FH,R0MOV 5FH,30H.传送到间接寻址单元传送到间接寻址单元MOV Ri,A;(;(Ri)(A)MOV Ri,direct;(;(Ri)(direct)MOV Ri,#data;(;(Ri)data只有只有R0、R1可以作为间接寻址寄存器。可以作为间接寻址寄存器。2.栈操作指令栈操作指令 PUSH direct;入栈指令;入栈指令 POP direct;出栈指令;出栈指令 堆栈操作原则:堆栈操作原则:“先进后出、后进先出先进后出、后进先出”MOV R0,5FHMOV R0,AMOV R0,#

12、5FHPUSH ACCPUSH B POP B POP ACC.3.数据交换指令数据交换指令 字节交换指令字节交换指令 XCH A,Rn;XCH A,direct;XCH A,Ri;l半字节交换指令半字节交换指令 XCHD A,Ri;功能:源操作数和功能:源操作数和目的操作数单元的目的操作数单元的数据进行交换数据进行交换(A A)0303和(和(RiRi)0303相互交换相互交换.4.外部数据传送指令外部数据传送指令 16位数传送指令位数传送指令 MOV DPTR,#data16;DPTR#data16 该指令一般用于地址赋值,常配合外部该指令一般用于地址赋值,常配合外部ROM、RAM数据传数

13、据传送使用。送使用。l累加器与外部累加器与外部RAM的数据传送指令的数据传送指令 MOVX A,Ri;A(Ri)MOVX Ri,A;(;(Ri)(A)MOVX A,DPTR;A(DPTR)MOVX DPTR,A;(;(DPTR)(A)利用利用Ri间接寻址外部间接寻址外部RAM的的低低256个单元,实现数据传送个单元,实现数据传送利用利用DPTR间接寻址间接寻址外部外部RAM的的64K单单元元,实现数据传送,实现数据传送.累加器与外部累加器与外部ROM的数据传送指令的数据传送指令 MOVC A,A+DPTR;A(A)+(DPTR)MOVC A,A+PC;PC PC+1,A(A)+(PC)指令特点

14、:变址间接寻址方式,指令特点:变址间接寻址方式,DPTR、PC作为基址寄存器作为基址寄存器,A作为变址寄存器,二者的和构成有效的地址,一般用作为变址寄存器,二者的和构成有效的地址,一般用于查表操作,也被称为于查表操作,也被称为查表指令查表指令。以以DPTR作为基址寄存器,可以在外部作为基址寄存器,可以在外部ROM的的64k空间任意空间任意地址查找数据;以地址查找数据;以PC作为基址寄存器,所要查找的数据作为基址寄存器,所要查找的数据或数据表应当紧跟在该条指令之后,才不易出错。或数据表应当紧跟在该条指令之后,才不易出错。.2.3 2.3 算术运算类指令算术运算类指令 包含加、减、乘法、除法以及十

15、进制调整等指令。包含加、减、乘法、除法以及十进制调整等指令。1.加法类指令加法类指令 加法指令加法指令 ADD A,Rn;A(A)+(Rn)ADD A,direct;A(A)+(direct)ADD A,Ri;A(A)+(Ri)ADD A,#data;A(A)+data 指令特点:源操作数指令特点:源操作数+目的操作数,和值放入目的操作数,目的操作数,和值放入目的操作数,目的操作数都是累加器目的操作数都是累加器A。影响标志位。影响标志位AC、Cy、OV、P。无符号数相加时:若无符号数相加时:若C=1,说明有溢出(其值,说明有溢出(其值 255)。)。带符号数相加时:若带符号数相加时:若OV=C

16、P CS=1,说明有溢出。,说明有溢出。.带进位的加法指令带进位的加法指令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(A)+data+(Cy)l加法操作时,要加进位位的值。常用于多字节数的相加加法操作时,要加进位位的值。常用于多字节数的相加。目的操作数仍然是累加器。目的操作数仍然是累加器A。l影响标志位影响标志位AC、Cy、OV、P。l溢出的判断同溢出的判断同ADD指令。指令。例例1:已知(已知(A)=3CH,(,(R1)=0A9H,Cy=1,执,执

17、行如下指令后,行如下指令后,A和和Cy的值各为多少?的值各为多少?ADDC A,R1.解:解:1(A)=3CH00111100(R1)=0A9H10101001 011100110Cy参与运算后的结果,(参与运算后的结果,(A)=11100110,Cy=0。+初始初始Cy=1.例例2:编写计算:编写计算23A9H+0EF7H的程序,将结果的程序,将结果存入内部存入内部RAM 41H和和40H单元,单元,40H存低存低8位位,41H存高存高8位。位。解:两个解:两个16位数(双字节)相加可分为两步进行位数(双字节)相加可分为两步进行,第一步先对低,第一步先对低8位相加,第二步再对高位相加,第二步

18、再对高8位相位相加。加。即即 A9H+F7H=A0H,Cy=1 23H+0EH+Cy=32H,Cy=0程序:程序:MOV A,#0A9H;被加数低;被加数低8位位A9HAADD A,#0F7H;与加数低;与加数低8位位F7H相加相加MOV 40H,A;低;低8位之和位之和40H单元单元.MOV A,#23H;被加数高;被加数高8位位AADDC A,#0EH;与加数高;与加数高8位作带进位位作带进位;相加;相加MOV 41H,A;高;高8位之和位之和41H单元单元 加加1指令指令 INC A;INC Rn;INC direct;INC Ri;INC DPTR;该类指令是单操作数指令,该类指令是单

19、操作数指令,操作数中的内容加操作数中的内容加1后仍然放后仍然放回其中。回其中。.例:设(例:设(R0)=70H,(,(70H)=41H,(,(71H)=56H,执行如下指令后结果是什么?,执行如下指令后结果是什么?(1)INC R0(2)INC R0 INC R0解:执行后解:执行后(1)()(R0)+1=(70H)+1=41H+1=42H,即,即(70H)=42H(2)()(R0)+1=70H+1=71H,即(,即(R0)=71H(R0)+1=(71H)+1=56H+1=57H,即(,即(71H)=57H.十进制调整指令十进制调整指令 DA A;对;对A中的中的BCD码加法结果进行校正。码加

20、法结果进行校正。该指令不适用于减法。该指令不适用于减法。例:两个例:两个4位位BCD码相加,设加数、被加数已经按压缩码相加,设加数、被加数已经按压缩BCD码从高位到低位存放在内存单元中,被加数存于码从高位到低位存放在内存单元中,被加数存于RAM的的31H、30H,加数存于,加数存于38H、39H,和存于,和存于4EH、4FH,设,设和不会溢出。和不会溢出。参考程序如下:参考程序如下:MOV A,30H;被加数的;被加数的BCD码的低码的低2位送位送AADD A,39H;与加数的;与加数的BCD码的低码的低2位相加位相加DA A ;作十进制调整;作十进制调整MOV 4FH,A;低;低2位和值存于

21、位和值存于50H.MOV A,31H;被加数的高;被加数的高2位送位送AADDC A,38H;与加数的高;与加数的高2位相加位相加DA A ;作十进制调整;作十进制调整MOV 4EH,A;高;高2位和值存于位和值存于51H 2.减法类指令减法类指令 带借位减法指令带借位减法指令 SUBB A,Rn;A(A)-(Rn)-(Cy)SUBB A,direct;A(A)-(direct)-(Cy)SUBB A,Ri;A(A)-(Ri)-(Cy)SUBB A,#data;A(A)-data-(Cy)此处,进位标志此处,进位标志Cy充当借位位。充当借位位。.注意注意:减法指令中没有不带借位的减法指令,所以

22、在需减法指令中没有不带借位的减法指令,所以在需要时,必须先将要时,必须先将Cy清清0。指令执行结果均在累加器指令执行结果均在累加器A中。中。减法指令结果影响程序状态字寄存器减法指令结果影响程序状态字寄存器PSW的的Cy、OV、AC和和P标志。标志。例:设有两个双字节无符号数相减,按照高位到低位的顺例:设有两个双字节无符号数相减,按照高位到低位的顺序,被减数存于序,被减数存于51H、50H,减数存于,减数存于59H、58H,差值存,差值存回于回于51H、50H。参考程序:参考程序:CLR C ;清零操作,是一条位操作指令,令;清零操作,是一条位操作指令,令Cy=0MOV A,50H;低;低8位被

23、减数位被减数AASUBB A,58H;低;低8位相减位相减MOV 50H,A;差值存回;差值存回50H.MOV A,51H;高;高8位被减数位被减数AASUBB A,59H;高;高8位相减位相减MOV 51H,A;差值存入;差值存入51H 减减1指令指令DEC A;A(A)-1DEC Rn;Rn(Rn)-1DEC direct;direct(direct)-1DEC Ri;(;(Ri)(Ri)-1减减1指令是将指定的地址或单元中的内容减指令是将指定的地址或单元中的内容减1,结,结果仍存放于原单元中,不影响标志位。果仍存放于原单元中,不影响标志位。.例:设(例:设(A)=0FFH,(,(R0)=

24、50H,(,(50H)=0AH,试问下述指令的执行结果是什么?,试问下述指令的执行结果是什么?(1)DEC A(2)DEC R0(3)DEC R0解:执行结果如下:解:执行结果如下:(1)()(A)=0FFH-1=0FEH(2)()(50H)=0AH-1=09H(3)()(R0)=50H-1=4FH.3.乘法指令乘法指令MUL AB;B(高(高8位)、位)、A(低(低8位)位)(A)(B)4.除法指令除法指令DIV AB;B(余数)、(余数)、A(整数)(整数)(A)(B)乘除操作将会对乘除操作将会对OV、Cy和和P标志产生影响,其中标志产生影响,其中当当B中的值为中的值为0时,则执行结果是不

25、确定的值,且时,则执行结果是不确定的值,且置溢出标志置溢出标志OV为为1,表明该次除法是无意义的。,表明该次除法是无意义的。.例:试编写程序完成例:试编写程序完成(1)100d55d,将结果存放于,将结果存放于60H(高(高8位)、位)、61H(低(低8位)位)(2)240d55d,将结果存放于,将结果存放于60H(整数)、(整数)、61H(小数(小数)。)。程序(程序(1)MOV A,#100;十进制被乘数赋值给;十进制被乘数赋值给A MOV B,#55 ;十进制乘数赋给;十进制乘数赋给B MUL AB ;两数相乘;两数相乘 MOV 60H,B ;积的高;积的高8位送位送RAM的的60H M

26、OV 61H,A ;积的低;积的低8位送位送RAM的的61H.程序(程序(2)MOV A,#0F0H;将;将0F0H(240)送累加器)送累加器A MOV B,#37H ;将;将37H(55)送寄存器)送寄存器B DIV AB ;执行除法指令;执行除法指令 MOV 60H,A ;商的整数送内部;商的整数送内部RAM的的60H单元单元 MOV 61H,B ;余数送;余数送61H.2.4 2.4 逻辑运算类指令逻辑运算类指令 1.逻辑移位指令逻辑移位指令 循环左移指令循环左移指令 RL A;循环右移指令循环右移指令RR A;AA7 A0累加器每个位依次向左移累加器每个位依次向左移动动1位位AA7

27、A0累加器每个位依次向右移累加器每个位依次向右移动动1位位.带进位位循环左移指令带进位位循环左移指令 RLC A;带进位位循环右移指令带进位位循环右移指令 RRC A;执行带进位的循环移位指令之前,按照程序的需要,给执行带进位的循环移位指令之前,按照程序的需要,给Cy置位或清置位或清0。若。若Cy=0,则执行,则执行RLC指令一次,相当于指令一次,相当于A2,执行,执行RRC指令一次,相当于指令一次,相当于A2 2。AA7 A0CyAA7 A0Cy.例:写出下列指令执行结果。例:写出下列指令执行结果。(1)CLR C MOV A,#05H RLC A解:(解:(A)=00001010(2)CL

28、R C MOV A,#80H RRC A解:(解:(A)=01000000.2.逻辑运算指令逻辑运算指令 逻辑逻辑“与与”指令指令 ANL A,Rn;A(A)(Rn)ANL A,direct;A(A)(direct)ANL A,Ri;A(A)(Ri)ANL A,#data;A(A)dataANL direct,A;A(direct)(A)ANL direct,#data;A(direct)data“与与”指令常用于给字节的某些指定位清零,而可以保留其指令常用于给字节的某些指定位清零,而可以保留其它位的值。它位的值。比如,比如,ANL A,#0FH,将,将A的高的高4位清零,而保留低位清零,而保

29、留低4位的位的值。值。.逻辑逻辑“或或”指令指令 ORL A,Rn;A(A)(Rn)ORL A,direct;A(A)(direct)ORL A,Ri;A(A)(Ri)ORL A,#data;A(A)dataORL direct,A;A(direct)(A)ORL direct,#data;A(direct)data “或或”指令常用于给字节的某些指定位置指令常用于给字节的某些指定位置1,而可以保留其,而可以保留其它位的值。它位的值。比如,比如,ORL A,#0FH,将,将A的低的低4位置位置1,而保留高,而保留高4位的位的值。值。.逻辑逻辑“异或异或”指令指令 XRL A,Rn;A(A)(R

30、n)XRL A,direct;A(A)(direct)XRL A,Ri;A(A)(Ri)XRL A,#data;A(A)dataXRL direct,A;A(direct)(A)XRL direct,#data;A(direct)data 利用利用“异或异或”运算的一些特点,可对操作数作取反操作,运算的一些特点,可对操作数作取反操作,比较两个数是否相等。比较两个数是否相等。比如,(比如,(A)=35H,执行,执行XRL A,#35H结果:(结果:(A)=00H,说明,说明A中的数源操作数相等。中的数源操作数相等。.执行执行 XRL A,#FFH 结果:结果:(A)=CAH=11001010,与

31、,与35H(00110101)正)正好互反。好互反。累加器清零和取反指令累加器清零和取反指令 CLR A;(;(A)0 CPL A;(;(A)(A)很有用的两条对累加器的操作指令。很有用的两条对累加器的操作指令。.2.5 2.5 控制转移类指令控制转移类指令 作用:改变程序计数器作用:改变程序计数器PC的值,从而改变程序执的值,从而改变程序执行的流向。行的流向。1.无条件转移指令无条件转移指令 LJMP addr16;PC addr16AJMP addr11;PC(PC)+2,PC10PC0 addr11SJMP rel;PC(PC)+2,PC(PC)+relJMP A+DPTR;PC(A)+

32、(DPTR)(1)LJMP addr16 指令指令 长转移指令,目标地址为长转移指令,目标地址为16位,程序可在位,程序可在64KB字字节空间内(从节空间内(从0000HFFFFH)任意跳转。)任意跳转。.(2)AJMP addr11 指令指令 绝对转移指令,目标地址只有绝对转移指令,目标地址只有11位,可转移的空位,可转移的空间在指令间在指令PC所在的所在的2KB范围内。范围内。(3)SJMP rel指令指令 短转移指令,转移范围在指令短转移指令,转移范围在指令PC+2的的-128+127的的256个字节空间内。个字节空间内。(4)JMP A+DPTR指令指令 间接转移指令,实现以间接转移指

33、令,实现以DPTR为首地址的为首地址的256字节字节范围的转移范围的转移,常用于程序的多分支转移。,常用于程序的多分支转移。.2.条件转移指令条件转移指令 累加器判零转移指令累加器判零转移指令 JZ rel;若(;若(A)=0,则程序跳转,若(,则程序跳转,若(A)0,则,则 顺序顺序执行执行 JNZ rel;若(;若(A)0,则程序跳转,若(,则程序跳转,若(A)=0,顺序,顺序执行执行注意,该指令是以注意,该指令是以A的值是否为的值是否为0作为转移条件。作为转移条件。.比较转移指令比较转移指令CJNE A,direct,rel;CJNE A,#data,rel;CJNE Rn,#data,

34、rel;CJNE Ri,#data,rel;发生转移的条件是被比较的两个操作数发生转移的条件是被比较的两个操作数不相等不相等才才转移。转移。源操作数有源操作数有A、Rn及及Ri,而目的操作数则只有,而目的操作数则只有直接寻址单元和立即数。直接寻址单元和立即数。.循环转移指令循环转移指令 DJNZ Rn,rel;DJNZ direct,rel;只有只有Rn和直接寻址单元和直接寻址单元direct可使用这条指令。可使用这条指令。单元中的数值减单元中的数值减1后不等于后不等于0,就跳转;等于,就跳转;等于0,则,则顺序往下执行。顺序往下执行。.3.子程序调用和返回指令子程序调用和返回指令 绝对调用指

35、令绝对调用指令 ACALL addr11 调用指令的范围在与(调用指令的范围在与(PC+2)后的同一个)后的同一个2KB范范围内。围内。长调用指令长调用指令 LCALL addr16 可在可在64KB范围内调用子程序。范围内调用子程序。返回指令返回指令 RET;子程序返回指令;子程序返回指令 RETI;中断程序返回指令;中断程序返回指令 4.空操作指令空操作指令 NOP;CPU无操作,仅是无操作,仅是PC加加1。.2.6 2.6 位操作指令位操作指令可对每一个可对每一个bit进行操作的指令。进行操作的指令。位寻址空间:位寻址空间:内部内部RAM的的20H2FH16个字节,共个字节,共128个可

36、寻个可寻址位址位 累加器累加器A和寄存器和寄存器B 部分特殊功能寄存器部分特殊功能寄存器,如,如PSW、TCON、P0P3等。等。1.位传送指令位传送指令 MOV C,bit MOV bit,C只能在只能在Cy和其他位地址之间进行数据的传送。和其他位地址之间进行数据的传送。.2.位置位置1和清零指令和清零指令 SETB C ;SETB bit;CLR C ;CLR bit;3.位逻辑运算指令位逻辑运算指令 ANL C,bit ;ANL C,/bit;ORL C,bit ;ORL C,/bit;CPL C ;CPL bit ;置置1指令,也称作置位指令,也称作置位清零指令清零指令“位与位与”指令

37、指令“位或位或”指令指令“位取反位取反”指指令令.4.位条件转移指令位条件转移指令 判判C转移指令转移指令 JC rel;Cy=1,程序跳转,程序跳转 JNC rel;Cy1,程序跳转,程序跳转判位变量转移指令判位变量转移指令 JB bit,rel;位的值;位的值=1,程序跳转,程序跳转 JNB bit,rel;位的值;位的值1,程序跳转,程序跳转 JBC bit,rel;位的值;位的值=1,程序跳转,并且令,程序跳转,并且令bit=0。.2.7 MCS-512.7 MCS-51的汇编程序设计基本方法的汇编程序设计基本方法 好的程序有好的结构。好的程序有好的结构。主次分明,功能模块清晰。主次分

38、明,功能模块清晰。程序中的指令有可被编译成机器代码的指令和不程序中的指令有可被编译成机器代码的指令和不会被编译成机器代码的伪指令。会被编译成机器代码的伪指令。指令:告诉计算机如何操作以及做何种操作。指令:告诉计算机如何操作以及做何种操作。伪指令:告诉汇编程序在编译应用程序时有何具伪指令:告诉汇编程序在编译应用程序时有何具体约定。比如:程序从何处开始,何处结束,某体约定。比如:程序从何处开始,何处结束,某些编程者自己规定的表述代表什么意思些编程者自己规定的表述代表什么意思.1.1.常用伪指令常用伪指令 ORG addr16 规定目标程序的起始地址规定目标程序的起始地址,汇编程序中必须有的。,汇编

39、程序中必须有的。END 源程序已经结束,对后面的指令都不用进行汇编源程序已经结束,对后面的指令都不用进行汇编。符号名称符号名称 EQU 表达式表达式 将表达式的值赋予符号名称。程序中凡出现该符号名称就将表达式的值赋予符号名称。程序中凡出现该符号名称就等同于该表达式。等同于该表达式。符号名称符号名称 SET 表达式表达式 也是将表达式的值赋予符号名称,只是该符号名称可以重也是将表达式的值赋予符号名称,只是该符号名称可以重定义。定义。.符号名称符号名称 BIT 位地址位地址 将位地址的值赋予符号名称。程序中凡出现该符号名称就将位地址的值赋予符号名称。程序中凡出现该符号名称就代表该位地址。代表该位地

40、址。符号名称符号名称 DATA 数据地址数据地址 把片内的数据地址赋予所规定的符号名称。把片内的数据地址赋予所规定的符号名称。标号:标号:DS 表达式表达式 从当前地址开始保留空间。从当前地址开始保留空间。标号:标号:DB表达式列表表达式列表 表达式列表中的每个字节依次存放在从标号地址开始的各表达式列表中的每个字节依次存放在从标号地址开始的各个单元中。个单元中。.标号:标号:DW 表达式列表表达式列表 数据字(双字节,数据字(双字节,16bit)依序存放在标号地址开始的程序)依序存放在标号地址开始的程序存储器单元中。存储器单元中。2.汇编语言程序设计基础汇编语言程序设计基础 常见结构有如下四种

41、:常见结构有如下四种:顺序结构顺序结构 分支结构分支结构 循环结构循环结构 子程序结构。子程序结构。.顺序结构顺序结构 程序就依照编写的顺序从头执行到尾。程序就依照编写的顺序从头执行到尾。例:单字节例:单字节BCD码转换程序,设待转换的数据存于码转换程序,设待转换的数据存于R1中。中。ORG 100HMAIN:MOV A,R1;待转换的数值从;待转换的数值从R1送累加器送累加器AMOV B,100;B100DIVAB;执行;执行ABMOV 30H,A;将整数(即百位数)另存在;将整数(即百位数)另存在30H单元单元MOV A,B;A(B),将余数送),将余数送AMOV B,10;B10DIVA

42、B;执行;执行ABMOV 31H,A;31H(A),即十位数存入),即十位数存入31HMOV 32H,B;B中的余数是个位数,存入中的余数是个位数,存入32HSJMP$;停止;停止.分支结构分支结构 主要解决:根据不同的条件而去执行不同的指令主要解决:根据不同的条件而去执行不同的指令的问题。的问题。例:例:根据内存根据内存NUM单元的数值,单元的数值,如果如果0 (NUM)9999,则图中,则图中DS1亮;亮;如果如果100 (NUM)180,则无动作;,则无动作;如果如果181(NUM)255,则,则DS2亮。亮。.流程图流程图开始开始否否执行执行ALTVAL1是是(NUM)181?是是执行

43、执行CLRALL执行执行AGTVAL2结束结束否否(NUM)100?.循环结构循环结构 重复执行某段程序,当满足某种条件时,就跳出重复执行某段程序,当满足某种条件时,就跳出循环。循环。循环程序的一般构成:循环程序的一般构成:循环初始化,包含设置循环开始的地方,控制循循环初始化,包含设置循环开始的地方,控制循环次数的变量等环次数的变量等循环体,包含需重复执行的程序段,以及合适的循环体,包含需重复执行的程序段,以及合适的条件转移指令条件转移指令 循环结束,保存结果,恢复一些单元的初值等循环结束,保存结果,恢复一些单元的初值等.例:设内部例:设内部RAM的的60H6FH数据单元作为程序的数据单元作为

44、程序的数据暂存区,使用前对这些单元作清零的操作。数据暂存区,使用前对这些单元作清零的操作。开始开始数据单元的首地址给数据单元的首地址给R1,用用R7作为循环计数器作为循环计数器清零数据单元清零数据单元R7(R7)-1(R7)=0?结束结束YNORG 0100HMAIN:MOVR1,#60HMOVR7,#16CLRALOOP:MOVR1,AINCR1DJNZR7,LOOPEND 循环循环.循环结构实现软件延时循环结构实现软件延时 100ms延时程序,设单片机工作频率是延时程序,设单片机工作频率是12MHz,则,则一个机器周期是一个机器周期是1s。MOV R5,#100LOOP1:MOV R6,#

45、250LOOP2:NOPNOPDJNZ R6,LOOP2DJNZ R5,LOOP1内层循环,内层循环,2条条NOP指令和指令和DJNZ指令执指令执行时间一共行时间一共4个机器个机器周期,即周期,即4 s。循环。循环250次,则一共延时次,则一共延时1000 s。外层循环,外层循环,将将1000 s循循环执行环执行100次次,则延时,则延时100ms。.子程序调用子程序调用 将具有一定独立功能的程序写作子程序,可以使将具有一定独立功能的程序写作子程序,可以使主程序结构清晰,修改方便。主程序结构清晰,修改方便。显示查表程序示例:显示查表程序示例:设内部设内部RAM的的30H37H作为程序的数据显示

46、码存作为程序的数据显示码存储区,储区,38H3FH作为显示数字的作为显示数字的BCD码的存储区码的存储区。程序通过查表的方式,以。程序通过查表的方式,以BCD作为查表的偏移作为查表的偏移量,查出某个量,查出某个BCD码的码的7段显示码,并送入显示段显示码,并送入显示码存储区,然后再送去显示。设显示位数是码存储区,然后再送去显示。设显示位数是6位。位。.ORG 0000HJMP MAINMAIN:MOVDPTR,#TAB;数据表首地址送数据指针;数据表首地址送数据指针DPTRMOVR0,#38H;BCD码存储区首地址送码存储区首地址送R0MOVR1,#30H;显示码存储区首地址送;显示码存储区首地址送R1 MOV R7,#6;R7作为查表次数的计数器作为查表次数的计数器LCALL TABLE;调用查表子程序;调用查表子程序 LCALLDISPLAYSJMP$主程序主程序TABLE:MOV A,R0;取;取BCD码送累加器码送累加器AMOVCA,A+DPTR;以;以BCD码作为偏移量查表,获得该码对应的显示码码作为偏移量查表,获得该码对应的显示码MOV R1,A;将查表得到的显示码送相应存储区;将查表得到的显示码送相应存储区INCR0INCR1DJNZR7,TABLE;判;判6个个BCD码的显示码是否都已取得码的显示码是否都已取得RET 子程序子程序.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(第2章MCS51指令系统课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|