湖南工大单片机辅助课件第3章MCS51系列单片机的指令系统.ppt

上传人:sccc 文档编号:4849563 上传时间:2023-05-19 格式:PPT 页数:125 大小:1.39MB
返回 下载 相关 举报
湖南工大单片机辅助课件第3章MCS51系列单片机的指令系统.ppt_第1页
第1页 / 共125页
湖南工大单片机辅助课件第3章MCS51系列单片机的指令系统.ppt_第2页
第2页 / 共125页
湖南工大单片机辅助课件第3章MCS51系列单片机的指令系统.ppt_第3页
第3页 / 共125页
湖南工大单片机辅助课件第3章MCS51系列单片机的指令系统.ppt_第4页
第4页 / 共125页
湖南工大单片机辅助课件第3章MCS51系列单片机的指令系统.ppt_第5页
第5页 / 共125页
点击查看更多>>
资源描述

《湖南工大单片机辅助课件第3章MCS51系列单片机的指令系统.ppt》由会员分享,可在线阅读,更多相关《湖南工大单片机辅助课件第3章MCS51系列单片机的指令系统.ppt(125页珍藏版)》请在三一办公上搜索。

1、第三章 MCS-51单片机指令系统,本章内容,寻址方式 指令的分类、格式及符号说明 分类指令,掌握MCS-51指令系统的各种寻址方式掌握每条指令的格式、功能及用法掌握指令的操作过程中操作数的变化情况以及对标志位的影响。学会正确选用指令完成简单的任务,学习目的,MCS-51指令系统共有255种操作代码,用汇编语言表达时,只需熟记42种助记符就能表示33种指令功能共111条指令。,3.1 寻址方式,MCS-51的指令系统共用了七种寻址方式。,指令码中直接含有所需的操作数,操作数字前加“#”符号为前缀。以区别直接地址。使用时一定要注意!,3.1.2 立即寻址,特点,功能:(1)将片内RAM中44H单

2、元 的内容送累加器A,属于直 接寻址;(2)则是把44H这个数本 身送到累加器A,属于立即寻址。,例,直接寻址指令的指令码中含有操作数地址。,3.1.3 直接寻址,功能:将片内RAM 56H单元中的内容34H送到累加器A中。如左图3.1,3.1.4 寄存器间接寻址,指令指定寄存器中的内容为操作数的地址。,工作寄存器R0、R1和专用寄存器DPTR可用于间接寻址,在寄存器前加“”符号作前缀。,MOV A,R0;A R0MOV A,R0;A(R0)例如:R065H,65H26H如图3.2所示,执行结果A65H,执行结果A26H。注意:是它区别寄存器寻址的标志。,3.1.5 相对寻址,相对寻址是将程序

3、计数器PC中的当前内容与指令第二字节所给出的数相加,其和为跳指令的转移地址。,20008026HSJMPrel;PC PC+2+rel,例,以DPTR和PC基址寄存器和累加器A变址寄存器的内容和为地址,寻址该地址单元,读取数据。,(1)MOVCA,APC;A(APC)(2)MOVCA,ADPTR;A(ADPTR),已知:片外ROM的2006H单元中有一数34H,编写程序用变址寻址方法把这个数送入A中,试进行分析。解:根据题目要求,基址可定为2000H,地址偏移量则为06H,程序如下:MOVDPTR,2000H;DPTR2000HMOVCA,ADPTR;A34HMOVA,06H;A06H,例3.

4、1,如图3.4所示,这里A具有双重作用,在指令执行前用来存放地址偏移量,指令执行后为目的操作数。,3.1.7 位寻址,当我们把八位二进制数中某一位作为操作数看待时,这个操作数的地址就称为位地址,对位地址寻址简称位寻址。,MOV 30H,C;30H是位寻址位地址 MOV A,30h;30H是直接寻址的字节地址 MOVC,ACC.7;CyACC.7,由上面指令可知,位寻址的位地址与直接寻址的字节地址形式完全一样,主要由操作码来区分,使用时需应该特别注意。,例如,本节主要论述指令格式、指令的三种表示形式、指令字节数、指令分类和指令系统综述等五个问题。,3.2 指令系统,指令格式是指令码的结构形式。表

5、达形式为:,3.2.1 指令格式,标号又称为指令地址符号,一般由1-6个符组成,以字母开头的字母数字串。,标号:操作码 操作数;注释,操作码用MCS-51单片机所规定的助记符来表示,它命令CPU作何种操作。,注释是对该指令作用或功能的说明,以便于阅读,不参与编译(可有可无,不是必备的)。注释部分前一定要用分号“;”隔开。,操作数分为目的操作数和源操作数,常用符号(如寄存器、标号)、常量(如立即数、地址值等)来表示。操作码和操作数之间用若干空格分隔,而目的操作数和源操作数之间用逗号“,”分隔。,3.2.2 指令的三种表达形式,通常,指令有二进制,十六制和助记符等三种表示形式,3)指令的助记符形式

6、 又称为指令的汇编符或汇编语句形式,是一种由英文单词或缩写字母形象表征指令功能的形式。,3.2.3 指令的字节数,MCS-51单片机通常可以分为单字节、双字节和三字节指令三种。,单字节指令只有一个字节。通常又可分为两类:,1)无操作数单节指令,这类指令的指令码光有操作码字段,操作数是隐含在操作码中的。,这类指令的指令码有操作码字段和专门用来指示操作数所在寄存器号的字段组成。例如:八位数传送指令 MOVA,Rn其中,n的取值范围为07。,2)含有操作数寄存器号的单字节指令,双字节指令含有两个字,操作码字节在前,操作数字节在后。,例如:八位数传送指令 MOV A,data;Adata 这条指令的含

7、义是指令码第二字节data取出来存放到累加器A中,这类指令的指令码的第一字节为操作码,第 二字节为操作数或操作数地址。,故三字节指令共可有如下四类:,3)三字节指令(16条),3.2.4 指令的分类及符号说明,MCS-51单片机可以分为五类:,1.指令分类,2)算术运算指令,4)位操作指令,3)逻辑运算指令,1)数据传送指令,5)控制转移指令,2、符号的说明,(1)Rn:表示当前选中的寄存器区的8个工作寄存器,(n=0-7)中的一个。(2)Ri:表示寄存器间接寻址,Ri只能 是R0或R1。(3)#data:8位直接地址,实际使用时 data应是00H-0FFH中的一个。(4)#data16:表

8、示包含在指令中的16位立 即数。,(5)direct:表示8位内部数据存储器单 元的地址。(6)Addr16:表示16位的目的地址。(7)Addr11:表示11位的目的地址。(8)Rel:表示8位带符号的偏移量。(9)DPTR:为数据指针,可用作16位 的地址寄存器。,(10)Bit:表示内部RAM或专用寄存器中 的直接寻址位。(11)A:累加器ACC。(12)B:专用寄存器,用于MUL和DIV指 令中。(13):为间址寄存器或基址寄存器的前 缀。如Ri,A+PC,A+DPTR。(14)/:位操数的前缀,表示对该位操作 数取反。如/bit.(15)$:当前指令的地址。,一、内部数据传送指令(1

9、5条),这类指令的源操作数和目的操作数地址都在单片机内部。,3.2.5 数据传送指令,已知:R030H,试问执行如下指令后累加器A、R3、30H、31H单元中内容各是什么?MOV A,#20HMOV R3,#45HMOV R0,#46HMOV 31H,#47H,例 3.2,执行后,结果为:A=20H,R3=45H,(30H)=46H,(31H)=47H,已知:R1=20H、(21H)=54H、(22H)=55H、(30H)=56H,试问执行如下指令后,结果A、40H、R2、20H、和P2口中的内容各是什么?MOV A,21H MOV 40H,A MOV R2,22H MOV R1,21H MO

10、V P2,30H结果为:A=54H,(40H)=54H,R2=55H,(20H)=54H,P2=56H,例 3.3,已知:R1=30H、R2=31H、(56H)=23H,试问执行以下指令后,结果各是什么?MOV A,R1 MOV R2,A MOV 56H,R1结果为:A=30H,R2=30H,(56H)=30H,例 3.4,已知:(30H)=12H、(31H)=13H、R0=30H、R1=31H,试问执行以下指令后A、30H、31H和32H各是什么?MOV A,R0 MOV R1,A MOV R0,#34h MOV 32h,R1执行后,A=12H,30H=34H,31H=12H,32H=12H

11、,例3.5,只有唯一的一条16位数传送指令,该指令为:MOVDPTR,Data;DPTRdata16,二、外部数据传送指令(7条),该指令共有以下二条:MOVCA,ADPTR;A(ADPTR)MOVCA,APC;PCPC+1,A(APC),已知:片外2008H单元中有一个数为34H,试用以上二条指令各写一个程序,把数送到外内7FH单元中。解:采用DPTR作为基址寄存器ORG 0000H SJMP STARTORG 0030HSTART:CLR A;清空A MOV DPTR,#2008H;表起始值MOVC A,A+DPTR;把A与DPTR相加,;结果A34HMOV 7FH,A;结果(7FH)=3

12、4HSJMP$;停止,例3.6,采用PC作为基址寄存器ORG 0000HSJMP STARTORG 2000H2000H START:MOV A,05H;偏移量为05H,;因为该指令占;了二个字节数2002HMOVCA,A+pc;首先将PC1,则;PC2003,然后;加05H,则PC指向;2008单元MOV 7FH,A;结果(7FH)34HSJMP$;停止,该类型指令共有:MOVX A,Ri;A(Ri)MOVX Ri,A;A(Ri)MOVX A,DPTR;A(DPTR)MOVX DPTR,A;A(DPTR),已知外部RAM的60H单元中有一个数为30H,试编程把30H送到片外RAM的2000H

13、单元中。解:上面虽都是片外RAM的地址单元,但不能直接传送,必须经过累加器A的转送,才能实现。程序如下:ORG 1000HMOV R1,#60H;R1=60H MOVX A,R1;A30HMOV DPTR,#2000H;DPTR=2000HMOVX DPTR,A;2000H30HSJMP$;停止,例 3.7,三、数据交换指令(5条),已知:片内20H单元有一个数为30H,片外20H单元有一个数为03H,编程把二个数相互交换。解:程序为:ORG 0030HMOV R0,#20H;R030HMOVX A,R0;A03HXCH A,R0;A30H,20H03HMOVX R0,A;30H20H(外部R

14、AM)SJMP$;停止,例 3.8,四、堆栈操作指令(2条),PUSHdirect;SP SP+1,(SP)(direct)POP direct;(SP)direct,SP SP-1,第一条指令称为压栈指令,用于把direct为地址的操作数传送到堆栈中去。,第二条指令称为出栈指令。,已知:(20H)=M1,(50H)=M2编程用堆栈指令把20H和50H单元中内容相交换。解:由堆栈所具备的原则,程序为:MOV SP,#60H;栈底首地址为60HPUSH20H;SPSP1,61HM1PUSH50H;SPSP1,62HM2POP 20H;20M2,SPSP-1=61H,3.2.6 算逻运算和移位指令

15、,1、加法指令(13条),(1)不带进位位(Cy)加法(4条),ADD A,Rn ADD A,directADD A,RjADD A,#data,一、算术运算指令(24条),试分析执行如下指令后,累加器A和PSW中各标志的变化情况如何?MOVA,#5AHADD A,#6BH 解:第一条指令先向累加器A传送一个数5AH,第二条为加法指令,机器执行加法指令时按带符号数运算。,例 3.10,竖式表示如图3.6:,图3.6 加法指令执行过程,2.带进位位(Cy)加法(4条),ADDC A,RnADDC A,#dataADDC A,directADDC A,Ri,已知:A8FH、R120H、(20H)1

16、2H、(21H)0FEH和Cy1,试问CPU依次执行以下指令后累加器A和Cy中的值是多少。a.ADDC A,R1 b.ADDC A,21Hc.ADDC A,R1 d.ADDC A,#7FH 解:操作结果应为:a.A=0B0H,Cy=0 b.A=8DH,Cy=1c.A=0A2H,Cy=0 d.A=0FH,Cy=1,例 3.11,3.加1指令(5条),INCA;AA1INCRn;RnRn1INCdirect;(direct)(direct)1INCRi;(Ri)(Ri)1INCDPTR;DPTRDPTR1,已知:A34H、R042H、(43H)23H、DPTR3020H,试问CPU执行如下程序后A

17、、R4、45H、R0、DPTR中的内容各是什么?INC AINC R0INC 43HINC R0INC DPTR 解:由加1指令的规则,上述指令执行后的的操作结果为:A35H、R043H、43H25H、DPTR3021H。由于,加1指令在程序中频繁地出现,常用来修改地址和数据指针加1处理。,例 3.12,2、减法指令(8条),1)带进位位(Cy)减法指令(4条),SUBB A,Rn;A A+Rn+CySUBB A,Rj;AA+(Ri)+CySUBB A,direct;AA+direct+CySUBB A,#data;A A+data+Cy,试分析执行下列指令后,累加器A和PSW中各标志位状态?

18、CLR C MOV A,#35H SUBB A,#0B6H 解:第一条指令用于清标志位Cy;第二条指令是对被减数送累加器A中;第三条指令是进行减法指令,结果为:A=7FH,PSW为:,例 3.14,2)减1指令(4条),DEC A;AA-1DEC Rn;RnRn-1DEC direct;direct(direct)-1DEC Ri;(Ri)(Ri)-1,已知:A10H、R13BH、R734H、(60H)00H、(3BH)0FFH,试分析,执行如下程序后累加器A和PSW中各标志位状态?DEC A DEC R1 DEC 60H DEC R7,例 3.15,解:根据减1指令功能,结果为:A0FH,P

19、=1 3B0FEH,PSW不变60H0FFH,PSW不变 R7=33H,PSW不变,特点,3、十进制调整指令(1条),1.BCD加法,DA A,对A中两个压缩BCD数相加之和调整为2位BCD码数。,1)只能用在对BCD码数进行ADD或ADDC操 作后使用。2)影响标志位:有进位时 C1。,试编程实现44H86H的BCD加法程序,并对其工作原理分析。解:相应BCD加法程序为:MOV A,44H;A44HADD A,86H;A44860CAHDA A;A30H,Cy1,AC1SJMP$;结束,例 3.16,图3.7 BCD加法过程,2.BCD减法,MCS51单片机中没有十进制减法调整指令,因此,这

20、里的BCD减法运算必须采用BCD补码运算法则。,ORG0100HCLRC;清CyMOVA,9AH;ABCD模100SUBB A,M2;ABCD减数的补数ADD A,M1;A被减数减数的补数DA A;对A进行加法调整MOV M3,A;存入M3 M3BCD差CLR C;清CySJMP$;停止,两位BCD数的模100,BCD减数,加60调整BCD差,BCD减数,减数的补数,1 0 0 1 1 0 1 0 B,0 0 1 0 0 1 0 1 B,1 1 1 1 0 1 0 1 B,1 1 0,1 0 1 0 1 0 1 0 1 B,0 1 1 1 0 1 0 1 B,1 0 0 0 0 0 0 0 B

21、,+,+,图3.8 BCD减法过程,4、乘法和除法指令,已知:有两个8位无符号数乘数分别放在20H和21H单元中,试编写程序把相乘积的低8位放入22H单元中,积的高8位放入23H单元中。解:求8位无符号单字节乘法,可直接利用乘法指令来实现,程序为:,例 3.18,ORG 1000HMOV R1,#20H;R1第一个乘数地址MOV A,R1;A第一个乘数INC R1;修改乘数地址MOV B,R1;B第二个乘数地址MUL AB;A*B=BAINC R1;修改目标单元地址MOV R1,A;22H积的低8位INC R1;修改目标单元地址MOV R1,B;23H积的高8位SJMP$;停止,共20条,分为

22、与、或、异或、A操作指令。,(一)与指令,二、逻辑运算类指令,已知:R0=20H、(20H)=0FEH,试问分别执行如下指令后,累加器A和20H单元中内容各是什么?MOV A,#20H MOV A,#0FH ANL A,R0 ANL A,20HMOV A,#0F0H MOV A,#80H ANL A,R0 ANL 20H,A,例 3.19,解:根据逻辑乖指令功能,上述指令执行后的操作结果为:A=20H,(20H)=0FEH A=0EH,(20H)=0FEH A=0F0H,(20H)=0FEH A=80H,(20H)=80H,ORL A,Rn;AARnORL A,direct;AAdirectO

23、RL A,Ri;AA(Ri)ORL A,#data;AAdataORL direct,A;direct(direct)AORL direct,#data;direct(direct)data,(二)或指令,已知:A0AAH和P20FFH,编程把累加器A中低4位送入P2口低4位,P2口高位不变。解:程序思路为:根据逻辑与、逻辑或二类指令进行合用来实现ORG0030HANL A,0FH;屏蔽A中的高4位,低4位不变ANLP2,0F0H;屏蔽P2中的低4位,高4位不变ORLP2,A;装配数据,结果送P2SJMP$;结束,例 3.20,XRL A,Rn;AARnXRL A,direct;AA(dire

24、ct)XRL A,Ri;AA(Ri)XRL A,#data;AAdataXRL direct,A;direct(direct)AXRL direct,#data;direct(direct)data,(三)异或指令,已知:外部RAM0040H中有一数BBH,假定高4位不变和低4位取反,试编出它的相应程序。解:利用MOVX A,DPTR类指令ORG 0300H MOV DPTR,#0040H;地址送指针DPTRMOVX A,DPTR;ABBHXRL A,#0FH;ABBH0FH=B4HMOVX DPTR,A;结果送回30H单元SJMP$;停止,例 3.21,(四)累加器清零和取反指令,RL A;

25、RR A;,A7,A0,A,A,Cy,A7,A0,A,A7,A0,A,RLC A;,RRC A;,三、移位指令(4条),已知:M和M1单元中有一个16位二进制数(M为低8),编程将其扩大到二倍(注意:该数最大可扩大到65536)。解:一个16位二进制数扩大到二倍就等于是把它进行一次算术左移。由于MCS51单元片机的移位指令都是二进制8位的移位指令,因此16位数的移位指令必须用程序来实现。算法为:,例3.23,程序为:ORG0030HCLRC;清进位标志位MOVR0,M;操作数低8位地址送R0MOVA,R0;A操作数低8位RLC A;低8位操作数左移低位补0MOVR0,A;结果送回M单元,Cy中

26、为最高位INCR0;R0指向M1单元MOVA,R0;A操作数高8位RLC A;高8位操作数左移并加上低位CyMOV R0,A;结果送回M1单元SJMP$;停止,一、控制转移指令(17条),LJMPaddr16;Pcaddr16AJMP addr11;PcPC+2,PC100arrr11SJMP rel;PcPC+2,PCPC+relJMP A+DPTR;PcA+DPTR,1、无条件转移指令,3.2.7控制转移和位操作指令,MCS-51系列单片机可以在64KB地址范围内寻址,绝对转移指令的转移范围只在PC当前值所指的2KB地址范围内。,一页:256个地址单元,一区:8页,共2KB地址单元;地址高

27、5位决定区。,64K:32区,256页。,长转移指令,绝对转移指令,二字节指令,可在2KB地址范围内转移。,已知:SZ:AJMP addr11其中,SZ为AJMP addr11指令的标号地址,由该指令在程序存储器中位置确定,addr11为11位地址,试分析该指令执行后的情况以及指令码的确定方法。解:设SZ=4100H,addr11=11010101101B,则根据上述指令码格式可得绝对转移指令的指令码为:,例 3.24,图3.10 转移指令,短转移,机器码:80H rel,本指令是一条双字节双周期指令,在PC内容加2所指地址上,以rel:-128+127 为偏移量,在一页地址(-128+127

28、)范围内实现短转移。,ORG1000H1000H 7401H START:MOV A,#01H;字位码初值送A1002H F8H MOV R0,A;暂存于R01003H 90CF01H LOOP:MOV DPTR,#0CF01H;端口地址CF01H;送DPTR 1017H 80rel SJMPSTART;转入START SJMP$;偏上,例3.25,下列程序中,请计算SJMP START指令码中的rel,并分析目标地址的转移范围。,a)地址偏移量rel的计算:如下关系成立。目标转移地址源地址2rel rel=目标转移地址源地址2 1000H1017H225 rel应采用补码表示,为此rel=-

29、25补E7H,解:SJMP指令中地址偏移量是采用START符号表示的,指明指令执行后转入本程序开头重新执行。,b)转移地址范围的确定:转移地址通常以SJMP 指令始址为参照点,但实际的参照点是对 PC2,因rel的取值范围是128127,故可得到转移地址的实际转移范围为 126129。,.变址寻址转移指令,机器码:73H,该类指令是一条单字节双周期无条件转移指令。在64KB地址范围内无条件转移。,已知:累加器A中放有待处理命令编号0-4,程序存储器中放有始址为MAIN的两字节长转移指令表,试编一程序能使机器按照累加器A中的命令编号转去执行相应的命令程序。,解:程序为:STAR:MOV A,R1

30、RLA;AA*2MOVDPTR,MAIN;转移指令表始址送DPTRJMPADPTRMAIN:AJMPPM0;转入0命令程序AJMP PM1;转入1命令程序AJMP PM2;转入2命令程序AJMP PM3;转入3命令程序AJMP PM4;转入4命令程序 AJMP$;停止,2、条件转移指令,累加器A判零转移(2条),已知:外部RAM中DATA1为始址的数据块以零为结束标志,试编程将之送到以DATA2为始址的内部RAM单元中。,例3.27,解:程序为:ORG 1000H MOV R0,#DATA1;外部RAM数据块始址送R0 MOV R1,#DATA2;内部RAM数据块始址送R1MAIN:MOVX

31、A,R0;取外部RAM数据送A JZ QUIT;若A=0,则跳转到QUIT处,;否则往下执行 MOV R1,A;A中的数据送给内部RAM单元中 INC R0;修改外部RAM地址的指针 INC R1;修改内部RAM地址的指针 SJMP MAIN;循环执行QUIT:SJMP$;停止,CJNE A,#data,rel;不相等转移;#data=A,PC PC+3,C 0;#dataA,PC PC+3+rel,C 1,CJNE A,direct,rel;不相等转移;若A=(direct),则PCPC+3,C0;若A(direct),则PCPC+3+rel,C0;若A(direct),则PCPC+3+re

32、l,C1,不相等转移(影响标志位),CJNE Rn,#data,rel;不相等转移;若Rn=data,则PCPC+3,C0;若Rndata,则PCPC+3+rel,C0;若Rndata,则PCPC+3+rel,C0;若(Ri)data,则PCPC+3+rel,C1,DJNZ direct,rel;(direct)(direct)-1;若(direct)0,则PCPC+3+rel;若(direct)=0,则PCPC+3,DJNZ Rn,rel;Rn Rn1;若Rn=0 则 PC PC+2;若Rn0 则PC PC+2+rel,减一不为零转移,从P2.0输出20个方波解:程序为:ORG 1000H

33、MOV R2,#40;预置方波数 BACK:CPL P2.0;P2.0取反 DJNZ R2,BACK;R2-1不等于0继续循环 SJMP$;停止,例 3.28,调用指令(2条),3、子程序调用和返回指令,机器码:a10 a9 a8 1 0 0 0 1 a7 a6 a5 a4 a3 a2 a1 a0,双字节指令,不影响标志位,在2KB地址范围内寻址,以调用子程序。页数决定于addr11的高3位,页内地址决定于addr11的低8位。,b)长调用指令,;PC PC+3;SP SP+1,(SP)PC70;SP SP1,(SP)PC158;PC addr16,三字节指令,在64KB地址范围内调用子程序。

34、,已知:MAIN0200H,试问执行如下指令后,中数据如何变化?PC中内容是什么?MOVSP,65H MAIN:LCALL2000H 解:执行上述指令后,SP67H、(66H)03H、(67H)02H,PC2000H。,例 3.29,返回指令(2条),RET,PC158(SP),SP SP-1PC70(SP),SP SP-1,调用子程序后必须返回主程序,因此,每种子程序的最后一条指令必须是返回指令RET。返回时完成将调子时压入堆栈的断点地址送回PC以恢复断点功能。堆栈遵循“后进先出”原则。,a)子程序返回指令,b)中断返回指令,中断服务程序的最后一条指令后是中断返主指令。其恢复断点的操作与返回

35、指令RET相同。此条指令前必须将相应的优先级状态触发器清0。,空操作,PC158(SP),SP SP-1PC70(SP),SP SP-1,试利用子程序指令编写出以20H23H单元中的数分别拆字送以50H为首的地址单元中。,例 3.30,解:程序为:ORG 0030H MOV SP,#60HCZCX:MOVR0,#50H;目标首地址 MOVA,20H;拆第一个字 LCALLPTDS;调用拆字子程序 MOV A,21H;拆第二个字 LCALLPTDS;调用拆字子程序 MOV A,22H;拆第三个字 LCALL PTDS;调用拆字子程序 MOV A,23H;拆第四个字 LCALL PTDS;调用拆字

36、子程序 SJMP$;停止,PTDS:MOV B,A;把要拆的字送B保存 ACALL PTDS1;调拆字子程序 MOV A,B;调B中的内容 SWAP A;交换高低位PTDS1:ANL A,#0FH;屏蔽高位,保留低位 MOV R0,A;送目标地址 INC R0;目标地址加1 RET;返回,内部RAM中20H2FH单元是位寻址区和11个可以位寻址的寄存器P0、P1、P2、P3、TCON、SCON、IE、IP、PSW、A、B。,二、位操作类指令(17条),送指令,试编写把00H位中内容和3FH位中内容相交换。解:程序为:MOV C,00H;Cy(00H)MOV 01H,C;暂存于01H位中MOV

37、C,3FH;Cy(3FH)MOV 00H,C;存入目标00H位中MOV C,01H;00H位的原内容送CMOV 3FH,C;存入目标3FH位中SJMP$;停止,例 3.31,位置位和位清零指令(4条),CLR C;Cy 0CLR bit;bit 0SETB C;Cy 1SETB bit;bit 1,位运算指令(6条),ANL C,bit;Cy Cy(bit)ANL C,/bit;Cy Cy/(bit)ORL C,bit;Cy Cy(bit)ORL C,/bit;Cy Cy/(bit)CPL C;Cy/CyCPL bit;bit/bit,位控制转移指令(5条),若条件满足则PC值改变,实现程序的

38、转移。,JC relJNC relJB bit,relJNB bit,relJBC bit,rel;若bit1 则bit=0且PC PC+3+rel,1)ORG伪指令指令格式为:ORG 16位地址,例:ORG0030HMAIN:MOV SP,#60H SJMP$,3.2.8 伪指令,2)END伪指令 指令格式为:END END标号,3)EQU伪指令指令格式为:标识符EQU项或数,例:TIME EQU 34H WEEK EQU 35H MOV A,TIME;ATIME MOV R1,WEEK;R1WEEK,4)DB伪指令指令格式为:标号:DB项或项表,例:ORG2000HTAB:DB03H,04H,05H,06H,07H,08H,5)DW伪指令 指令格式为:DW项或项表,例:ORG1000HTAB:DW0070H,0071H,0072H,6)DS伪指令指令格式为:标识:DS 数字,例:ORG30HDS08H,7)BIT伪指令 指令格式为:标识符 bit 项,例:REGISTER0BITRS0,

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号