《教学课件微机原理(第2版)3.4 算术运算指令ppt(全).pptx》由会员分享,可在线阅读,更多相关《教学课件微机原理(第2版)3.4 算术运算指令ppt(全).pptx(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、教学课件微机原理(第2版)3.4 算术运算指令2学习内容:算术运算类指令目标:掌握如何使用算术指令编程第3章 8051指令系统和汇编程序设计33.2 指令系统第3章 8051指令系统和汇编程序设计3.2.2 算术运算类指令 算术运算指令是通过算术逻辑运算单元ALU进行数据运算与处理的指令,主要完成加、减、乘、除四则运算,以及加1、减1、BCD码运算和调整等。除加1、减1运算外,这类指令大多数要影响PSW中的标志位。24条指令可分为6组。不带进位加法指令:4条带进位加法指令:4条带借位减法指令:4条加1指令:5条减1指令:4条乘法、除法、十进制运算调整指令:3条43.2 指令系统第3章 8051
2、指令系统和汇编程序设计3.2.2 算术运算类指令1.不带进位加法指令(4条)ADD A,#data ;(A)(A)+#data ADD A,direct ;(A)(A)+(direct)ADD A,Ri ;(A)(A)+(Ri)ADD A,Rn ;(A)(A)+(Rn)功能:将源操作数(Rn、direct、Ri或立即数)和目的操作数(在A中)相加后,结果存放到A中。例:设(A)=C3H,(R0)=AAH。执行指令:ADD A,R0 1 1 0 0 0 0 1 1 B +1 0 1 0 1 0 1 0 B 0 1 1 0 1 1 0 1 B 执行执行结果:结果:(A)=6DH,C=1,OV=1,
3、AC=0,P=1;OV的判断的判断:D6无进位而C7有进位,故OV=1;即出现二个负数相加,结果为正数的错误。53.2 指令系统第3章 8051指令系统和汇编程序设计3.2.2 算术运算类指令1.不带进位加法指令(4条)例:设(A)=57H,(R2)=79H。执行指令:ADD A,R2 )OV判断:判断:D6有进位而D7无进位,故OV=1;即出现二个正数相加,结果为负数的错误。执行结果:执行结果:(A)=D0H,C=0,OV=1,AC=1,P=1;标志位的意义与操作数是带符号数还是无符号数有关:无符号数相加时,如果Cy被置位,说明累加和超过了8位无符号数的最大值(255),此时OV虽受影响但无
4、意义;带符号数相加时,若溢出标志OV位被置位,说明累加和超出了8位带符号数的范围(-128+127)。即出现了两个正数相加,和为负数;或两个负数相加,和为正数的错误结果。此时Cy虽受影响但已不需关注。63.2 指令系统第3章 8051指令系统和汇编程序设计3.2.2 算术运算类指令2.带进位加法指令(4条)ADDC A,#data ;(A)(A)+data+(C)ADDC A,direct ;(A)(A)+(direct)+(C)ADDC A,Ri ;(A)(A)+(Ri)+(C)ADDC A,Rn ;(A)(A)+(Rn)+(C)功能:把源操作数、A和当前Cy的值相加,结果保存到A。主要用于
5、多字节加法中。例:(A)=AEH,(R0)=81H,(C)=1,执行指令 ADDC A,R0 )执行结果:执行结果:(A)=30H,C=1,OV=1,AC=1,P=0;73.2 指令系统第3章 8051指令系统和汇编程序设计3.2.2 算术运算类指令3.带借位减法指令(4条)SUBB A,#data ;(A)(A)-data-(C)SUBB A,direct ;(A)(A)-(direct)-(C)SUBB A,Ri ;(A)(A)-(Ri)-(C)SUBB A,Rn ;(A)(A)-(Rn)-(C)功能:将A中的值减去源操作数指定的值,以及借位位Cy,结果存放在A中。若若D7有借位有借位则则
6、C置置1,否则,否则C清清0;若;若D3有借位有借位,则,则AC置置1,否则,否则AC清清0。若若D7和和D6中有一位中有一位有有借位而另一位没有,则借位而另一位没有,则OV置置1;表示正数减负数表示正数减负数结果为负,或负数减正数结果为正,结果为负,或负数减正数结果为正,结果错误结果错误。83.2 指令系统第3章 8051指令系统和汇编程序设计3.2.2 算术运算类指令3.带借位减法指令(4条)例:(A)=C9H,(R3)=54H,C=1,执行SUBB A,R3。1100 1001 0101 0100 1 0111 0100 执行结果:执行结果:(A)=74H ,C=0,OV=1,AC=0,
7、P=093.2 指令系统第3章 8051指令系统和汇编程序设计3.2.2 算术运算类指令4.加1指令(5条)INC Rn ;(Rn)(Rn)1 INC direct ;(direct)(direct)1 INC Ri ;(Ri)(Ri)1 INC A ;(A)(A)1 INC DPTR ;(DPTR)(DPTR)1 功能:将指令中的操作数加1。103.2 指令系统第3章 8051指令系统和汇编程序设计3.2.2 算术运算类指令5.减1指令(4条)DEC A ;(A)(A)1 DEC direct ;(direct)(direct)1 DEC Ri ;(Ri)(Ri)1 DEC Rn ;(Rn)
8、(Rn)1功能:指令中的操作数减1。若原操作数为#00H,则减1后为#0FFH。注意:无无DPTR减减1指令。指令。若要使若要使(DPTR)1,必须要用一段程序来实现。,必须要用一段程序来实现。DPH DPL 如:如:01 00 00 01 00 01 DPH DPL 00 FF INC A和和DEC A,加加1指令和减指令和减1指令不影响标志位。指令不影响标志位。113.2 指令系统第3章 8051指令系统和汇编程序设计3.2.2 算术运算类指令5.减1指令(4条)DPTRSUB1:CLRC MOVA,DPL SUBB A,#1 MOVDPL,A MOVA,DPH SUBB A,#0 MOV
9、DPH,A如如(DPTR)=0580H,执行后结果为,执行后结果为057FH;如如(DPTR)=1000H,执行后结果为,执行后结果为0FFFH。123.2 指令系统第3章 8051指令系统和汇编程序设计3.2.2 算术运算类指令6.乘法指令(1条)MUL AB ;(B)(A)(A)(B)功能:将A和B中两个无符号8位二进制数相乘,所得的16位积的低8位存于A中,高8位存于B中。如果乘积大于255时,即高位B不为0时,OV置位;否则OV置0。C总是清0。7.除法指令(1条)DIV AB ;A/B;(A)商,(B)余数 功能:将A的内容除以B的内容,结果中的商保存于A,余数保存于B,并将C和OV
10、置0。当除数(B)=0时,结果不定,则OV置1。C总是清0。133.2 指令系统第3章 8051指令系统和汇编程序设计3.2.2 算术运算类指令8.十进制调整指令(1条)DA A功能:对两个压缩BCD码(一个字节存放2位BCD码)数相加的结果进行十进制调整注意:1)只能用在ADD和ADDC指令之后,对相加后存放在A中的结果进行修正。2)两个压缩BCD码按二进制数相加之后,必须经过此指令的调整才能得到正确的BCD码累加和结果。调整的条件和方法:1)若(A03)9或(AC)1,则(A03)(A03)6,即低位加6调整。2)若(A47)9或(Cy)1,则高位加6调整。DA A 指令对C的影响是只能置
11、位,不能清0。143.2 指令系统第3章 8051指令系统和汇编程序设计9.算术运算类指令举例例3-3:编程实现双字节无符号数相加,被加数放在内部RAM的20H和21H(低字节在前),加数放在2AH和2BH,结果送回20H和21H。程序如下:START:MOV R0,#20H ;被加数的首地址MOV R1,#2AH;加数的首地址MOV A,R0ADD A,R1MOV R0,A;和低字节保存到20H单元INC R0;R0指向被加数的高字节INC R1;R1指向加数的高字节MOV A,R0ADDC A,R1MOV R0,A;和高字节保存到21H单元程序执行之后,双字节相加的进位状态保存在Cy中。3.2.2 算术运算类指令153.2 指令系统第3章 8051指令系统和汇编程序设计9.算术运算类指令举例例3-4:已知(A)=0FFH,(R0)=55H,(56H)=0BBH,(DPTR)=10FFH。执行下面的指令后A、R0、56H及DPTR中的内容分别是什么?INC A ;(A)=00H INC R0 ;(R0)=56H INC 56H;(56H)=0BCH INC R0;(56H)=0BDH INC DPTR ;(DPTR)=1100H3.2.2 算术运算类指令执行结果:执行结果:(A)=00H,(R0)=56H,(56H)=0BDH,(DPTR)=1100H。
限制150内