十进制数(BCD码)运算指令
在计算机中十进制数是用BCD码来表示的,BCD码有两类:一类叫压缩型BCD码,一类叫非压缩型BCD码。用BCD码进行加、减、乘、除运算,通常采用两种方法:一种是在指令系统中设置一套专用于BCD码运算的指令;另一种是利用二进制数的运算指令算出结果,然后再用专门的指令对结果进行修正(调整),使之转变为正确的BCD码表示的结果。8086/8088指令系统所采用的是后一种方法。
在进行十进制数算术运算时,应分两步进行:
① 先按二进制数运算规则进行运算,得到中间结果。
② 再用十进制调整指令对中间结果进行修正,得到正确的结果。
下面通过几个例子说明BCD码运算为什么要调整以及怎样调整。
结果正确,这时调整指令不需要做什么。
结果不正确,因为在进行二进制加法运算时,低4位向高4位有一个进位,这个进位是按十六进制进行的,即低4位逢十六才进一,而十进制数应是逢十进一。因此,比正确结果少6,这时,调整指令应在低4位上加6。即:
加法运算后,低4位若向高4位有进位(即AF=1)时,调整指令应做加06H处理。
加法运算后,低4位>9时,调整指令需做加06H处理;高4位>9时,调整指令需做加60H处理。
加法运算后,当CF=1(有进位产生)时,调整指令应做加60H处理。
前面我们已经详细地介绍了二进制数的算术运算指令,下面主要介绍十进制数(BCD码)的调整指令。
⒈ 十进制加法的调整指令
根据BCD码的种类,对BCD码加法进行十进制调整的指令有两条AAA和DAA。
⑴ 非压缩型BCD码加法调整指令AAA (ASCII Adjus