MCS-51单片机应用教程2.3.2

上传人:桔**** 文档编号:579796041 上传时间:2024-08-27 格式:PPT 页数:15 大小:271KB
返回 下载 相关 举报
MCS-51单片机应用教程2.3.2_第1页
第1页 / 共15页
MCS-51单片机应用教程2.3.2_第2页
第2页 / 共15页
MCS-51单片机应用教程2.3.2_第3页
第3页 / 共15页
MCS-51单片机应用教程2.3.2_第4页
第4页 / 共15页
MCS-51单片机应用教程2.3.2_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《MCS-51单片机应用教程2.3.2》由会员分享,可在线阅读,更多相关《MCS-51单片机应用教程2.3.2(15页珍藏版)》请在金锄头文库上搜索。

1、2.3.2 算术运算类指令算术运算类指令 MCS-51的算术运算类指令也相当丰富。与早期的算术运算类指令也相当丰富。与早期的微型计算机比较,增加了乘法和除法指令,但的微型计算机比较,增加了乘法和除法指令,但MCS-51指令系统中只有指令系统中只有8位数而没有位数而没有16位数的运算指位数的运算指令(但操作数可以是令(但操作数可以是16位寄存器)。位寄存器)。 这类指令对标志位有影响。这类指令对标志位有影响。一、加法指令一、加法指令 1、不带进位的加法指令、不带进位的加法指令 ADD AADD A,RnRn ; A(A)+(RnA(A)+(Rn) ) ADD A ADD A,direct dir

2、ect ; A(A)+(directA(A)+(direct) ) ADD A ADD A,RiRi ; A(A)+(RiA(A)+(Ri) ) ADD A ADD A,#data #data ; A(A)+dataA(A)+data注意:注意:两个操作数及结果均为两个操作数及结果均为8 8位。位。参与运算的两个操作数既可以视为有符号数又可参与运算的两个操作数既可以视为有符号数又可以视为无符号数。若看做有符号数则通常采用补码以视为无符号数。若看做有符号数则通常采用补码形式。形式。无符号数运算时,若结果超出无符号数运算时,若结果超出0 0255255,可由,可由CYCY位位判断;而带符号数运算时

3、,结果超出判断;而带符号数运算时,结果超出-128-128+127+127,则由则由OVOV位判断。位判断。例例如如:(A)=C2H,(R0)=A9H,执执行行ADD A,R0指指令令 1 1 0 0 0 0 1 0 + 1 0 1 0 1 0 0 1 10 1 1 0 1 0 1 1 运算结果:运算结果: (A)=6BH,(AC)=0,(CY)=1,(OV)=1。若若C2H和和A9H是两个无符号数,则结果为是两个无符号数,则结果为16BH,运,运算正确的;反之,若为两个带符号数,则由于有溢算正确的;反之,若为两个带符号数,则由于有溢出而表明结果是错误的,因为两个负数相加不可能出而表明结果是错

4、误的,因为两个负数相加不可能得到正数的和。得到正数的和。例例1 1:执行下列指令后,确定累加器:执行下列指令后,确定累加器A A和和PSWPSW各标志位各标志位的状态。的状态。MOV A,#0CFHMOV A,#0CFHADD A,#0A5HADD A,#0A5H P OVRS0RS1 F0 AC CY PSWPSW0 01000 1 1 (A)=74H(A)=74H(PSW)=0C4H(PSW)=0C4H2、带进位的加法指令、带进位的加法指令ADDC AADDC A,RnRn ;A(A)+(Rn)+(CYA(A)+(Rn)+(CY) ) ADDC A ADDC A,direct direct

5、 ;A(A)+(direct)+(CYA(A)+(direct)+(CY) ) ADDC A ADDC A,RiRi ;A(A)+(Ri)+(CYA(A)+(Ri)+(CY) ) ADDC A ADDC A,#data #data ;A(A)+data+(CYA(A)+data+(CY) ) 带进位加法运算指令常用于多字节数的加法运算。带进位加法运算指令常用于多字节数的加法运算。 例例: :两字节无符号数相加,被加数放在内部两字节无符号数相加,被加数放在内部RAM20HRAM20H、21H21H单元(低位在前),加数放在内部单元(低位在前),加数放在内部RAM2AHRAM2AH、2BH2BH单

6、单元(低位在前)元(低位在前), ,将和放在将和放在20H20H、21H21H单元。单元。 CLR C CLR C MOV A,20H MOV A,20H ADD A,2AH ADD A,2AH MOV 20H,A MOV 20H,A MOV A,21H MOV A,21H ADDC A,2BH ADDC A,2BH MOV 21H,A MOV 21H,A 二二、带借位减法指令组、带借位减法指令组 带借位的减法指令也有四条带借位的减法指令也有四条: SUBB SUBB A A,RnRn ;A(A)-(A(A)-(RnRn)-(CY)-(CY) SUBB SUBB A A,directdirec

7、t ;A(A)-(direct)-(CY)A(A)-(direct)-(CY) SUBB SUBB A A,RiRi ;A(A)-(A(A)-(RiRi)-(CY)-(CY) SUBB SUBB A A,#data#data ;A(A)-data-(CY)A(A)-data-(CY) 这些指令的功能是从累加器这些指令的功能是从累加器A中减去不同寻址方中减去不同寻址方式的操作数以及进位标志式的操作数以及进位标志CY状态,其差再回送累加状态,其差再回送累加器器A。 减法只有带借位减法指令,而没有不带借位的减减法只有带借位减法指令,而没有不带借位的减法指令。若进行不带借位的减法运算,只需用法指令。若

8、进行不带借位的减法运算,只需用CLR C 指令先把进位标志位清指令先把进位标志位清0即可。即可。三、加三、加1 1、减、减1 1指令指令组1 1、加、加1 1指令(增量指令)指令(增量指令)共有五条加共有五条加1 1指令:指令: INC A INC A ;A(A)+1A(A)+1 INC INC RnRn ;Rn(Rn)+1Rn(Rn)+1 INC direct INC direct ;direct(direct)+1direct(direct)+1 INC INC RiRi ;(Ri)(Ri)+1(Ri)(Ri)+1 INC DPTR INC DPTR ;DPTR(DPTR)+1DPTR(D

9、PTR)+12 2、减、减1 1指令指令共有四条减共有四条减1 1指令:指令: DEC A DEC A ;A(A)-1A(A)-1 DEC DEC RnRn ;Rn(Rn)-1Rn(Rn)-1 DEC direct DEC direct ;direct(direct)-1direct(direct)-1 DEC DEC RiRi ;(Ri)(Ri)-1(Ri)(Ri)-1注意:注意: 在这些指令中除了在这些指令中除了INC AINC A和和DEC ADEC A影响影响P P标志标志位,位,INC DPTRINC DPTR影响影响CYCY标准位外,其它指令都不影标准位外,其它指令都不影响标志位。

10、响标志位。不出现进位、借位。不出现进位、借位。加满归零,减零加满归零,减零归整。归整。例例:(:(R0R0)=7EH=7EH,内部,内部RAM7EHRAM7EH及及7FH7FH单元的内容为单元的内容为0FFH0FFH及及38H38H,DPTRDPTR的内容为的内容为10FEH10FEH,则执行下列程序,则执行下列程序后各单元的内容为什么?后各单元的内容为什么?INC INC R0R0INC R0INC R0INC INC R0R0INC DPTRINC DPTRINC DPTPINC DPTPINC DPTRINC DPTRINC INC R0;(7EH)=00HR0;(7EH)=00HINC

11、 R0 ;(R0)=7FHINC R0 ;(R0)=7FHINC INC R0;(7FH)=39HR0;(7FH)=39HINC DPTR;(DPL)=FFH,(DPH)=10HINC DPTR;(DPL)=FFH,(DPH)=10HINC DPTP ;(DPL)=00H,(DPH)=11HINC DPTP ;(DPL)=00H,(DPH)=11HINC DPTR ;(DPL)=01H,(DPH)=11HINC DPTR ;(DPL)=01H,(DPH)=11H四、乘法指令四、乘法指令 MUL ABMUL AB 这条指令把累加器条指令把累加器A A和寄存器和寄存器B B中的两个无符号中的两个无

12、符号8 8位数相乘,所得位数相乘,所得1616位乘位乘积的的低位字低位字节放在放在A A中,高中,高位字位字节放在放在B B中。中。五、除法指令五、除法指令 DIV AB DIV AB 这条指令条指令进行两个行两个8 8位无符号数的除法运算,其位无符号数的除法运算,其中中被除数置于累加器被除数置于累加器A A中,除数置于寄存器中,除数置于寄存器B B中。指中。指令令执行后,商存于行后,商存于A A中,余数存于中,余数存于B B中。中。例:把累加器中的二进制数转换为例:把累加器中的二进制数转换为3 3位位BCDBCD数。百位数。百位放在内部放在内部RAM20HRAM20H单元,十位放在单元,十位

13、放在21H21H单元,个位放在单元,个位放在22H22H单元。单元。答案:答案:MOV B,#100MOV B,#100DIV ABDIV ABMOV 20H,AMOV 20H,AMOV A,BMOV A,BMOV B,#10MOV B,#10DIV ABDIV ABMOV 21H,AMOV 21H,AMOV 22H,BMOV 22H,B六、十六、十进制制调整指令整指令 十十进制制调整指令是一条整指令是一条专用指令,用于用指令,用于对BCDBCD码十十进制数加法运算的制数加法运算的结果果进行修正。其指令格式行修正。其指令格式为: DA A DA A 因因为ADDADD和和ADDCADDC指令适

14、用于二指令适用于二进制的加法运算制的加法运算而不适用于十而不适用于十进制的加法运算。所以在制的加法运算。所以在对BCDBCD码十十进制数制数进行运算后必行运算后必须进行行调整才能得到正确的整才能得到正确的结果。果。注意:注意:注意:注意:此指令必须紧跟在此指令必须紧跟在此指令必须紧跟在此指令必须紧跟在BCDBCDBCDBCD码加法指令之后。码加法指令之后。码加法指令之后。码加法指令之后。 只能对加法进行修正,减法必须转换为加只能对加法进行修正,减法必须转换为加只能对加法进行修正,减法必须转换为加只能对加法进行修正,减法必须转换为加法运算后才能应用此指令。法运算后才能应用此指令。法运算后才能应用

15、此指令。法运算后才能应用此指令。例:编写例:编写BCDBCD码码7878和和9393相加的程序。相加的程序。MOV A,#78MOV A,#78ADD A,#93ADD A,#93DA ADA A例:设一个例:设一个BCDBCD数放在内部数放在内部RAM30H,31HRAM30H,31H单元,另一个单元,另一个BCDBCD数放在数放在32H32H和和33H33H单元。编程将两个数相加结果放单元。编程将两个数相加结果放回到回到30H30H,31H31H单元。单元。MOV A,30HMOV A,30HADD A,32HADD A,32HDA ADA AMOV 30H,AMOV 30H,AMOV A,31HMOV A,31HADDC A,33HADDC A,33HDA ADA AMOV 31H,AMOV 31H,A本本节小小结n算术运算指令算术运算指令加法指令加法指令减法指令减法指令加加1 1、减、减1 1指令指令乘除指令乘除指令十进制调整指令十进制调整指令不带进位加法指令不带进位加法指令带进位加法指令带进位加法指令注注意意对对标标志志位位的的影响影响注意存放位置注意存放位置

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号