单片机完整——算术运算类指令ppt课件_第1页
单片机完整——算术运算类指令ppt课件_第2页
单片机完整——算术运算类指令ppt课件_第3页
单片机完整——算术运算类指令ppt课件_第4页
单片机完整——算术运算类指令ppt课件_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

2算术运算类指令(24条)ArithmeticOperations,主要对8位无符号数;也可用于带符号数运算。包括:加、减、乘、除、加1、减1运算指令影响PSW有关位。,算术运算类指令(6种/24条),加法运算:(ADD4条)带进位加法运算:(ADDC4条)带借位减法运算:(SUBB4条)加1/减1操作:(INC,DEC9条)单字节乘/除法运算:(MUL,DIV2条)十进制调整:(DAA1条),加法运算:(ADD4条)带进位加法运算:(ADDC4条)带借位减法运算:(SUBB4条),所有的加法(ADD)、带进位加法(ADDC)、带借位减法(SUBB)运算都是以A为一个加数或被减数,最终结果也存进A。,加法(ADD)、带进位加法(ADDC)以及带借位减法(SUBB)运算中,如果产生了进位或借位,将自动对PSW中的Cy标志位置“1”。,带进位加法(ADDC):(A)(A)+(Cy)+(第二操作数)带借位减法(SUBB):(A)(A)-(Cy)-(第二操作数),ADDA,#data;AdataAADDA,direct;A(direct)AADDA,Rn;ARnAADDA,Ri;A(Ri)A用途:将A中的值与源操作数所指内容相加,最终结果存在A中。,1.不带进位位的加法指令(4条),加法指令,例:设(A)=49H,(R0)=6BH执行:ADDA,R0结果:CY=?,AC=?,P=?,OV=?,(A)=?,CY=0,AC=1,P=0,OV=1,(A)=B4H,2.带进位位的加法指令(4条),ADDCA,Rn;ARnCYAADDCA,direct;A(direct)CYAADDCA,Ri;A(Ri)CYAADDCA,#data;AdataCYA用途:将A中的值和其后面的值以及进位位C中的值相加,最终结果存在A,常用于多字节数运算中。,说明:由于51单片机是一种8位机,所以只能做8位的数学运算,但8位运算的范围只有0255,这在实际工作中是不够的,因此就要进行扩展,一般是将2个8位(两字节)的数学运算合起来,成为一个16位的运算,这样,可以表达的数的范围就可以达到065535。,例:,先做67H+A0H=107H,而107H显然超过了0FFH,因此最终保存在A中的是07H,而1则到了PSW中的CY位了。换言之,CY就相当于是100H。然后再做10H+30H+CY,结果是41H,所以最终的结果是4107H。,1067H+30A0H,0001000001100111,0011000010100000,0100000100000111,1067H,30A0H,4107H,例:设1067H存在R1R0中,3020H存在R3R2中,计算R1R0+R3R2,结果存在R5R4中。,MOVA,R0ADDA,R2;R0+R2A和CYMOVR4,AMOVA,R1ADDCA,R3;R1+R3+CYA和CYMOVR5,A,又例:,先做67H+20H=87H,没有超过0FFH,因此最终保存在A中的是87H,而PSW中的CY=0。然后再做10H+30H+CY,结果是40H,所以最终的结果是4087H。,1067H+3020H,0001000001100111,0011000000100000,0100000010000111,1067H,3020H,4087H,DAA在进行BCD码加法运算时,跟在ADD和ADDC指令之后,用于对累加器A中刚进行的两个BCD码的加法的结果进行十进制调整。例:A=00010101BCD(代表十进制数15)ADDA,#8,3.十进制调整指令(1条),;A=1DH,按二进制规律加,;A=23H,按十进制规律加,DAA,调整要完成的任务是:,(1)当累加器A中的低4位数出现了非BCD码(10101111)或低4位产生进位(AC=1),则应在低4位加6调整,以产生低4位正确的BCD结果。,(2)当累加器A中的高4位数出现了非BCD码(10101111)或高4位产生进位(CY=1),则应在高4位加6调整,以产生高4位正确的BCD结果。十进制调整指令执行后,PSW中的CY表示结果的百位值。,例若(A)01010110B,表示的BCD码为56,(R3)01100111B,表示的BCD码为67,(CY)0。执行以下指令:ADDA,R2DAA由于(A)00100011B,即23,且(CY)1,即,结果为BCD数123。应该注意,DA指令不能对减法进行十进制调整。,减法指令(8条),SUBBA,Rn;ARnCYASUBBA,direct;A(direct)CYASUBBA,Ri;A(Ri)CYASUBBA,#data;AdataCYA将A中的值减去源操作数所指内容以及进位位C中的值,最终结果存在A中。,1.带借位的减法指令(4条),例:SUBBA,R2设:A=C9H,R2=55H,CY=1,执行指令之后,A中的值为73H。,说明:没有不带借位的减法指令,如果需要做不带位的减法指令(在做第一次相减时),只要将CY清零即可。对带符号数,要注意OV标志。OV=1,出错。,例:设(A)=52H,(R0)=B4H执行指令:CLRCSUBBA,R0结果为:,(A)=?,CY=?,AC=?,OV=?,P=?,(A)=9EH,CY=1,AC=1,OV=1,P=1,加1/减1操作:(INC,DEC9条)INC,DEC与用加/减法指令做加1/减1操作不同之处在于INC、DEC不影响标志位(CY、OV、AC).只有涉及累加器A的指令INCA、DECA才影响奇偶标志P。,单字节乘/除运算:(MUL,DIV2条)两个单字节数的乘/除法运算只在A与B之间进行。MULAB:(A)与(B)相乘,积为16位数,(B)积的高8位;(A)积的低8位DIVAB:(A)除以(B),结果用2字节表示,(A)商的整数部分;(B)余数,乘法指令执行后,进位标志CY总是清零,即CY=0,除法指令执行后,进位标志CY和溢出标志OV均被清零。若除数B中的内容为0时,除法运算没有意义,结果为不定值,此时溢出标志OV被置为1,即OV=1,而CY仍为0.,1、写出下列程序的运行结果。MOVSP,#40HMOV42H,#85HMOV55H,#37HPUSH42HPUSH55HPOP42HPOP55H(SP)=?(42H)=?(55H)=?,练习题,2、执行下面程序段后,片内RAM30H和片外RAM30H单元的值是:MOV30H,#30MOVR1,#30HMOVA,#03HMOVXR1,AXCHA,R1MOVXR1,A,内部RAM(30H)=?;外部RAM(30H)=?,3、判断题下面指令是否正确,并将错误指令改正之。MOV#30H,AMOVDPTR,ADAR1DIVA,R0MOV30H,40HPUSH#30H,5逻辑运算类指令(24条),主要用于对2个操作数按位进行逻辑操作,结果送到A或直接寻址单元。主要操作与、或、异或、移位、取反、清零等。对标志位的影响除了目的操作数为ACC的指令影响奇偶标志P外,一般不影响标志位。,LogicOperations,逻辑运算指令的常见用法,逻辑与ANL用于清0或者保留某些位:例:ANLA,#0FH;则(A)=0AH,(已知累加器A中已存有数:9AH),逻辑或ORL用于置1或者保留某些位:例:ORLA,#0FH;则(A)=9FH,逻辑异或XRL用于取反或者保留某些位:例:XRLA,#0FH;则(A)=95H,1逻辑或指令(6条),ORLA,Rn;ARnAORLA,direct;A(direct)AORLA,Ri;A(Ri)AORLA,#data;AdataAORLdirect,A;(direct)A(direct)ORLdirect,#data;(direct)data(direct),后两条指令,若直接地址为I/O端口,则为“读改写”操作。,ORLogicInstruction,例:71H和56H相或:01110001(71H)01010110(56H),01110111即77H,2逻辑与指令(6条),ANLA,Rn;ARnAANLA,direct;A(direct)AANLA,Ri;A(Ri)AANLA,#data;AdataAANLdirect,A;(direct)A(direct)ANLdirect,#data;(direct)data(direct),后两条指令,若直接地址为I/O端口,则为“读改写”操作。,ANdLogicInstruction,例:71H和56H相与:01110001(71H)01010110(56H),01010000即50H,3逻辑异或指令(6条),XRLA,Rn;ARnAXRLA,direct;A(direct)AXRLA,Ri;A(Ri)AXRLA,#data;AdataAXRLdirect,A;(direct)A(direct)XRLdirect,#data;(direct)data(direct),后两条指令,若直接地址为I/O端口,则为“读改写”操作。,eXclusive-oRLogicInstruction,例:71H和56H相异或:01110001(71H))01010110(56H),00100111即27H,4清0与取反指令(2条),取反:CPLA;/AA例:若A=5CH,执行CPLA结果:A=A3H,清0:CLRA;0A,ComPlementLogicOperation,5循环移位指令(4条),RLARRARLCARRCA,后两条指令,影响P标志和CY。,RotateLogicinstruction,例:,若A=5CH,CY=1,执行RLCA后,,对RLC、RRC指令,在CY=0时RLC相当于乘以2RRC相当于除以2,结果:A=B9H,CY=0,P=1,例:按要求编程,完成下列各题:1)选通工作寄存器组中0区为工作区。2)利用移位指令实现累加器A的内容乘6。3)将ACC的低4位送P1口的低4位,P1口的高4位不变。,1)ANLPSW,#11100111B;PSW的D4、D3位为00,2)CLRCRLCA;左移一位,相当于乘2MOVR0,ACLRCRLCA;再乘2,

温馨提示

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

评论

0/150

提交评论