MCS-51单片机应用教程2.3.2

MCS-51单片机应用教程2.3.2

ID:41885518

大小:271.00 KB

页数:15页

时间:2019-09-04

MCS-51单片机应用教程2.3.2_第1页
MCS-51单片机应用教程2.3.2_第2页
MCS-51单片机应用教程2.3.2_第3页
MCS-51单片机应用教程2.3.2_第4页
MCS-51单片机应用教程2.3.2_第5页
资源描述:

《MCS-51单片机应用教程2.3.2》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、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位。②参与运算的两个操作数既可以视为有符号数又可以视为无符号数。若看做有符号数则通常采用补码形式。③无符号数运算

2、时,若结果超出0~255,可由CY位判断;而带符号数运算时,结果超出-128~+127,则由OV位判断。例如:(A)=C2H,(R0)=A9H,执行ADDA,R0指令11000010+101010011←01101011运算结果:(A)=6BH,(AC)=0,(CY)=1,(OV)=1。若C2H和A9H是两个无符号数,则结果为16BH,运算正确的;反之,若为两个带符号数,则由于有溢出而表明结果是错误的,因为两个负数相加不可能得到正数的和。例1:执行下列指令后,确定累加器A和PSW各标志位的状态。MOVA,#0CFHADDA,#0A5HP—OVRS0RS1F0ACCY

3、PSW00100011(A)=74H(PSW)=0C4H2、带进位的加法指令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,21HADD

4、CA,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指令:IN

5、CA;A←(A)+1INCRn;Rn←(Rn)+1INCdirect;direct←(direct)+1INC@Ri;(Ri)←((Ri))+1INCDPTR;DPTR←(DPTR)+12、减1指令共有四条减1指令:DECA;A←(A)-1DECRn;Rn←(Rn)-1DECdirect;direct←(direct)-1DEC@Ri;(Ri)←((Ri))-1注意:在这些指令中除了INCA和DECA影响P标志位,INCDPTR影响CY标准位外,其它指令都不影响标志位。不出现进位、借位。加满归零,减零归整。例:(R0)=7EH,内部RAM7EH及7FH单元的内容为0

6、FFH及38H,DPTR的内容为10FEH,则执行下列程序后各单元的内容为什么?INC@R0INCR0INC@R0INCDPTRINCDPTPINCDPTRINC@R0;(7EH)=00HINCR0;(R0)=7FHINC@R0;(7FH)=39HINCDPTR;(DPL)=FFH,(DPH)=10HINCDPTP;(DPL)=00H,(DPH)=11HINCDPTR;(DPL)=01H,(DPH)=11H四、乘法指令MULAB这条指令把累加器A和寄存器B中的两个无符号8位数相乘,所得16位乘积的低位字节放在A中,高位字节放在B中。五、除法指令DIVAB这条指令进行

7、两个8位无符号数的除法运算,其中被除数置于累加器A中,除数置于寄存器B中。指令执行后,商存于A中,余数存于B中。例:把累加器中的二进制数转换为3位BCD数。百位放在内部RAM20H单元,十位放在21H单元,个位放在22H单元。答案:MOVB,#100DIVABMOV20H,AMOVA,BMOVB,#10DIVABMOV21H,AMOV22H,B六、十进制调整指令十进制调整指令是一条专用指令,用于对BCD码十进制数加法运算的结果进行修正。其指令格式为:DAA因为ADD和ADDC指令适用于二进制的加法运算而不适用于十进制的加法运算。所以在对BCD码十进制数进行运算后

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。