CH3 MCS-51单片机指令系统-5_第1页
CH3 MCS-51单片机指令系统-5_第2页
CH3 MCS-51单片机指令系统-5_第3页
CH3 MCS-51单片机指令系统-5_第4页
CH3 MCS-51单片机指令系统-5_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

自动化核心专业课单片机及接口技术Single-ChipMicrocomputer&InterfaceTechnologyCH3MCS-51单片机指令系统及汇编程序设计(第5讲)主讲人:于水娟主要内容§3-4MCS-51单片机指令系统3.4.4控制转移类指令思考练习题3.4.5位操作指令3.4.4控制转移类指令(17条)控制程序转移指令主要是修改程序计数器PC的内容。大多不影响标志位。分四类:(一)无条件转移指令(4条)(二)条件转移指令(8条)(三)子程序调用与返回指令(4条)(四)空操作指令(1条)§3-4MCS-51单片机指令系统

1、长转移指令LJMP addr16功能:PC←addr16

00000010a15…………a8a7…………a0指令格式:三字节(一)无条件转移指令(4条)

程序执行到这条指令一定要转移!由于addr16是16位,转移的目标地址范围是程序存储器的0000~FFFFH,达64KB。§3-4MCS-51单片机指令系统2、绝对转移指令AJMPaddr11指令格式:双字节

a10a9a800001a7…………a0指令中只给出要转移的11位地址功能:①(原PC)+2→PC②PC10~0←addr11,(PC15~11)不变§3-4MCS-51单片机指令系统例题:LOOP:AJMPaddr11已知:addr11=00111110000B(1)当LOOP为1030H时,指令存放在1030H和1031H,指令执行后程序转移到?例题:LOOP:AJMPaddr11已知:addr11=00111110000B(条件同前)(2)当LOOP为3030H时,程序转移到?3、短转移指令(相对转移指令)

SJMPrel

指令给出转移地址的偏移量rel

10000000rel

PC←(原PC)+2+rel功能:指令格式:双字节:§3-4MCS-51单片机指令系统例1:LOOP:SJMPrel;

已知:LOOP=2000H,rel=54H

相对寻址过程如图:正数表示正向(向前)转移偏移量rel的含义和计算:rel是8位二进制补码表示的带符号数范围:-128~+1270~+127对应表示:00H~7FH-128~-1对应表示:80H~FFH目的地址=转移地址=(原PC)+2+rel目的地址=转移地址=(当前PC)+rel

rel

=目的地址-(当前PC)§3-4MCS-51单片机指令系统例2:LOOP:SJMPrel

已知LOOP=2000H,转移目的地址=2000H计算rel:rel=目的地址-(当前PC)=2000H-2002H=-2H(FEH)另一种汇编格式: LOOP:SJMP2000H

LOOP:SJMPrel(2000H:SJMP2000H)

执行过程负数表示反向(向后)转移4、长相对转移指令(又称散转指令)

JMP @A+DPTR

单字节指令:

01110011功能:PC←(A)+(DPTR)DPTR内容为基址,A的内容作变址(A是8位无符号二进制数)。只要把DPTR的值固定,而给A赋以不同的值,即可实现程序的多分支转移。可代替众多的判别跳转指令。§3-4MCS-51单片机指令系统当(A)=0时,转到2000H单元

当(A)=1时,转到2002H单元例:键盘上有四个操作键,用来控制电机的运转,请编出键盘译码程序。键功能键值处理程序正转0ZZ反转1FZ快速2KS慢速3MS指令表指令地址指令2000HAJMPZZ2002HAJMPFZ2004HAJMPKS2006HAJMPMS当(A)=0时,转2000H单元

当(A)=1时,转2002H单元MOVDPTR,#2000H;2000H为基址MOVA,#NUMB;取键值RLA;完成乘2操作JMP@A+DPTR;转操作键处理程序AJMPZZ;转正转程序AJMPFZ;转反转程序AJMPKS;转快速程序AJMPMS ;转慢速程序…………2000H2002H2004H2006H由于AJMP是两字节指令,在散转前对A的内容乘2思考:若将AJMP换成LJMP,则如何改写程序?(二)条件转移指令(8条)

都是相对转移指令条件转移指令是:程序执行到这条指令时若满足条件就转移;不满足条件就不转移,仍按原来顺序继续执行下一条指令。§3-4MCS-51单片机指令系统1、累加器判零转移指令(2条)

JZrel

当(A)=0,则转移PC=(原PC)+2+rel当(A)≠0,则程序顺序执行(原PC)+2→PCJNZrel

当(A)≠0,则转移PC=(原PC)+2+rel当(A)=0,则程序顺序执行(原PC)+2→PC

§3-4MCS-51单片机指令系统例题:0100H:JZ LAB1

0102H:DECA

0103H:JZ LAB2设(A)=01H,LAB1=01B0H,LAB2=0150H计算2个偏移量确定程序转向1)rel1=01B0H-0102H=AEH2)rel2=0150H-0105H=4BH3)程序转向LAB2=0150H2、比较不相等转移指令〔两数不等转移指令〕(4条)CJNEA,direct,rel CJNEA,#data,rel CJNERn,#data,relCJNE@Ri,#data,rel

都是三字节指令!§3-4MCS-51单片机指令系统格式:

CJNE(左操作数),(右操作数),rel功能:(左操作数)-(右操作数)①比较两数是否相等不相等:转移为(原PC)+3+rel→目的PC相等:顺序执行(原PC)+3→PC②比较大小若(左操作数)>

(右操作数)则置Cy=0,否则Cy=1指令执行后操作数不变!§3-4MCS-51单片机指令系统3、循环转移指令〔减1不为0转移指令〕(2条)操作:(Rn)-1→Rn若Rn≠0,循环转移到(原PC)+2+rel→PC若Rn=0,顺序执行(原PC)+2→PC功能:用于控制程序的循环次数,Rn作循环次数计算器。1)DJNZRn,rel

操作码rel

占两个字节§3-4MCS-51单片机指令系统2)DJNZdirect,rel操作:(direct)-1→direct若direct≠0,循环转移(原PC)+3+rel→PC若direct=0,顺序执行(原PC)+3→PC功能:用于控制程序的循环次数。direct作循环次数计算器。11010101directrel三个字节3、循环转移指令(2条)〔减1不为0转移指令〕§3-4MCS-51单片机指令系统例:将内部RAM从40H开始的连续20个单元的数据,传送到外部RAM从2000H开始的连续单元中。解:ORG 1000HMOV R1,#20 ;置循环次数 MOV R0,#40H MOV DPTR,#2000H LOOP:MOV A,@R0 MOVX @DPTR,A INCR0 INCDPTR DJNZ R1,LOOP SJMP $

END思考:遇到第一个0,立刻停止传送?(三)子程序调用和返回指令(4条)为何引入子程序?在程序设计中,常出现几个地方都需要进行功能完全相同的处理,为减少程序编写和调试的工作量,使某一段程序能被公用,于是引入了主程序和子程序的概念。

什么叫子程序?常把具有一定功能的公用程序段作为子程序而单独编写,当主程序需要引用这一子程序时,可利用调用指令CALL对子程序进行调用。在子程序末尾安排一条返回指令RET,使子程序执行结束后能返回主程序。§3-4MCS-51单片机指令系统返回2返回1第2次调用第1次调用子程序DELAY主程序断点断点主程序调用子程序以及从子程序返回示意图§3-4MCS-51单片机指令系统1、长调用指令LCALLaddr16

指令存储格式:占3个字节指令功能:1)当前PC{断点地址(PC+3)}压栈;2)16位子程序入口地址addr16→PC。

※LCALL可调用程序存储器64kB范围内任一子程序。00010010a15…….a8a7…….a0§3-4MCS-51单片机指令系统例:执行指令LCALLSUB

设:(SP)=40H,(PC)=1200H,子程序入口地址SUB为5500H。(PC)=5500H执行结果:2、绝对调用指令ACALLaddr11

指令存储格式:占2个字节功能:1)当前PC{断点地址(PC+2)}压栈;2)11位子程序入口地址addr11→PC10~0,(PC15~11)不变。※只可调用在ACALL指令后2kB范围内的子程序。a10a9a810001a7…………a0§3-4MCS-51单片机指令系统例:执行指令: ACALLSUB

设:(SP)=40H,(PC)=2200H,子程序入口地址SUB为2355H。(PC)=0010

001101010101B=2355H因为:SUB=2355H=00100

01101010101执行结果:3、子程序返回指令:RET定义:返回指令是使CPU从子程序返回到主程序的指令。功能:从堆栈中自动弹出断点地址(栈顶两个连续元)→PC。PC15~8←((SP)),SP←(SP)-1PC7~0←((SP)),SP←(SP)-1§3-4MCS-51单片机指令系统4、中断返回指令RETI(了解)定义:该指令除了执行RET指令的操作外,还清除内部相应的中断优先级有效触发器。因此,中断服务程序必须以RETI为结束指令。功能:从栈顶两个连续单元弹出断点地址→PC清除内部相应的中断优先级有效触发器§3-4MCS-51单片机指令系统(四)空操作指令:NOP

操作:(原PC)+1→PC功能:仅使PC加1,然后继续执行下条指令,无任何其它操作。00000000作用:延时程序中产生一个机器周期的延迟调试程序中用为单周期、单字节指令§3-4MCS-51单片机指令系统3.4.5位操作类指令(17条)MCS-51单片机内设置了独立的布尔处理器,它具有相应的一套位操作指令。位存储器:在进行位操作时,进位标志Cy作位累加器C。片内RAM字节地址为20H~2FH的连续128位(00H~7FH)能被8整除的SFR的83位(80H~FFH)位操作指令可实现传送、逻辑运算、控制程序转移等功能§3-4MCS-51单片机指令系统位地址的5种表示方式:直接位地址:0~255或00H~FFH。位名称:F0(PSW的),TI(SCON的),EA(IE的)单元地址.位:25H.0→28H,20H.0→00H专用寄存器符号.位:P0.5,PSW.5伪指令定义的符号:USR:BITF0§3-4MCS-51单片机指令系统(一)位传送指令(2条)MOVC,bit;(bit)→Cy MOVbit,C;(Cy)→bit 双字节Bit是位地址,可有5种表示方式。§3-4MCS-51单片机指令系统(二)位置位清0指令(4条)清0:CLR C ;C←0CLR bit ;bit←0置1:SETB C ;C←1SETB bit ;bit←1§3-4MCS-51单片机指令系统(三)位逻辑运算指令(6条)位逻辑”与”运算ANLC,bit;(Cy)∧(bit)→CyANLC,/bit;(Cy)∧(/bit)→Cy 位逻辑”或”运算ORLC,bit ;(Cy)∨(bit)→CyORLC,/bit ;(Cy)∨(/bit)→Cy取反CPL C ;C←/(C)CPL bit ;(bit)←/(bit)§3-4MCS-51单片机指令系统已知:(21H)=FEH,(24H)=80H,(P1)=00HCLR CCPL 08HCLR 27HCPLCMOV 20H,CSETB P1.7(C)=(21H)=(24H)=(P1)=1FFH01H80H分析下面位操作指令顺序执行后的结果:§3-4MCS-51单片机指令系统例:编写实现下列逻辑操作的程序段若(P1.0)=1,(ACC.7)=1,且(OV)=0时,将位累加器CY置1,程序如下:MOVC,P1.0ANLC,ACC.7ANLC,/OV执行结果:当满足给定的条件,必将CY置1。§3-4MCS-51单片机指令系统(四)位条件转移指令(5条)功能:分别检测指定位是1还是0。若条件符合,则转移;条件不符合,则顺序执行。§3-4MCS-51单片机指令系统1、以CY内容为条件的转移指令(2条)

JCrel若(Cy)=1,则转移(原PC)+2+rel→PC若(Cy)=0,则顺序执行(原PC)+2→PCJNCrel若(Cy)=0,则转移(原PC)+2+rel→PC若(Cy)=1,则顺序执行(原PC)+2→PC§3-4MCS-51单片机指令系统2、以位地址内容为条件的转移指令(3条)(3字节)

JBbit,rel若(bit)=1,则转移(PC)+3+rel→PC若(bit)=0,则顺序执行(PC)+3→PCJNBbit,rel若(bit)=0,则转移(PC)+3+rel→PC若(bit)=1,则顺序执行(PC)+3→PCJBCbit,rel(判位变量并清0转移指令)若(bit)=1,则转移(PC)+3+rel→PC且0→bit若(bit)=0,则顺序执行(PC)+3→PC§3-4MCS-51单片机指令系统1.将外部数据存储器RAM从1000H开始的连续单元的数据,传送到内部RAM从40H开始的连续单元,所传送的数据为零时,传送停止。 MOV DPTR,#1000H

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论