- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8、80C51控制转移类指令及位操作指令 101101
第三章 80C51单片机指令系统 控制转移类指令 例:某应用系统外扩了8K字节RAM,要求把内部RAM的20H~2FH单元内容发送到外部RAM的800H~80FH单元中。 执行指令: MOV DPTR,#800H MOV R0,#20H MOV R7,#10H AGAIN:MOV A,@R0 MOVX @DPTR,A INC R0 INC DPTR DJNZ R7,AGAIN ?:请将以上循环控制改用CJNE指令来实现 ?:请将以上循环控制改用JZ指令来实现 例:设(SP)=60H,(PC)=0123H,子程序SUBRTN的首地址为3456H。 执行指令为 LCALL SUBRTN 思考:AJMP LJMP 与 ACALL LCALL的区别? 第三章 80C51单片机指令系统 布尔(位)操作类指令 布尔操作类指令中位地址可用以下多种方式表示,这些方式均能为80C51的汇编程序所识别: 直接用位地址0~255或0~FFH表示; 采用字节地址的位数方式表示,两者之间用“.”隔开,如: 20H.0; 1FH.7等 采用字节寄存器名加位数表示,两者之间用“.”隔开,如: P1.5;PSW.5等; 采用位寄存器的定义名称表示,如:F0。 如: 位地址D5H、F0、D0. 5、PSW.5等表示的是同一位。 MOV C,bit ;(C)←(bit) MOV bit,C ;(bit)←(C) ? 功能:将源操作数(位地址或布尔累加器)送到目的操作数(布尔累加器或位地址)中去。 布尔传送指令 例:设(C)=1, 执行指令: MOV P1.3,C, 执行结果为 P1.3口线输出“l”。 例:设P1口的内容, 执行指令: MOV C,P1.3, 执行结果为(C)=1。 3.6.1 布尔传送指令 ?1. 位清除(CLR)指令 ? CLR C ;(C)←0 CLR bit ;(bit)←0 ? 功能:将C或指定位(bit)清0。 例:设P1口的内容为1 1 1 1 1 0 1 0 B,执行指令为CLR P1.0后,(P1)=1 1 1 1 1 0 1 0 B 。 2. 位置1(SETB) 指令 SETB C ;(C)←l SETB bit ;(bit)←1 功能:将C或指定位(bit)置1。 布尔状态控制指令 磨砺当如百炼之金,急就者,非邃养; * ?本讲教学内容: 控制转移类指令 程序的顺序执行是由PC自动加1来实现的,但在应用系统中,往往会遇到一些情况,需要强迫改变程序执行顺序,比如调用子程序,比如根据检测值与设定值的比较结果要求程序转移到不同的分支入口等。要改变程序的执行顺序进行分支转向,应通过强迫修正PC值得方法来实现,这就是控制转移类指令的基本功能。 80C5设有丰富的控制转移指令,可分为无条件转移指令、条件转移指令、循环转移指令、子程序调用和返回指令及空操作指令等。 采用助记符有:AJMP、LJMP、SJMP、JZ、JNZ、CJNE、DJNZ、ACALL、LCALL、RET、RETI、NOP等13种。 条件转移指令仅仅在满足指令中规定的条件(如累加器内容是否为零,两个操作数是否相等) 时才执行无条件转移,否则程序顺序执行。 6条指令可分为累加器判零转移指令、数值比较转移指令和减1条件转移指令。 条件转移指令 ⒈ 累加器判零转移指令 JZ rel ;若(A)=0,则(PC)=(PC+2)+rel ;若(A)≠0,则(PC)=(PC)+2 JNZ rel ;若(A)≠0,则(PC)= (PC+2)+rel ;若(A)=0,则(PC)=(PC)+2 ? 满足各自条件时,程序转向指定的目标地址执行(相当于执行SJMP rel) 。当不满足各自条件时,程序顺序往下执行。 偏移量rel是用补码形式表示的带符号的8 位数,因此.程序转移的目标地址为指令前128 B或指令后 127 B。 这些指令执
文档评论(0)