资源描述
单击以编辑,母版标题样式,单击以编辑母版文本样式,第二级,第三级,第四级,第五级,*,控制转移指令,1,、无条件转移指令:,长转移类指令:,LJMP addr16,绝对转移类指令:,AJMP addr11,短转移指令:,SJMP,rel,间接转移指令:,JMP A+DPTR,我们在编写汇编语言源程序时,可以直接写成:,LJMP,标号;即转移到标号处,AJMP,标号,SJMP,标号,JMP,标号,2.,条件转移指令,(,8,条),条件转移指令是指在满足一定条件时进行相对转移,否则程序继续执行本指令的下一条指令。,(1),判,A,内容是否为,0,转移指令(,2,条),JZ,rel,;,如果,A=0,,,则转移,否则顺序执行。,JNZ,rel,;,如果,A0,,,就转移。,我们在编写汇编语言源程序时,可以直接写成:,JZ,标号;即转移到标号处。,JNZ,标号;即转移到标号处,(2),比较转移指令(,4,条),CJNE A,,,#data,,,rel,CJNE A,,,direct,,,rel,CJNE,Rn,,,#data,,,rel,CJNE,Ri,,,#data,,,rel,同样地,使用时,我们可以将,rel,理解成标号,即:,CJNE A,,,#data,,,标号,CJNE A,,,direct,,,标号,CJNE,Rn,,,#data,,,标号,CJNE,Ri,,,#data,,,标号,(3),减,1,条件转移指令(,2,条),DJNZ,Rn,,,rel,DJNZ direct,,,rel,3,子程序调用和返回,(1),调用指令(,2,条),LCALL addr16,;,长调用指令,ACALL addr11,;,短调用指令,上面两条指令都是在主程序中调用子程序,两者的区别,:,对短调用指令,被调用子程序入口地址必须与调用指令的下一条指令的第一字节在相同的,2KB,存储区之内。,使用时可以用:,LCALL,标号 ;标号表示子程序首地址,ACALL,标号,来调用子程序。,(2),返回指令(,2,条),子程序执行完后必须回到主程序,如何返回呢?只要执行一条返回指令就可以了。,RET,;,子程序返回指令,RETI,;,中断子程序返回指令,两者不能互换使用。,4.,空操作指令,(,1,条),NOP,例:利用子程序调用编写令,20H-2AH,,,30H-3EH,,,40H-4FH,三个区域清零的程序,ORG 1000H,MOV SP,#70H,MOV R0,#20H,MOV R2,#0BH,ACALL ZERO,MOV R0,#30H,MOV R2,#0FH,ACALL ZERO,MOV R0,#40H,MOV R2,#10H,ACALL ZERO,ZERO:MOV R0,#00H,INC R0,DJNZ R2,ZERO,RET,END,例:从,P1,口的,P1.0,管脚输出周期为,10,个机器周期的方波,CLR P1.0,LOOP:CPL P1.0,NOP,NOP,SJMP LOOP,练习:,1,、已知某单片机监控程序始址为,A080H,,问用什么办法是单片机开机后自动执行监控程序,2,、已知,MA=0500H,,问,8051,单片机执行如下指令,MOV SP,,,#70H,MA,:,LCALL 8192H,堆栈中数据如何变化,,PC,中内容是什么,3,、已知外部,RAM,中以,3000H,为始址的数据块以零为结束标志,试编程将之传送到以,30H,为始址的内部,RAM,区,位操作指令,1,位传送指令,(,2,条),MOV C,,,bit,;,bit C,MOV bit,,,C,;,C bit,这组指令的功能是实现,CY,和其它位地址之间的数据传递。,例,:,MOV C,,,P1.0,;将,P1.0,的状态送给,C,。,MOV P1.0,,,C,;将,C,中的状态送到,P1.0,;,引脚上去。,2,位变量修改指令(,4,条),位清,0,指令,:CLR C,CLR bit,例:,CLR P1.0,;,即使,P1.0,变为,0,位置,1,指令,:,SETB C,SETB bit,例:,SETB P1.0,;使,P.0,变为,1,位取反指令,:,CPL C,CPL bit,3.,位 逻辑运算指令,(,4,条),ANL C,,,bit,ANL C,,,/bit,ORL C,,,bit,ORL C,,,/bit,4.,位控制转移指令(,5,条),(1),判,Cy,转移指令,JC,rel,JNC,rel,第一条指令的功能是如果,Cy=1,就转移,否则就顺序执行。,第二条指令则和第一条指令相反,即如果,Cy=0,就转移,否则就顺序执行。,同样理解:,JNC,标号,(,2,)判位直接寻址位转移指令,JB bit,,,rel,JNB bit,,,rel,JBC bit,,,rel,第一条指令,:,如果指定的(,bit,),=1,,,则转移,否则顺序执行,第二条指令功能相反。,同样理解:,JB bit,,,标号,第三条指令是如果指定的(,bit,),=1,,,则转移,并把该位清,0,,否则顺序执行。,例,1,:内部,RAM,的,M1,和,M2,单元各有一个无符号,8,位二进制数,试编程比较它们的大小,并把大数送到,MAX,单元,MOV A,M1,CJNE A,M2,LOOP,LOOP:JNC LOOP1,MOV A,M2,LOOP1:MOV MAX,A,例,2:,已知外部,RAM,以,2000H,开始有一个数据缓冲区,该缓冲区中数据以回车符(,ASCII,码为,0DH,)为结束标志,试编一程序把正数送入片内,RAM,以,30H,为起始地址的正数区,把负数送入片内,RAM,以,50H,为起始地址的负数区。(假设输入数据不超过,32,个),ORG 0100H,MOV DPTR,#2000H,MOV R0,#30H,MOV R1,#50H,NEXT:MOVX A,DPTR,CJNE A,#0DH,COMP,SJMP DONE,COMP:JB ACC.7,LOOP,MOV R0,A,INC R0,INC DPTR,SJMP NEXT,LOOP:MOV R1,A,INC R1,INC DPTR,SJMP NEXT,DONE:END,
展开阅读全文