Download presentation
Presentation is loading. Please wait.
1
任务五 学习、应用控制转移类指令 单片机应用技术 认知1 掌握无条件转移指令格式及应用
任务五 学习、应用控制转移类指令 上午2时28分 认知1 掌握无条件转移指令格式及应用 通常情况下,程序运行都是按顺序执行的,有时因为操作需要,需要 改变程序的运行方向,即安排程序跳转到其它指定地址去,这就是程序转 移。控制转移类指令的本质是改变程序计数器PC的内容,从而改变程序的 执行方向。控制转移指令分为:无条件转移指令、条件转移指令和调用/返 回指令等,共计17条。转移类指令包含有条件转移和无条件转移两种 1、无条件转移指令 (1)、长转移指令 LJMP addr16 ; addr16→PC 功能:程序跳转到addr16目的地址的地方执行。 用法: addr16表示16位目的地址,通常用字符串代替;字符串一定 要成对出现。 注意:LJMP 为长转移指令,寻址范围是ROM的64K全程空间,即 字符串可以放在ROM的任何地方,LJMP都是可以寻址的。
2
任务五 学习、应用控制转移类指令 单片机应用技术 认知1 掌握无条件转移指令格式及应用 (2)绝对转移指令
任务五 学习、应用控制转移类指令 上午2时28分 认知1 掌握无条件转移指令格式及应用 (2)绝对转移指令 AJMP addr11 ; (PC)+2→PC, ddr11→PC1010-0 功能:程序跳转到addr11目的地址的地方执行。 用法: addr11表示11位目的地址,通常用字符串代替;字符串一定要成 对出现。 注意:AJMP 为绝对转移指令,寻址范围是本指令执行结束后开始的 ROM的2K空间,即字符串可以放在ROM的本指令执行结束后2K范围内, AJMP都是可以寻址的。换句话说,在AJMP本指令执行后(即PC+2后) ,用目的地址的低11位地址和指令本指令高5位地址组成的新地址,就是该 AJMP指令的最终转移地址 。
3
AJMP addr11 ; PC+2PC, addr11 PC.10~PC.0
单片机应用技术 任务7 学习、应用控制转移类指令 上午2时28分 认知1 掌握无条件转移指令格式及应用 AJMP addr11 ; PC+2PC, addr11 PC.10~PC.0 操作码(第一字节) 操作数(第二字节) A10 A9 A8 1 A7 A6 A5 A4 A3 A2 A1 A0 程序计数器PC PC高5位 (保持不变) PC低11位 11位转移地址的形成示意图
4
任务7 学习、应用控制转移类指令 单片机应用技术 认知1 掌握无条件转移指令格式及应用 3、 相对转移指令
任务7 学习、应用控制转移类指令 上午2时28分 认知1 掌握无条件转移指令格式及应用 3、 相对转移指令 SJMP rel ; (PC)+2+rel→PC 功能:程序跳转到rel目的地址的地方执行。 用法: rel表示8位目的地址,通常用字符串代替;字符串一定要成对 出现。 注意:SJMP 为相对转移指令,寻址范围是本指令的下一条指令为中心的-128~+127字节以内,即字符串可以本指令结束的-128~+127字节范围内,S JMP都是可以寻址的。(4) 散转指令 4、 散转指令 JMP @A+DPTR ; (A)+(DPTR) →PC 功能:程序跳转到(A+DPTR)目的地址的地方执行。 由于累加器A和数据指针DPTR都可以赋值,因此使用很灵活;一般用于 多重分支场合,通常做键处理功能。
5
任务7 学习、应用控制转移类指令 单片机应用技术 认知2 掌握有条件转移指令格式及应用
任务7 学习、应用控制转移类指令 上午2时28分 认知2 掌握有条件转移指令格式及应用 所谓有条件转移指令是指当条件满足试,就转移执行,条件不满足 就顺序执行。 1. 累加器判断转移指令 (2条) JZ rel ; 若A=0, 则PC+2+rel→PC, 程序转移执行 若A≠0, 则PC+2→PC, 程序顺序执行 JNZ rel ; 若A≠0, 则PC+2+rel→PC, 程序转移执行 若A=0, 则PC+2→PC, 程序顺序执行 这两条指令均是以累加器A的内容作为判别条件的,而且是互反指令 ,使用时要注意。Rel为地址偏移量,编程时可以用字符串代替,但一定 要成对出现,而且一定要放在本指令结束的-128~+127字节范围内。
6
任务7 学习、应用控制转移类指令 单片机应用技术 认知2 掌握有条件转移指令格式及应用
任务7 学习、应用控制转移类指令 上午2时28分 认知2 掌握有条件转移指令格式及应用 【例3-23】试编程将内RAM以30H开始的数据块传送到外RAM40HA开始 的单元中,遇0中止。 分析:这是一个条件判断的传送数据块程序,是否传送取决于累加器A中的 值。因此判断是传送的前提,就用到累加器判断转移指令。详细如下: 源程序:MOV R0, #30H ;定义取数的首地址 MOV R1, #40H ;定义放数的首地址 MP3: MOV A, @R0 ;取数到累加器A中 JZ LOOP ;判断累加器A中值是否为0, 是0转移到结束 MOVX @R1, A ;将数据送到指定单元 INC R ;构造新的取数单元 INC R ;构造新的放数单元 SJMP MP ;返回重新判断 LOOP: SJMP $ ;程序原地等待
7
任务五 学习、应用控制转移类指令 单片机应用技术 认知2 掌握有条件转移指令格式及应用 2. 比较不等转移指令 (4条)
任务五 学习、应用控制转移类指令 上午2时28分 认知2 掌握有条件转移指令格式及应用 2. 比较不等转移指令 (4条) CJNE A, #data, rel ; 若(A)=data, 则PC+3→PC,顺序执行,且Cy=0; 若(A)<data, 则PC+3+rel→PC,转移执行,且 Cy=1; 若(A)>data, 则PC+3+rel→PC,转移执行,且 Cy=0 CJNE A, direct, rel ; 若(A)=(direct), 则PC+3→PC,顺序执行,且Cy=0; 若(A)<(direct),则PC+3+rel→PC,转移执行,且 Cy=1; 若(A)>(direct),则PC+3+rel→PC,转移执行,且 Cy=0 CJNE Rn, #data, rel ; 若(Rn)=data, 则PC+3→PC,顺序执行,且Cy=0; 若(Rn)<data, 则PC+3+rel→PC,转移执行,且 Cy=1; 若(Rn)>data, 则PC+3+rel→PC,转移执行,且 Cy=0 CJNE @Ri, #data, rel ; 若((Ri))=data, 则PC+3→PC,顺序执行,且Cy=0; 若((Ri))<data, 则PC+3+rel→PC,转移执行,且 Cy=1; 若((Ri))>data, 则PC+3+rel→PC,转移执行,且 Cy=0
8
任务五 学习、应用控制转移类指令 单片机应用技术 认知2 掌握有条件转移指令格式及应用
任务五 学习、应用控制转移类指令 上午2时28分 认知2 掌握有条件转移指令格式及应用 【例3-24】已知内RAM30H单元存放一自变量X,试编程求下列函数的值Y,并将结果送到内RAM40H单元中。函数表达式如下: 源程序: MOV A, 30H ;读取自变量X到A中 JNZ MP ;判断自变量X不等于0 MOV 40H, #00H ;自变量X等于0,送0到40H单元中 SJMP $ MP3: ANL A, #80H ; 自变量X与立即数80H相“与”,是看符号 JNZ MP ; 与立即数80H相“与”,结果不是0为负数 MOV 40H, #01H ; 与立即数80H相“与”,结果是0是正数, SJMP $ ;返回重新判断 MP4: MOV 40H, #0FFH ;是负数,将-1的补码0FFH送到40H SJMP $ ;程序原地等待
9
任务五 学习、应用控制转移类指令 单片机应用技术 认知2 掌握有条件转移指令格式及应用 3. 减1条件转移指令 (2条)
任务五 学习、应用控制转移类指令 上午2时28分 认知2 掌握有条件转移指令格式及应用 3. 减1条件转移指令 (2条) DJNZ Rn, rel ; (Rn)-1→Rn, 若(Rn)≠0,则PC+2+rel→PC, 转移执行 若(Rn)=0, 则PC+2→PC, 顺序执行 DJNZ direct, rel; (direct)-1→direct, 若(direct)≠0,则PC+2+rel→PC, 转移执行 若(direct)=0, 则PC+2→PC, 顺序执行 功能:指令的操作数是先将操作数(Rn或者direct)的内容减1,并保存减1的结果,如果减1后的结果不等0就转移,否则就顺序。 注意: (1)DJNZ指令通常用于循环程序中控制循环次数。 (2)转移范围与SJMP指令相同。 (3)DJNZ指令在进行循环次数判断时,有两种情况:即先判断和先执行;当先判断时,定义次数时,N=n+1;当先执行时,N=n
10
任务7 学习、应用控制转移类指令 单片机应用技术 认知2 掌握有条件转移指令格式及应用
任务7 学习、应用控制转移类指令 上午2时28分 认知2 掌握有条件转移指令格式及应用 【例3-25】试编程将内RAM以30H开始的10B个无符号数相加,并 将结果送到内RAM50H单元中。(设结果小于100H) 分析:该题是求和,而且数据是10个,可以采用控制数据个数来完 成相加求和,详细如下: 源程序: MOV R0, #30H ;定义求和的首地址 MOV R7, #0AH ; 定义求和的数据个数 MOV A, #00H MP3: ADD A, @R0 ; 求和运算 INC R0 DJNZ R7, MP3 ; 判断数据是否相加完毕 MOV 40H, A ;将结果送到40H中
11
认知3 掌握子程序调用及返回指令和空操作指令格式及应用
单片机应用技术 任务7 学习、应用控制转移类指令 上午2时28分 认知3 掌握子程序调用及返回指令和空操作指令格式及应用 1. 子程序调用和返回指令(4条) (1)调用指令(2条) LCALL addr16 ;(PC)+3→PC (SP)+1→SP,, PC0-7→(SP) (SP)+1→SP, PC8-15→(SP) addr16→PC ACALL addr11 ;(PC)+2→PC (SP)+1→SP, PC0-7→(SP) (SP)+1→SP, PC8-15→(SP) addr11→PC10-0 功能:调用指令是程序自动调用子程序,运行子程序后并返回主程序过程。 注意: (1)addr16和addr11就是子程序的地址,在编程时可以用字符串代替,且成对出现,出现的范围和LJMP和AJMP的相同。 (2)主程序在调用时,首先要进行断点保护,然后再构造目的地址,最后调用。 (3)使用子程序调用时,应在主程序中设置堆栈指针SP的值。
12
认知3 掌握子程序调用及返回指令和空操作指令格式及应用
单片机应用技术 任务7 学习、应用控制转移类指令 上午2时28分 认知3 掌握子程序调用及返回指令和空操作指令格式及应用 (2)返回指令(2条) 子程序返回指令RET RET ; ((SP))→(PC)15-8 ,(SP)-1→SP ((SP))→(PC)7-0 (SP)-1→SP (3)中断返回指令RET(1条) RETI ; ((SP))→(PC)15-8 ,(SP)-1→SP 功能:都是返回指令,其实质都是从堆栈中自动恢复断点进入PC实现。 注意: (1)RET和RETI都是返回指令,都是在子程序或者中断服务程序的最后一句。 (2)RET是子程序返回,RETI是中断返回。 (3)该指令结果不影响程序状态字寄存器PSW。
13
认知3 掌握子程序调用及返回指令和空操作指令格式及应用
单片机应用技术 任务五 学习、应用控制转移类指令 上午2时28分 认知3 掌握子程序调用及返回指令和空操作指令格式及应用 【例3-26】 试编程实现c=a2+b2 设 a、b、c(a、b均小于10)分别存放于内RAM的30H、31H、和32H中。 分析:该题实现平方和,可以采用乘法指令,也可以采用调用指令(a2 和b2 有相同的运算法则),现采用查表和子程序相结合的方法实现该功能。详细如下: 源程序: MOV A, 30H ; 将a送到累加器A中 LCALL SQR ;调用以SQR为标示符的子程序 MOV R1, A ;将a2 的值暂存到R1中 MOV A, 31H ; 将b送到累加器A中 ADD A, R ;实现a2+b2 MOV 32H, A ;将结果送到32H中 SJMP $ SQR: INC A ;获得参数a MOVC A, @A+PC ;查表计算平方值 RET TAB: DB 0,1,4,9,16,25,36,49,64,91 END
14
任务7 学习、应用位操作指令 单片机应用技术 1. 位传送指令(2条) MOV C, bit ;(bit)→Cy
任务7 学习、应用位操作指令 上午2时28分 1. 位传送指令(2条) MOV C, bit ;(bit)→Cy MOV bit, C ;(Cy)→bit 2. 位置位、清零、取反指令(6条) SETB C ; 1→Cy CLR bit ; 0→bit CPL C ; →cy SETB bit ; 1→bit CLR C ; 0→Cy CPL bit ;→bit 3. 位运算指令(4条) ANL C, bit ;(Cy)∧( bit)→Cy ANL C, /bit ;(Cy)∧→Cy ORL C, bit ;(Cy)∨( bit)→Cy ORL C, /bit ;(Cy)∨→Cy
15
任务7 学习、应用位操作指令 单片机应用技术 4、位控制转移指令(5条)
任务7 学习、应用位操作指令 上午2时28分 4、位控制转移指令(5条) JC re ; 若(Cy)=1,则PC+2+rel→PC,程序转移执行; 若(Cy)=0,则PC+2→PC,程序顺序执行 JNC rel ;若(Cy)=0,则PC+2+rel→PC,程序转移执行; 若(Cy)=1,则PC+2→PC,程序顺序执行 JB bit, rel ;若(bit)=1,则PC+3+rel→PC,程序转移执行; 若(bit)=0,则PC+3→PC,程序顺序执行 JNB bit, rel; 若(bit)=0,则PC+3+rel→PC,程序转移执行; 若(bit)=1,则PC+3→PC,程序顺序执行 JBC bit, rel;若(bit)=1,则PC+3+rel→PC,程序转移执行 且 →bit;
Similar presentations