(0101001)0m=(59)。(权值8421,每4位一组) (01011001)2=(79)0(权值2,=0,1,2,3,4,5….) 功能:DAA跟在BCD码加法后面,将A中的二进制码(相加时 按二进制计算,但本身是BCD码不是普通的二进制数)由硬件自动调 整为8421一BCD码,用于实现BCD码的加法运算(与加法结合)。 用法:DAA指令只能跟在ADD或ADDC加法指令后,不适用于 减法。 十进制加法指令: ADDA,源操作数 DA A 带进位十进制加法指令: ADDC A,源操作数 DA A 调整规则:调整的实质是将十六进制的加法运算转换成十进制, 具体操作为: ①若累加器A的低4位大于9(A一F),或者辅助进位位AC=1, 则累加器A的内容加06H(A←(A)+06H),且将AC置“1”。 ②若累加器A的高4位大于9(A一F),或进位位Cy=1,则累 加器A的内容加60H(A←(A)+60H),且将Cy置“1”。 所以:总共可能的加数为06(低满),60H(高满),66H(高低 满) 调整后,辅助进位位AC表示十进数中个位向十位的进位,进位 标志Cy表示十位向百位的进位
例:(A)=01010110=56BCD, (R3)=01100111=67BCD,(CY)=1: 执行下述二条指令:ADDC A,R3 DA A 执行ADDC A,R3 (A)01010110(56BCD) (R3)01100111(67BCD) 十 (CY) 1 10111110(高、低四位均大于9) 执行DAA +01100110(加66H的BCD码) Cy=100100100(得到124BCD) 即BCD码数56+67+1=124。经DAA指令校正后,答案 正确 8、乘法和除法指令 格式:MLAB; a×b=ba(两8位相乘得16位积,b存高8位,a存低8位) DIV A B;a÷b=a…b(a存商,b存余数) 【注意 ①这是MCS-51单片机唯一的一类单字节4周期指令,它相当于 4条加法指令的运行时间。 ②在乘法指令中对PSW的影响有Cy、OV、和P。具体如下: 0V表明积的大小,当积超过255(B≠0)时,0V=1:P取决于A中 “1”的个数:Cy→0(Cy总是清0):