好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

MCS51单片机应用教程2.3.2.ppt

15页
  • 卖家[上传人]:人***
  • 文档编号:593636090
  • 上传时间:2024-09-26
  • 文档格式:PPT
  • 文档大小:271KB
  • / 15 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 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 direct ;;;; 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 0~255255,可由,可由CYCY位位判断;而带符号数运算时,结果超出判断;而带符号数运算时,结果超出-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 1←0 1 1 0 1 0 1 1 运算结果:运算结果: (A)=6BH,,(AC)=0,,(CY)=1,,(OV)=1若若C2H和和A9H是两个无符号数,则结果为是两个无符号数,则结果为16BH,运,运算正确的;反之,若为两个带符号数,则由于有溢算正确的;反之,若为两个带符号数,则由于有溢出而表明结果是错误的,因为两个负数相加不可能出而表明结果是错误的,因为两个负数相加不可能得到正数的和。

      得到正数的和 例例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)=0C4H 2、带进位的加法指令、带进位的加法指令ADDC AADDC A,,,,RnRn ;;;;A←(A)+(Rn)+(CYA←(A)+(Rn)+(CY) ) ADDC A ADDC A,,,,direct direct ;;;;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单单元(低位在前)元(低位在前), ,将和放在将和放在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,,,,directdirect ;;;;A←(A)-(direct)-(CY)A←(A)-(direct)-(CY) SUBB SUBB A A,,,,@Ri@Ri ;;;;A←(A)-((A←(A)-((RiRi))-(CY)))-(CY) SUBB SUBB A A,,,,#data#data ;;;;A←(A)-data-(CY)A←(A)-data-(CY) 这些指令的功能是从累加器这些指令的功能是从累加器A中减去不同寻址方中减去不同寻址方式的操作数以及进位标志式的操作数以及进位标志CY状态,其差再回送累加状态,其差再回送累加器器A。

      减法只有带借位减法指令,而没有不带借位的减减法只有带借位减法指令,而没有不带借位的减法指令若进行不带借位的减法运算,只需用法指令若进行不带借位的减法运算,只需用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←(DPTR)+1 2 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标准位外,其它指令都不影标准位外,其它指令都不影响标志位。

      响标志位不出现进位、借位不出现进位、借位加满归零,减零加满归零,减零归整 例例:(:(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 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中的两个无符号中的两个无符号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单元,十位放在单元,十位放在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指令适用于二指令适用于二进进制的加法运算制的加法运算而不适用于十而不适用于十进进制的加法运算所以在制的加法运算所以在对对BCDBCD码码十十进进制数制数进进行运算后必行运算后必须进须进行行调调整才能得到正确的整才能得到正确的结结果注意:注意:注意:注意:①①①①此指令必须紧跟在此指令必须紧跟在此指令必须紧跟在此指令必须紧跟在BCDBCDBCDBCD码加法指令之后码加法指令之后码加法指令之后码加法指令之后 ② ② ② ②只能对加法进行修正,减法必须转换为加只能对加法进行修正,减法必须转换为加只能对加法进行修正,减法必须转换为加只能对加法进行修正,减法必须转换为加法运算后才能应用此指令法运算后才能应用此指令法运算后才能应用此指令法运算后才能应用此指令 例:编写例:编写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指令指令乘除指令乘除指令十进制调整指令十进制调整指令不带进位加法指令不带进位加法指令带进位加法指令带进位加法指令注注意意对对标标志志位位的的影响影响注意存放位置注意存放位置 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.