产品选型

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

小编 2024-10-10 产品选型 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清零。

单片机中数的表示及运算

单片机中的数是以二进制表示的,分为有符号数和无符号数两种。

有符号数的表示方法

有符号数是指有“ + (正)”、“ − (负)”符号的数。由于单片机采用二进制数,所以只有“1 ”和“0”两种数字,其中用“ 0 ”表示“ + ”,用“ 1 ”表示“ − ” 。单片机中的数据一般只有8位,一般规定最高位为符号位,因为要用1位表示数的符号,所以只有7位用来表示数值,可以表示− 127~+128。

有符号数的表示方法有 3 种:原码、反码和补码。同一有符号数,用 3 种表示方法得到的数是不同的。下面用3种方法来表示两个有符号数+1011101和− 1011101。

(1)原码

用“1”表示“−”,用“0”表示“+”,其他各数保持不变,采用这种方法表示出来的数称为原码。

+1011101用原码表示是01011101,可写成[01011101] 原。

− 1011101用原码表示是11011101,可写成[11011101] 原。

(2)反码

反码是在原码的基础上求得的。对于正的有符号数,其反码与原码相同;对于负的有符号数,其反码除符号位与原码相同外,其他各位数由原码各位数取反得到。

+1011101用反码表示是01011101,可写成[01011101] 反。

− 1011101用反码表示是10100010,可写成[10100010] 反。

(3)补码

补码是在反码的基础上求得的。对于正的有符号数,其补码与反码、原码相同;对于负的有符号数,其补码除符号位与反码一致外,其他数由反码加1得到。

+1011101用补码表示是01011101,可写成[01011101] 补。

− 1011101用补码表示是10100011,可写成[10100011] 补。

有符号数的运算

用原码表示有符号数简单、直观,但在单片机中,如果采用原码进行减法运算,需要很复杂的硬件电路;如果用补码,可以将减法运算变为加法运算,从而省去减法器而简化硬件电路。

例如:用二进制减法运算和补码加法运算分别计算35 − 21。

① 二进制减法运算:35 − 21=00100011 − 00010101=00001110

② 用补码加法运算。

先将算式转换成补码形式,35 − 21=[+35]+[ − 21]= [00100011] 原 +[10010101] 原 =[00100011] 反+ [11101010] 反 =[00100011] 补 +[11101011] 补。

再对补码进行二进制加法运算:

从上面的运算过程可以看出,补码的符号也参与运算,在8位单片机中,由于数据长度只能有8位,上式结果有9位,第9位会自然丢失,补码加法的运算结果与二进制减法的运算结果是一样的,都是00001110=14。

由此可见,用补码的形式进行运算,可以将减法运算转换为加法运算,运算结果仍是正确的,所以单片机普遍采用补码的形式表示有符号数。

无符号数的表示方法

无符号数因为不用符号位, 8 位全部用来表示数据,所以这种方法可以表示的数据范围是 0 ~ 255 。 8位二进制数的不同表示方式的换算关系见表1-6。

表1-6 8位二进制数的不同表示方式的换算关系

表1-6

续表

表1-6

从表1-6中可以看出,对于同一个二进制数,当采用不同的表示方式时,得到的数值是不同的,特别是大于10000000的有符号数。若想确切知道单片机中的二进制数所对应的十进制数是多少,先要了解该二进制数是有符号数还是无符号数,再换算出该二进制数对应的十进制数。

相关问答

单片机 用位操作指令实现下列操作:1、使ACC.0置1;2、清除累加...

[最佳回答]1.使ACC.0置1;ORLA,#01H2.清除累加器高4位;ANLA,#0FH3、清除ACC.3,ACC.4,ACC.5,ACC.6ANLA,#10000111B4.编写两个16位数的减法...

单片机 中cy是什么意思?

CY是指Cypress公司的产品代号前缀,Cypress公司是一家半导体设计和制造公司,主要生产和销售微控制器、存储器、时钟、USB控制器、蓝牙芯片、模拟器件和分立器件...

单片机 中ac是什么意思?

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

单片机 指令中JNC能比较数的大小?

单片机比较大小可以用减法指令来实现,比如比较两个数A与B的大小,步骤如下:1、先将借位清0。2、执行指令SUBB,也就是A-B。3、判断,借位C的状态,如果C等...

单片机 题,已知累加器A的数值为98H,它与0FAH相加,相加后会...

[最佳回答]首先要理解这三个标志位的含义CY为进位标志位不难理解;AC为辅助进位标志位,即当进行BCD码加法或减法操作而产生的由低四位向高四位借位或进位时被置...

单片机 执行指令的三个阶段-牌子网

下面分别说说单片机执行指令的三个阶段。1、取指令阶段根据程序计数器PC的值,从程序存储器读出当前要执行的指令,并将该指令送到指令寄存器。2、指...

cy值是什么?

CY(Carry)在单片机里是进位标志。CY=0是无溢出,CY=1有溢出。用于表示加法进算中的进位和减法运算中的借位,加法运算中有进位或减法运算中有借位则CY位置1,否则...

减法 指令cy位怎么判断?

CY(Carry):用于表示加法进算中的进位和减法运算中的借位,加法运算中有进位或减法运算中有借位则CY位置1,否则为0OV:表示运算过程中是否发生了溢出,若运算结...

我采用两个 运算 放大器组成了一个 减法 器先将热电偶最_作业帮

[最佳回答]放大器的增益不要过大那样会引起很多的问题,如自激、噪声等问题,另外看你的后级处理电路用的啥,如果用的AD转换单片机处理,建议你这个电路前级第一...

单片机 C51如何将ADC0809转换过来的值0--255进行比较?

你可以计算:在0V时ADC输出0,5V时ADC输出255,所以你计算好你需要比较参考的电压的大小,比如2.5V,对应的数字量为127左右。然后用ADC输出的数值与参考数值...

猜你喜欢