计算机导论 6.5—控制转移-位操作指.ppt
新编电类专业计算机基础6.5 控制转移指令1目目 录录 6.5.1 条件转移指令条件转移指令6.5.2 无条件转移指令无条件转移指令6.5.3 调用和返回指令调用和返回指令6.5.4 空操作指令空操作指令2条件转移指令比较不等转移指令3减1不为0转移指令1判断累加器A是否为0转移指令2程序执行过程中满足一定条件时发生转移。3减1不为0转移指令 指令格式指令格式指令功能指令功能机器码机器码若(direct)1 0,则(PC)(PC)+3+rel若(direct)1=0,则(PC)(PC)+3 DJNZ direct,rel11010101directrel address若(Rn)1 0,则(PC)(PC)+2+rel若(Rn)1=0,则(PC)(PC)+2 DJNZ Rn,relrel address11011rrr22222周期周期4减1不为0转移指令(PC)=(PC)+(Rn)=(Rn)1 0?DJNZ Rn,relN下条指令(PC)=(PC)+relYDJNZ direct,relDecrement Jump if not Zerorel:8位有符号二进制数操作码2(PC)=(PC)+3(direct)=(direct)1 0?N下条指令(PC)=(PC)+relY常用于控制程序循环5范例用DJNZ指令实现延时程序。Delay:MOV R7,#4FH NOPDelay1:DJNZ R7,Delay1R7=4FH(79)空指令R7减1,不为0循环等待标号:当前语句所在地址6偏移量rel计算 地址操作码和操作数 助记符0000 0000 0111 1111 MOV R7,#4FH0000 0001 0100 11100000 0010 0000 0000 NOP0000 0011 1101 1111 DJNZ R7,Delay10000 0100rel=目标地址 转移指令所在地址 2 1111 1110目标地址=0003H 0003H 2 =(-2)补=111111107判断累加器A是否为0转移指令 指令格式指令格式指令功能指令功能机器码机器码若 ,则(PC)(PC)+2+rel 若(A)0,则(PC)(PC)+2 1.JZ relrel address01100000若 ,则(PC)(PC)+2+rel 若(A)=0,则(PC)(PC)+2 2.JNZ relrel address01110000Jump if Accumulator not Zero(A)=0(A)0周期周期228比较不等转移指令 指令格式指令格式指令功能指令功能机器码机器码1.CJNE A,direct,rel2.CJNE A,#data,rel若(A)=data,则(PC)(PC)+3,CY 0 若(A)data,则(PC)(PC)+3+rel,CY 0 若(A)(direct),则(PC)(PC)+3+rel,CY 0 若(A)data(Rn)data,则(PC)(PC)+3+rel,CY 0 若(Ri)data,则(PC)(PC)+3+rel,CY 1 10111rrrCompare Jump if not Equal51指令系统唯一的三操作数指令组10目目 录录 6.5.1 条件转移指令条件转移指令6.5.2 无条件转移指令无条件转移指令6.5.3 调用和返回指令调用和返回指令6.5.4 空操作指令空操作指令11无条件转移指令1.SJMP rel 指令功能:指令功能:(PC)机机 器器 码:码:1000 0000 xxxx xxxx 2.AJMP addr11 指令功能指令功能:(PC)(PC)+2 PC10 PC0 机机 器器 码:码:a10a80 0001 a7a0 3.LJMP addr16 指令功能指令功能:(PC)机机 器器 码:码:0000 0010 xxxx xxxx xxxx xxxx 4.JMP A+DPTR 指令功能指令功能:(PC)机机 器器 码:码:0111 0011双周期无条件转移Short JumpShort JumpAbsolute JumpAbsolute Jumpaddr11addr16Long JumpLong Jump跳转范围2KB跳转范围64KBJumpJump indirect relativeindirect relative to the DPTR to the DPTR(PC)+2+rel(A)+(DPTR)实现分支转移分支转移12目目 录录 6.5.1 条件转移指令条件转移指令6.5.2 无条件转移指令无条件转移指令6.5.3 调用和返回指令调用和返回指令6.5.4 空操作指令空操作指令13调用指令 指令格式指令格式指令功能指令功能机器码机器码1.ACALL addr112.LCALL addr16a10 a810001(PC)(PC)+2(SP)(SP)+1,(SP)(PC7 0)(SP)(SP)+1,(SP)(PC15 8)(PC100)addr11a7 a0(PC)(PC)+3(SP)(SP)+1,(SP)(PC7 0)(SP)(SP)+1,(SP)(PC15 8)(PC150)addr160001 0010a15a8a7a0调用子程序22周期周期14返回指令 指令格式指令格式指令功能指令功能机器码机器码3.RET4.RETI0010 0010(PC158)(SP),(SP)(SP)-1 (PC70)(SP),(SP)(SP)-1 0011 0010(PC158)(SP),(SP)(SP)-1 (PC70)(SP),(SP)(SP)-1 返回调用程序周期周期2215堆栈区子程序调用与返回主程序PC指令1指令2ACALLaddraddr+1addr+2addr+3addr+4addr+5子程序addr+naddr11addr11+naddr11+1产生断点addr11+mPC70SPPC158自动保存断点地址RET指令1指令2指令n指令4指令n调用子程序返回主程序自动恢复断点地址程序继续执行16范例用ACALL实现子程序调用。Main:MOV A,#55HLoop:ACALL DisplayAJMP Loop用RET实现子程序调用。Display:MOV P1,A RET子程序名,通常以标号表示u用LCALL调用64KB 范围内的子程序u 用RET返回程序服务 子程序u用RETI返回中断服 务子程序17调用和返回指令指令区别自动保存断点地址,使用RET指令可返回使用RET指令不可返回无条件转移指令调用指令18目目 录录 6.5.1 条件转移指令条件转移指令6.5.2 无条件转移指令无条件转移指令6.5.3 调用和返回指令调用和返回指令6.5.4 空操作指令空操作指令19空操作指令TextTextText 指令功能:指令功能:(PC)(PC)+1 机机 器器 码:码:0000 0000 主要应用:主要应用:延时延时一个机器周期一个机器周期NOP20新编电类专业计算机基础6.6 位操作指令21目目 录录 6.6.1 位位传传送指令送指令6.6.3 位位逻辑逻辑运算指令运算指令 6.6.2 位状位状态态操作指令操作指令 6.6.4 位条件位条件转转移指令移指令22位传送指令MOV C,bit (cy)(bit)指令格式指令格式指令功能指令功能10100010,direct机器码机器码MOV bit,C(bit)(cy)10010010,direct12周期周期作为暂存器 位直接地址间不能直接传送,需借助布尔累加器C23范例MOVP1,#00001000BMOVC,P1.3MOVP1.5,CSJMP 0007H先置位P1.3,再通过C置位P1.5,发光二极管指示端口状态。P1.3=1,P1.5=0C=1C=1,则P1.5=1原地跳转24位传送指令MOV C,bit (CY)(bit)指令格式指令格式指令功能指令功能10100010,机器码机器码MOV bit,C(bit)(CY)10010010,12周期周期directdirect片内RAM、SFR中位地址。25当bit为P0P3中某位MOV P1.5,C内部总线5VP1.X引脚读引脚P1端口内部结构锁存器QCLDQ读锁存读字节改位写字节dataData写锁存 bit为P0,P1,P2,P3中某位时,非真正位操作指令26目目 录录 6.6.1 位位传传送指令送指令6.6.3 位位逻辑逻辑运算指令运算指令 6.6.2 位状位状态态操作指令操作指令 6.6.4 位条件位条件转转移指令移指令27 指令格式指令格式指令功能指令功能机器码机器码位状态操作指令操作累加器C操作位地址 CLR C (C)0 1100 0011 1 SETB C (C)1 1101 0011 1 CPL C (C)(C)1011 0011 1周期周期 CLR bit (bit)0 11000010,direct 1 SETB bit (bit)1 11010010,direct 1 CPL bit (bit)(bit)10110010,direct 1不影响标志位28目目 录录 6.6.1 位位传传送指令送指令6.6.3 位位逻辑逻辑运算指令运算指令 6.6.2 位状位状态态操作指令操作指令 6.6.4 位条件位条件转转移指令移指令29位逻辑运算指令ANL C,bit(CY)(CY)(bit)指令格式指令格式指令功能指令功能10000000,direct机器码机器码ORL C,bit(CY)(CY)+(bit)01110010,directORL C,bit(CY)(CY)+(bit)10100000,directANL C,bit(CY)(CY)(bit)10000010,direct无位异或指令,可用逻辑与、或及取反指令予以实现2周期周期22230目目 录录 6.6.1 位位传传送指令送指令6.6.3 位位逻辑逻辑运算指令运算指令 6.6.2 位状位状态态操作指令操作指令 6.6.4 位条件位条件转转移指令移指令31位条件转移指令 指令格式指令格式指令功能指令功能机器码机器码判断累加器C判断位地址 JC rel01000000rel address若CY=0,则PC (PC)+2若CY=1,则PC (PC)+2+rel JNC rel01010000rel address若CY=0,则PC (PC)+2+rel若CY=1,则PC (PC)+2 22周期周期222 JB bit,rel01010000direct若(bit)=0,则PC (PC)+3 若(bit)=1,则PC (PC)+3+rel rel address JNB bit,rel00110000direct若(bit)=0,则PC (PC)+3+rel 若(bit)=1,则PC (PC)+3 rel address JBC bit,rel00010000directrel address若(bit)=0,则PC (PC)+3 若(bit)=1,则PC (PC)+3+rel (bit)0 32PC=PC+2C=1?位条件转移指令JC relN下条指令PC=PC+relYJNC relPC=PC+relPC=PC+2C=0?Y下条指令NJump if Carry is SetJump if Carry not Set33位条件转移指令JB bit,relPC=PC+3bit=1?N 下条指令PC=PC+relYJBC bit,relbit=0?PC=PC+3下条指令NJump if the Bit is setJump if the Bit is Set and Clear the Bitbit=0YPC=PC+rel34位条件转移指令JNB bit,relN 下条指令PC=PC+3bit=0?PC=PC+relYJump if the Bit is Not set35