第3章指令系统3.ppt

上传人:夺命阿水 文档编号:740186 上传时间:2023-11-02 格式:PPT 页数:61 大小:948.50KB
返回 下载 相关 举报
第3章指令系统3.ppt_第1页
第1页 / 共61页
第3章指令系统3.ppt_第2页
第2页 / 共61页
第3章指令系统3.ppt_第3页
第3页 / 共61页
第3章指令系统3.ppt_第4页
第4页 / 共61页
第3章指令系统3.ppt_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《第3章指令系统3.ppt》由会员分享,可在线阅读,更多相关《第3章指令系统3.ppt(61页珍藏版)》请在课桌文档上搜索。

1、第三章 指令系统及程序设计举例,3.3 89C51指令系统,3.1 汇编语言,3.2 寻址方式,REVIEW:算术运算指令(24条),算术运算指令可以完成加、减、乘、除及加加1和减1等运算。这类指令除INC、DEC指令外,其它运算指令的目的操作数必是A。,REVIEW:逻辑运算及移位指令(24条),例1:从(30H)=X7X6X5X4X3X2X1X0中取出高5位,从(31H)=Y7Y6Y5Y4Y3Y2Y1Y0中取出低3位,拼装后存入40H,(40H)=Y2Y1Y0X7X6X5X4X3,ORG 0030HMOV A,30HSWAP A RL A MOV 40H,A ANL 40H,#000111

2、11B,MOV A,31H MOV B,20H MUL AB ANL A,#11100000B ORL 40H,AHERE:SJMP HERE,例2:设(A)=43H,(CY)=0,则执行指令:RL A;RLC A;RR A;RRC A;,结果为:(A)=86H,(CY)=0(A)=0CH,(CY)=1(A)=06H,(CY)=1(A)=83H,(CY)=0,3.3.4 控制程序转移类指令,通常情况下,程序的执行是顺序进行的,但也可以根据需要改变程序的执行顺序,这种情况称作程序转移。,控制程序的转移要利用转移指令。80C51的转移指令有无条件转移、条件转移及子程序调用与返回等。,控制程序转移类

3、指令(17条),一、无条件转移指令(4条),(1)短转移指令,AJMP addr11;PC(PC)+2,;PC100 addr11 机器代码:2KB范围内的无条件跳转指令转移目标地址:,例:若AJMP指令地址(PC)=2300H。执行指令:AJMP 0FFH后PC值?,(PC)(PC)+2=2302H,(PC)100 00011111111(PC)150=0010000011111111B 20FFH,(2)长转移指令,LJMP提供的是16位地址,因此程序可以转向64KB的程序存储器地址空间的任何单元。,例:设(PC)=0123H,标号JMPADR所指的单元3456H。执行指令为 LJMP J

4、MPADR结果是什么?,(PC)70 56H,(PC)158 34H,执行结果为(PC)=3456H所以,程序转向3456H单元执行。,(3)相对转移(短转移)指令,SJMP rel;PC(PC)+2;PC(PC)+rel rel 是一个带符号的偏移字节数(2的补码),取值范围为 127 128(00H7FH对应表示0 127,80HFFH对应表示1281)。负数表示反向转移,正数表示正向转移。,例:在(PC)=0100H地址单元有条“SJMP rel”指令,若rel=55H,执行该指令后PC转向何处?若rel=F6H,执行该指令后PC转向何处?,(1)若rel=55H(正数)(PC)+2PC

5、,(PC)=0102H(PC)+relPC,(PC)=0157H(2)若rel=F6H(负数)(PC)+2PC,(PC)=0102H(PC)+relPC,(PC)=00F8H,跳转的范围不同。,短转移类指令:AJMP addr11 长转移类指令:LJMP addr16 相对转移指令:SJMP rel,指令构成不同。AJMP、LJMP后跟的是绝对地址,而SJMP后跟的是相对地址。,指令长度不同 原则上,所有用SJMP或AJMP的地方都可以用 LJMP来替代。,短转移、长转移、相对转移指令的区别,(4)间接转移指令,JMP A+DPTR;(A)+(DPTR)PC,该指令具有散转功能,可以代替许多判

6、别跳转指令。其转移地址由数据指针DPTR的16位数和累加器A的8位数进行无符号数相加形成,并直接装入PC。该指令执行时对标志位无影响。,例:根据累加器A中命令键键值,设计命令键操作程序入口跳转表:CLR C;清进位 RLC A;键值乘2 MOV DPTR,#JPTAB;指向命令键跳转表首址 JMP A+DPTR;散转入命令键入口JPTAB:AJMP CCS0;双字节指令 AJMP CCS1 AJMP CCS2,二、条件转移指令(8条),(1)累加器判零转移指令,若(A)=0,则(PC)(PC)+2+rel 若(A)0,则(PC)(PC)+2,若(A)0,则(PC)(PC)+2+rel 若(A)

7、0,则(PC)(PC)+2,例:将外部数据RAM的一个数据块传送到内部数据RAM,两者的首址分别为DATA1 和 DATA2,遇到传送的数据为零时停止。,MOV R0,DATA1;外部数据块首址送R0 MOV R1,DATA2;内部数据块首址送R1LOOP1:MOVX A,R0;取外部RAM数据入AHERE:JZ HERE;数据为零则终止传送 MOV R1,A;数据传送至内部RAM单元 INC R0;修改地址指针,INC R1 SJMP LOOP1;循环取数,(2)比较转移指令(4条),CJNE A,data,rel;B4 data relCJNE A,direct,rel;B5direct

8、relCJNE Ri,data,rel;B6B7data relCJNER Rn,data,rel;B8Bfdata rel,若目的操作数=源操作数,则(PC)(PC)+3;若目的操作数源操作数,则(PC)(PC)+3+rel,CY=0;若目的操作数源操作数,则(PC)(PC)+3+rel,CY=1;,比较转移指令操作示意图,例:分析下列程序段执行后结果。,MOV A,R0 CJNE A,#10H,L1 MOV R1,#0;如R0=10H,则不转移R1=00H;AJMP L3L1:JC L2;如CY=1即 R010H,则转移 AJMP L3L2:MOV R1,#0FFHL3:SJMP L3因此

9、最终结果是:本程序执行前,如果R0=10H,则R1=00H;如果R010H,则R1=0AAH;如果R010H,则R1=0FFH。,(3)循环转移指令(2条),DJNZ direct,rel;(direct)(direct)1 若(direct)=0,则(PC)(PC)+3 否则,(PC)(PC)+3+relDJNZ Rn,rel;(Rn)(Rn)1 若(Rn)=0,则(PC)(PC)+2 否则,(PC)(PC)+2+rel,例1 有一段程序如下:MOV 23H,#0AH CLR ALOOPX:ADD A,23H DJNZ 23H,LOOPX SJMP$该程序执行后的结果是什么?(A)=10+9

10、+8+7+6+5+4+3+2+1=37H,例2 将内部RAM中从DATA单元开始的 10 个无符号数相加,相加结果送SUM 单元保存。(设相加结果不超过8位二进制数),MOV R0,0AH;给 R0 置计数器初值MOV R1,DATA;数据块首址送R1CLR A;A清零LOOP:ADD A,R1;加一个数 INC R1;修改地址,指向下一个数 DJNZ R0,LOOP;R0 减 1,不为零循环 MOV SUM,A;存 10 个数相加和,三、子程序调用与返回(4条),(1)调用指令,LCALL addr16;(PC)(PC)+3(SP)(SP)+1,(SP)(PC 70)(SP)(SP)+1,(

11、SP)(PC 158)(PC)addr 150,ACALLaddr11;(PC)(PC)+2(SP)(SP)+1,(SP)(PC 70)(SP)(SP)+1,(SP)(PC 158)(PC)100 addr11,例1:设(SP)=07H,标号“SUBRTN”所对应的程序存储器实际地址为0345H,在(PC)=0123H处执行指令ACALL SUBRTN,试分析指令执行过程。,解:执行结果:(PC)+2=0125H,压入堆栈,(SP)+1=07H+1=08H单元压入25H,(SP)+1=08H+1=09H压入01H,PC转向标号SUBRTN所在指令,即:(PC)=0345H,例2:设(SP)=0

12、7H,符号地址“SUBRTUN”指向程序存储器的5678H(PC)=0123H。从0123H处执行指令 LCALL SUBRTUN,试分析指令执行过程。,解:执行结果:(PC)+3=0126H,压入堆栈,(SP)+1=07H+1=08H单元压入26H,(SP)+1=08H+1=09H压入01H,PC转向标号SUBRTN所在指令,即:(PC)=5678H,(2)返回指令,返回指令共有两条:一条是对应两条调用指令的子程序返回指令RET;另一条是对应从中断服务程序的返回指令RETI。RET;(PC158)(SP),(SP)(SP)1(PC70)(SP),(SP)(SP)1 RETI;(PC158)(

13、SP),(SP)(SP)1(PC70)(SP),(SP)(SP)1,注:RETI指令除了具有RET指令的功能实现程序返回外,还有对中断优先级状态触发器的清零。,四、空操作(1条),NOP;PC(PC)+1 该指令不产生任何控制操作,只是将程序计数器PC的内容加1。该指令在执行时间上要消耗1个机器周期,在存储空间上可以占用一个字节。因此,常用来实现较短时间的延时。,REVIEW:控制程序转移类指令(17条),3.3.5 位操作(布尔处理)类指令(17条),MCS-51单片机的硬件结构中,有一个位处理器(又称布尔处理器),它有一套位变量处理的指令集,包括位变量传送、逻辑运算、控制程序转移等。在MC

14、S-51 中,有一部份RAM和一部份SFR是具有位寻址功能的。位操作区:内部RAM的20H-2FH这16个字节单元,即128个位单元(位地址空间位007FH);可以位寻址的特殊功能寄存器:有些SFR是可以进行位寻址的,这些SFR的特点是其字节地址均可被8整除。,位操作又称布尔操作,它是以位为单位进行的各种操作。位操作指令中的位地址有4 种表示形式:,直接地址方式(如,0D5H);点操作符方式(如,0D0H.5、PSW.5等);位名称方式(如,F0);伪指令定义方式(如,MYFLAG BIT F0)。以上几种形式表示的都是PSW中的位5。,位地址表达方式,位操作类指令(17条),一、位传送指令(

15、2条),位传送指令有如下互逆的两条双字节单周期指令,可实现进位位CY与某直接寻址位bit间内容的传送。MOV C,bit;(CY)(bit),A2 bit MOV bit,C;(bit)(CY),92 bit 上述指令中:bit为直接寻址位,C为进位标志CY的简写。第1条指令是把bit中的一位二进制数送位累加器CY中,不影响其余标志。第2条指令是将C中的内容传送给指定位。,例1 若(CY)=1,(P3)=1100 0101B,(P1)=0011 0101B。执行以下指令:MOV P1.3,C MOV C,P3.3 MOV P1.2,C 结果为:(CY)=,(P3)=,(P1)。,例2 写一程序

16、段将20H位的内容传送至5AH位MOV 10H,C MOV C,20H MOV 5AH,C MOV C,10H注:两个位之间不能直接进行位数据传送。,二、位修正指令(6条),CLR C;(CY)0 CLR bit;(bit)0 CPL C;(CY)(CY)CPL bit;(bit)(bit)SETB C;(CY)1 SETB bit;(bit)1 这组指令对操作数所指出的位进行清“0”#,取反#,置“1”的操作,不影响其它标志。,三、位逻辑运算指令(5条),(1)位逻辑“与”,例 若(P1)=1001 1100B,(CY)1。执行指令ANL C,P1.0 后,结果为:(P1)=,(CY)。若(

17、30H)=1,执行指令 ANL C,/30H后,结果 为:(30)=,(CY)。,例:若位地址(20H)=1,位累加器(C)=0 执行指令:ANL C,20H;后的结果:(C)=,(20H)=。而执行指令:CPL 20H;ANL C,20H;后的结果:(C)=,(20H)=。,三、位逻辑运算指令(5条),(2)位逻辑“或”,(3)位取反,例:完成(Z)=(X)(Y)异或运算,其中:X、Y、Z表示位地址。解:异或运算可表示为:(Z)=(X)()+()(Y),参考子程序如下:PR1:MOV C,X;(CY)(X)ANL C,/Y;(CY)(X)()MOV Z,C;暂存Z中 MOV C,Y;(CY)

18、(Y)ANL C,/X;(CY)()(Y)ORL C,Z;(CY)(X)()+()(Y)MOV Z,C;保存异或结果 RET,四、位条件转移指令(5条),JC rel;若(Cy)=1,则转移 PC(PC)+2+rel;否则,(PC)(PC)+2 顺序执行 JNC rel;若(Cy)=0,则转移PC(PC)+2+rel;否则,(PC)(PC)+2 顺序执行,这两条指令常和比较条件转移指令CJNE一起使用,形成三分支的控制模式。,CJNE 与JC(或JNC)一起构成三分支模式,四、位条件转移指令(5条),JB bit,rel;若(bit)=1,则转移PC(PC)+3+rel;否则,(PC)=(PC

19、)+3 顺序执行 JNB bit,rel;若(bit)=0,则转移PC(PC)+3+rel;否则,(PC)=(PC)+3 顺序执行 JBC bit,rel;若(bit)=1,则转移PC(PC)+3+rel,并 bit 0;否则,(PC)=(PC)+3 顺序执行,例1:比较内部RAM I、J单元中A、B两数的大小。若A=B,则使内部RAM的位K置 1;若AB,则大数存M单元,小数存N单元。设A、B数均为带符号数,以补码数存入I、J中,该带符号数比较子程序的比较过程示意图如下图所示。,带符号数比较过程示意图,MOV A,I;A数送累加器AANL A,80H;判A数的正负JNZ NEG;A0 则转至

20、NEGMOV A,J;B数送累加器AANL A,80H;判B数的正负JNZ BIG1;A0,B0,转BIG1SJMP COMP;A0,B0,转COMPNEG:MOV A,J;B数送累加器A ANL A,80H;判B数的正负 JZ SMALL;A0,B0,转SMALL COMP:MOV A,I;A数送累加器A,CJNE A,J,BIG;AB则转BIG SETB K;A=B,位K置 1 RETBIG:JC SMALL;AB转SMALLBIG1:MOV M,I;大数A存入M单元 MOV N,J;小数B存入N单元 RETSMALL:MOV M,J;大数B存入M单元 MOV N,I;小数A存入N单元 RET,第二章 REVIEW:寻址方式的种类,第二章 REVIEW:一般传送指令,第二章 REVIEW:特殊传送指令,第二章 REVIEW:片内数据传送指令,第二章 REVIEW:算术运算指令(24条),算术运算指令可以完成加、减、乘、除及加加1和减1等运算。这类指令除INC、DEC指令外,其它运算指令的目的操作数必是A。,第二章 REVIEW:逻辑运算及移位指令(24条),第二章 REVIEW控制程序转移类指令(17条),位操作类指令(17条),影响标志的指令,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号