产品概述

单片机 加法程序 跟电师傅学单片机(12):单片机算术运算加减法指令图文新解

小编 2025-10-07 产品概述 23 0

跟电师傅学单片机(12):单片机算术运算加减法指令图文新解

单片机算术运算类指令(24条)

算术运算指令是8位二进制数进行加、减、乘、除四则运算,以及加1、减1、十进制调整等。

本节介绍其中加减法12条指令。

加减法指令示意图

1:不带进位加法指令(4条)

ADD:不带进位标志CY的加法,功能是累加器A中的内容与源操作数所确定单元中的内容相加,其结果仍存在A中。

ADD A,Rn;属于寄存器寻址方式。指令功能是将寄存器Rn中的内容与累加器A中的内容相加,其结果送回A中。

ADD A,direct;属于直接寻址方式。指令功能是将直接地址direct中的内容与累加器A中的内容相加,其结果送回A中。

ADD A,@Rn;属于寄存器间接寻址方式。指令功能是将寄存器间接寻址单元中的内容与累加器A中的内容相加,其结果送回A中。

ADD A,#data;属于立即数寻址方式。指令功能是将立即数data与累加器A中的内容相加,其结果送回A中。

2:带进位加法指令(4条)

ADDC:带进位标志CY的加法,功能是累加器A中的内容与源操作数所确定单元中的内容相加,其结果仍存在A中。与ADD指令类似,不同之处是在执行加法时,还要将进位标志CY的内容一起加进去。

进位加法计算

标志寄存器PSW示意图

标志寄存器PSW功能图

CY:是标志寄存器PSW中的一个进位标志位。标志寄存器PSW也称程序状态字PSW,用于存放程序运行状态信息。

单片机系统上电或复位时,PSW初始值为00H。

3:减法指令(4条)

SUBB:带借位减法指令,与带进位加法指令类似,指令功能是把累加器A中的内容减去源操作数所确定单元中的内容和进位标志CY,其结果送回A中。

注意:在减法指令里面,只有带借位的减法,没有不带借位的减法,做减法运算时,如果是低8位时,必须把CY清零。

跟电师傅学单片机(13):单片机算术运算类指令图文讲解

一:加一减一指令(共9条)

单片机加一减一指令表

1、INC:单片机加1指令(共5条),主要用于修改地址指针和计数次数,只有一个操作数。

指令功能:是将操作数所确定的单元或寄存器中的内容加1,最后将结果还是送回原操作数单元中。

操作数:累加器A、寄存器Rn、直接地址direct、寄存器间接寻址单元、数据指针寄存器DPTR中的内容。

2、DEC:单片机减1指令(共4条),只有一个操作数,与INC指令类似。

指令功能:是将操作数所确定的单元或寄存器中的内容减1,最后将结果还是送回原操作数单元中。

操作数:累加器A、寄存器Rn、直接地址direct、寄存器间接寻址单元中的内容。

二:十进制调整指令(1条)

DA A

单片机十进制调整指令,功能是在进行BCD码加法运算时,用来对BCD码的加法运算结果自动进行修正,修正结果存放在A中。

BCD码:是二进码十进数或二-十进制代码,用4位二进制数来表示1位十进制数中的0~9这10个数码。

注意:

1:在进行BCD加法运算时,在单片机加法指令ADD或ADDC指令后紧跟着DA A指令,单片机自动判断和修正。

2:对BCD码的减法运算时不能用DA A指令不进行修正,不适用减法指令。

3:影响PSW中CY、AC、OV标志位。(请看下图:标志寄存器PSW功能图)

三:乘法指令(1条)

MUL AB

单片机乘法指令,功能是实现2个8位无符号数的乘法运算,相乘的2个数分别存放在累加器A中和寄存器B中,乘积结果为16位:低8位存放在A中,高8位存放在B中。

注意:

1:乘数和被乘数可以交换。

2:乘积结果大于255,PSW中的溢出标志位OV置1,否则为0 。

单片机标志寄存器PSW功能图

单片机指令举例:

02H和04H的乘法运算

MOV A,#02H

MOV B,#04H

MUL AB

执行指令结果:

A:08H

B:00H

OV:0

四:除法指令(1条)

DIV AB

单片机除法指令,功能是实现2个8位无符号数的除法运算,被除数放在累加器A中,除数放在寄存器B中。相除结果:商放在A中,余数放在B中。

注意:

单片机除法指令也影响PSW中CY和OV标志位,相除之后CY和OV均为0。(请看上图:标志寄存器PSW功能图)

单片机指令举例:

22和4的除法运算

MOV A,#22

MOV B,#04

MUL AB

执行指令结果:

A:05H

B:02H

CY:0

OV:0

单片机乘除法指令

到此为止,24条单片机算术运算类指令讲解完毕,谢谢阅读!欢迎留言讨论,共同提高!

相关问答

单片机 :求解四字节十进制无符号数 加法程序 。加数存储单元为5...

[最佳回答]第一个:MOVR7,#04H//做计数使用,DJNZR7,四次循环第二个:ADDA,@R1//加法计算,并存于A第三个:INCR0//R0自加第四个:R0:DAA//跳到R0,...

单片机 如何让按键控制温度加减?

要让单片机通过按键控制温度加减,首先需要连接一个温度传感器来获取当前温度值。然后,编写程序读取按键输入,并根据按键的不同操作进行相应的温度调节操作。例...

单片机 da指令abh等于多少?

单片机汇编言语,十进制加法运算,十进制调整指令daa,使用方法为紧跟加法指令。如mova,#38h;a=#38hadda,#27h;a=#38h+#27h=#5f...

如何提高 单片机 的算法?

多做练习,如果你现在用的C语言开发单片机,想提高自己的算法能力,那建议你多看看C语言的常用算法,然后用单片机板子上的LCD,LED等来验证自己的算法程序。举...多...

在80C51 单片机 里面,半进位标志位AC在加减运算里面是按照有符号数还是无符号数来设置标志位?

有、无符号数,是人类对数字的定义和理解。在计算机里面,参加运算的,都是普通的二进制数。八位数,分别称为D7D6D5D4D3D2D1D0。加法运算时:AC,...有、无...

我想用 单片机 的显示屏写一电子钟可是不知道怎么编才能调整时...

别忘了查阅你使用的单片机型号的手册以获取准确的指令和引脚配置信息首先,你需...记得处理加减小时、分钟的操作,并在程序中加入按键检测来调整时间5条回答:...

单片机 AC是什么?

AC是程序状态字PSW的一个位,名字叫辅助进位位,用于指示两个数进行加法运算时低半字节相加是否产生进位。例如,25H+72H=97H,AC=0,因为5H+2H=7H,不产生低半字...

一些 单片机 的基础题6、在片外扩展一片2764 程序 存储器芯片要(...

[最佳回答]6、在片外扩展一片2764程序存储器芯片要(13位)地址线。15、DA指令是(二进制转十进制)指令,它只能紧跟在(加法)指令后使用。38、在程序状态寄存器PS...

单片机 为什么还在用C语言编程?

答案是:C语言是最适合单片机编程的高级语言。这个问题的意思应该是:现在有很多很好用的高级语言,如java,python,VC等等,为...单片机为什么还在用C语言编程?答案...

51 单片机 汇编 程序 详解:POP是干什么的?

POP是弹栈指令,我们写程序过程中,有时候会用到,寄存器冲突现象,比如,我们刚在A中存储了一个数据,但是我们又要做加法,我们不希望A中的书据丢失,怎么办,...POP...

猜你喜欢