当前位置:首页 > 单片机 > 单片机
[导读]ADD指令将源操作数和累加器A中的数相加,加法的结果存入累加器A,并且运算结果会影响PSW中的CY、OV、AC和P标志位。ADD指令对标志位的影响如下:当加法结果的第7位有进位时,则进位标志位CY被置1,否则被清0;如果加法结果的第3位有进位,则辅助进位标志位AC被置1,否则被清0;如果加法结果的第6位和第7位的进位情况不一致,则溢出标志位OV被置1,否则被清0;运算结束时,奇偶标志位P的值由累加器A中的数决定,若累加器A中的值以二进制表示后,其中“1”的个数为奇数个,则P为1,否则P为0。

算术运算指令包括加、减、乘和除法指令,其语法格式见表3-7。由表3-7可知,算术运算指令会对PSW中的某些位产生影响。

1.加法指令ADD和ADDC

ADD指令将源操作数和累加器A中的数相加,加法的结果存入累加器A,并且运算结果会影响PSW中的CY、OV、AC和P标志位。ADD指令对标志位的影响如下:当加法结果的第7位有进位时,则进位标志位CY被置1,否则被清0;如果加法结果的第3位有进位,则辅助进位标志位AC被置1,否则被清0;如果加法结果的第6位和第7位的进位情况不一致,则溢出标志位OV被置1,否则被清0;运算结束时,奇偶标志位P的值由累加器A中的数决定,若累加器A中的值以二进制表示后,其中“1”的个数为奇数个,则P为1,否则P为0。

ADDC指令与ADD指令的唯一区别是,前者在源操作数和累加器A的加法基础上再加上CY中的值。

2.十进制调整指令DA

指令ADD和ADDC将其源操作数和目的操作数作为二进制数(或十六进制数)进行加法计算,遵循“逢2进1”(或“逢16进1”)的二进制(或十六进制)计算规则,得到的运算结果为二进制数(或十六进制数)。如果用ADD和ADDC指令进行压缩BCD码(十进制数)的加法计算,则得不到正确的十进制计算结果,而使用DA指令可以将ADD和ADDC指令的运算结果调整为十进制的运算结果。

使用“DA A”指令进行十进制调整时,必须满足以下要求:在DA指令之前必须进行ADD或ADDC加法运算,并且参与加法运算的操作数必须是压缩BCD码数。

“DA A”指令调整时,先处理“个位”,再处理“十位”,“个位”的处理结果将影响“十位”的调整,具体步骤如下:

(1)调整BCD码运算结果的“个位”

1)若累加器A中运算结果的“个位”(即低4位)数大于9(非BCD码),则在累加器A的“个位”上加“6”。这样做是因为:在BCD码计算时,结果大于9则应产生进位,但是ADD和ADDC按照十六进制进行计算,只有结果大于15时才进位,从而导致“晚”进位,所以此时加“6”相当于将“逢16进1”的十六进制运算强制调整为“逢10进1”十进制运算。

2)若累加器A中运算结果的“个位”(即低4位)产生进位(辅助进位标志位(AC)=1),则在累加器A的“个位”上加“6”。这样处理的理由是:“个位”产生进位,意味着BCD码加法结果的个位大于15而产生了进位,但是该进位将使BCD码加法结果的个位数被减去16,而正常的十进制加法进位应该使个位数被减去10,所以需通过加“6”操作补上多减去的“6”。

(2)调整BCD码运算结果的“十位”

若累加器A中运算结果的“十位”(即高4位)数大于9(非BCD码)或累加器A中“十位”产生进位(进位标志位(CY)=1),则在累加器A的“十位”上加“6”。这样做的原因与步骤(1)相似。

【例3-34】DA指令举例。

以下程序段可以完成压缩BCD码的加法运算88H+02H=90H。

3.减法指令SUBB

SUBB指令将累加器A中的数减去源操作数和进位标志位CY,并将减法结果存入累加器A,其运算结果会影响PSW中的CY、OV、AC和P标志位。SUBB指令对标志位的影响如下:当减法的第7位有借位时,则进位标志位CY被置1,否则被清0;如果减法结果的第3位有借位,则辅助进位标志位AC被置1,否则被清0;如果减法结果的第6位和第7

位的借位情况不一致,则溢出标志位被置1,否则被清0;运算结束时,奇偶标志位P的值由累加器A中的数决定,若累加器A中的值以二进制表示后,其中“1”的个数为奇数个,则(P)=1,否则(P)=0。

【例3-35】SUBB指令举例。确定下段程序执行后,累加器A和PSW的值。

解:运行结果是(A)=8CH、(PSW)=0C1H(即P=1、OV=0、AC=1和CY=1)。

4.加1指令INC和减1指令DEC

INC指令和DEC指令分别对指令中唯一的操作数进行加1和减1操作,并将结果送回操作数。除了“INC A”和“DEC A”指令将影响奇偶标志位P以外,其他INC和DEC指令均不影响任何标志位。注意:这里所说的“不影响”是指标志位原来的状态保持不变。另外,“INC DPTR”指令进行16位数加1操作,该指令执行时,先将DPL加1,若产生进位,则将DPH加1,并且DPL加1和DPH加1产生的进位不影响AC和CY。另外,无“DEC DPTR”指令。

还需特别注意的是:若用INC和DEC修改单片机并行I/O口(P0~P3)的引脚状态,如指令“INC P0”,则指令执行时采用的是“读-修改-写”方式,即先从端口的输出锁存器(而不是端口的引脚)读取端口数据,然后修改该数据(INC指令进行加1操作,DEC指令进行减1操作),最后将修改结果输出到端口引脚上。

5.乘法指令MUL

乘法指令的格式见表3-7,乘法的被乘数和乘数均为8位无符号数,且默认存放在累加器A和寄存器B中。乘积为16位无符号数,其低8位存放于累加器A中,高8位存放在寄存器B中,如图3-2所示。

图3-2乘法指令示意图

乘法指令对标志位的影响为:若乘积大于0FFH,则溢出标志位OV被置1,否则被清0;进位标志位总会被乘法指令清0。

6.除法指令DIV

除法指令的格式见表3-7。与乘法指令相似,除法指令的被除数和除数均为8位无符号数,被除数默认放在累加器A中,除数默认放在寄存器B中。除法的商和余数均为8位无符号数,分别存于累加器A中和寄存器B中,如图3-3所示。

图3-3除法指令示意图

除法指令对标志位的影响:若除数不为0,则溢出标志位OV和进位标志位CY均被清0;若除数为0,则溢出标志位(OV)被置为1,且累加器A和寄存器B的值是不确定的。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭