首页 理论教育 加法指令调整BCD码运算结果

加法指令调整BCD码运算结果

时间:2023-11-19 理论教育 版权反馈
【摘要】:该指令只能对BCD码加法运算结果进行调整,且必须紧跟ADD或ADDC指令使用,它不能用于十进制数减法的调整。

加法指令调整BCD码运算结果

1.不带进位的加法指令ADD

这组加法指令的功能是把源操作数累加器A的内容相加,其结果放入累加器A中。指令的执行会对进位标志CY、辅助进位标志AC、溢出标志OV及奇偶校验标志P产生影响。

若运算结果中D7位产生进位,则进位标志CY被置1,否则CY被清0;若结果中的D3位产生进位,则辅助进位标志AC被置1,否则AC被清0。若把参加运算的数看作是带符号数,如果出现两个正数相加得到的是负数,或两个负数相加为正数,说明运算结果超过8位二进制补码所表示的范围,OV被置1,否则OV被清0。奇偶标志位P将随累加器A中1的个数的奇偶性变化,若A中1的个数为奇数,则P置1,否则P置0。

例如:设(A)=84H,(30H)=8DH,(PSW)=00H,执行指令:

试分析运算结果及对各标志位的影响。

将A中的内容与30H中的内容相加,即:

则运算结果为(A)=11H;(PSW)=0C4H,其中(CY)=1,(AC)=1,(OV)=1,(P)=0。

2.带进位加法指令ADDC

带进位加法运算指令常用于多字节加法运算。指令如下:

这组指令是把源操作数和累加器A的内容及进位标志CY相加,将结果存放在累加器A中。运算结果对PSW各位的影响与ADD加法指令相同。

这组指令多用于多字节加法运算中,因为在进行高字节加法时,要考虑低位字节向高位字节的进位情况。

例如:设(A)=42H,(R3)=68H,(PSW)=80H,执行指令:

视频:ADDC指令调试

将A中的内容与R3中的内容相加,并考虑当前的进位值,即:(www.xing528.com)

则运算结果为(A)=0ABH;(PSW)=05H,其中(CY)=0,(AC)=0,(OV)=1,(P)=1。

3.加1指令INC

视频:INC指令调试

这组增量指令的功能是把所指的操作数加1,若原来操作数为0FFH,加1后则溢出为00H。除“INC A”影响标志P外,这组指令不影响其他任何标志位。

例如:设(A)=86H,(R1)=10H,(10H)=0FH,(R0)=0FFH,(20H)=00H,执行指令:

则运算结果为(A)=87H,(R0)=00H,(10H)=10H,(20H)=01H。

4.十进制调整指令DA

这条指令的功能是对累加器中由上一条加法指令所获得的8位运算结果进行十进制调整,使它变为压缩BCD码。

该指令只能对BCD码加法运算结果进行调整,且必须紧跟ADD或ADDC指令使用,它不能用于十进制数减法的调整。

例如:设(A)=42H,表示十进制数42的压缩BCD码;(R3)=68H,表示十进制数68的压缩BCD码,(PSW)=80H,执行指令:

将A中的内容与R3中的内容进行带进位加法运算,并根据结果进行调整,即:

第一条指令执行后累加器的内容为0ABH,且CY=0,AC=0。显然累加器的内容并不是3个数相加后的BCD码值,高低4位均大于9,所以必须由第二条指令“DA A”进行加66H的调整操作,结果得到BCD码111。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈