发布网友 发布时间:2022-05-15 17:33
共2个回答
热心网友 时间:2023-08-22 06:35
用一个例子加以说明:用BCD码计算8+9,见下式 0000 1000 + 0000 1001 0001 0001 = (11)BCD结果应为17,而实际运算结果为11,这是什么原因呢?仔细分析一下,我们可以发现计算机在二进制运算过程中,如遇到低4位向高4位产生进位时(此时AF=1)是按逢十六进一的规则,但BCD码运算要求逢十进一。因此只要产生进位,BCD码的个位(低4位)就会丢失6,因此需要进行加6调正。如对上例的结果用AAA指令进行加6调整: 0001 0001 11 + 0000 0110 6 0001 0111 17 ∧ 0000 1111 0000 0111 AH←1,CF←1调整的结果AH=1,AL=7,CF=1。即BCD运算结果为17,个位向十位有进位。实际上当低4位的结果>9(即在A~F之间)时,也应进行加6调正。其原因是逢十没有产生进位,故需要用加6的方法强行产生进位。热心网友 时间:2023-08-22 06:36
BCD 码的种类,是有很多的。
有些 BCD 码,属于“无权码”,根本就没有运算的功能。
如果是 8421BCD 码,就可以像普通二进制数一样,相加减。
人工来做算术运算,还是比较简单的,需要“逢十进一”时,你自己注意就行了。
如果是用计算机来加减,就麻烦一些了。
因为,计算机只会做二进制,所以,它算出的结果,肯定是二进制了。
那么,在事后,就必须进行“十进制调整”,才能得到 BCD 码的结果。
一种进行“十进制调整”的电路如下: