第3章指令系统3.ppt
《第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,(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 指令系统
链接地址:https://www.desk33.com/p-740186.html