51单片机2.3.2_第1页
51单片机2.3.2_第2页
51单片机2.3.2_第3页
51单片机2.3.2_第4页
51单片机2.3.2_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

2.3.2算术运算类指令MCS-51的算术运算类指令也相当丰富。与早期的微型计算机比较,增加了乘法和除法指令,但MCS-51指令系统中只有8位数而没有16位数的运算指令(但操作数可以是16位寄存器)。这类指令对标志位有影响。一、加法指令1、不带进位的加法指令ADDA,Rn;A(A)+(Rn)ADDA,direct;A(A)+(direct)ADDA,Ri;A(A)+(Ri)ADDA,#data;A(A)+data,注意:两个操作数及结果均为8位。参与运算的两个操作数既可以视为有符号数又可以视为无符号数。若看做有符号数则通常采用补码形式。无符号数运算时,若结果超出0255,可由CY位判断;而带符号数运算时,结果超出-128+127,则由OV位判断。,例如:(A)=C2H,(R0)=A9H,执行ADDA,R0指令11000010+10101001101101011运算结果:(A)=6BH,(AC)=0,(CY)=1,(OV)=1。若C2H和A9H是两个无符号数,则结果为16BH,运算正确的;反之,若为两个带符号数,则由于有溢出而表明结果是错误的,因为两个负数相加不可能得到正数的和。,例1:执行下列指令后,确定累加器A和PSW各标志位的状态。MOVA,#0CFHADDA,#0A5H,(A)=74H(PSW)=0C4H,2、带进位的加法指令,ADDCA,Rn;A(A)+(Rn)+(CY)ADDCA,direct;A(A)+(direct)+(CY)ADDCA,Ri;A(A)+(Ri)+(CY)ADDCA,#data;A(A)+data+(CY)带进位加法运算指令常用于多字节数的加法运算。,例:两字节无符号数相加,被加数放在内部RAM20H、21H单元(低位在前),加数放在内部RAM2AH、2BH单元(低位在前),将和放在20H、21H单元。CLRCMOVA,20HADDA,2AHMOV20H,AMOVA,21HADDCA,2BHMOV21H,A,二、带借位减法指令组带借位的减法指令也有四条:SUBBA,Rn;A(A)-(Rn)-(CY)SUBBA,direct;A(A)-(direct)-(CY)SUBBA,Ri;A(A)-(Ri)-(CY)SUBBA,#data;A(A)-data-(CY)这些指令的功能是从累加器A中减去不同寻址方式的操作数以及进位标志CY状态,其差再回送累加器A。减法只有带借位减法指令,而没有不带借位的减法指令。若进行不带借位的减法运算,只需用CLRC指令先把进位标志位清0即可。,三、加1、减1指令组1、加1指令(增量指令)共有五条加1指令:INCA;A(A)+1INCRn;Rn(Rn)+1INCdirect;direct(direct)+1INCRi;(Ri)(Ri)+1INCDPTR;DPTR(DPTR)+1,2、减1指令共有四条减1指令:DECA;A(A)-1DECRn;Rn(Rn)-1DECdirect;direct(direct)-1DECRi;(Ri)(Ri)-1,注意:在这些指令中除了INCA和DECA影响P标志位,INCDPTR影响CY标准位外,其它指令都不影响标志位。,例:(R0)=7EH,内部RAM7EH及7FH单元的内容为0FFH及38H,DPTR的内容为10FEH,则执行下列程序后各单元的内容为什么?INCR0INCR0INCR0INCDPTRINCDPTPINCDPTR,INCR0;(7EH)=00HINCR0;(R0)=7FHINCR0;(7FH)=39HINCDPTR;(DPL)=FFH,(DPH)=10HINCDPTP;(DPL)=00H,(DPH)=11HINCDPTR;(DPL)=01H,(DPH)=11H,四、乘法指令MULAB这条指令把累加器A和寄存器B中的两个无符号8位数相乘,所得16位乘积的低位字节放在A中,高位字节放在B中。,五、除法指令DIVAB这条指令进行两个8位无符号数的除法运算,其中被除数置于累加器A中,除数置于寄存器B中。指令执行后,商存于A中,余数存于B中。,例:把累加器中的二进制数转换为3位BCD数。百位放在内部RAM20H单元,十位放在21H单元,个位放在22H单元。答案:MOVB,#100DIVABMOV20H,AMOVA,BMOVB,#10DIVABMOV21H,AMOV22H,B,六、十进制调整指令十进制调整指令是一条专用指令,用于对BCD码十进制数加法运算的结果进行修正。其指令格式为:DAA因为ADD和ADDC指令适用于二进制的加法运算而不适用于十进制的加法运算。所以在对BCD码十进制数进行运算后必须进行调整才能得到正确的结果。,注意:此指令必须紧跟在BCD码加法指令之后。只能对加法进行修正,减法必须转换为加法运算后才能应用此指令。,例:编写BCD码78和93相加的程序。MOVA,#78ADDA,#93DAA例:设一个BCD数放在内部RAM30H,31H单元,另一个BCD数放在32H和33H单元。编程将两个数相加结果放回到30H,31H单元。MOVA,30HADDA,32HD

温馨提示

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

评论

0/150

提交评论