新闻  |   论坛  |   博客  |   在线研讨会
算术运算指令
tongxin | 2009-05-18 12:49:43    阅读:1582   发布文章

表 3-3 算术运算指令操作码目标操作数参与运算的操作数说 明CyACOVPADDARn; direct; @Ri; # data不带进位加ÖÖÖÖADDCARn; direct; @Ri; # data带进位加SUBBARn; direct; @Ri; # data带借位减MULAB(A)*(B)积在(B)(A)0-ÖÖDIVAB(A)/(B)商 (A) ,余数 (B)DAA只对加法作十进制修正Ö--ÖINCA; Rn; direct; @Ri; DPTR加一---ÖDECA; Rn; direct; @Ri (无DPTR)减一*“Ö”表示标志位根据运算结果取值,“-”表示对标志位无影响。1. 算术运算指令的一般性说明ê 除加1/减1指令外,一般以累加器Acc为目标,且影响标志位。ê 没有不带借位减指令。用SUBB作不带借位减运算,Cy应先清零。ê 乘法若 积 > 255 , 则OV = 1 ; 除法若 除数 = 0 , 则OV = 1 。ê DA A 指令只对ADD 或ADDC作十进制修正。ê 无 DEC DPTR指令。2. 加/减算术运算指令指令应用例ê 将内部RAM中从30H开始存放的10个双字节无符号整数相加,其和送(R5 R4 R3),低字节在R3。

MOV R0,#30HMOV R2,#10MOV R3,#0MOV R4,#0MOV R5,#0LOOP:MOV A,@R0ADD A, R3MOV R3,AINC R0MOV A,@R0ADDC A,R4MOV R4,AINC R0MOV A,#0ADDC A,R5MOV R5,ADJNZ R2,LOOP
ê 将内部RAM中从30H开始存放的10个4位十进制正整数(压缩BCD码)相加,其和送(R5 R4 R3),低字节在R3。ê 比较A与B中的无符号数,大数存B。MOV R2,ACLR C ;确保C = 0SUBB A,BJC DONE ;若有借位,A<B,转DONE 结束。MOV B,R2 ;没有借位,A>B,将大数存B。DONE: ¼¼
3. 乘/除算术运算指令指令应用例ê 双字节数乘单字节数:双字节数在(R3R4),单字节数在(R2),积送(R3R4R5)
MOV A,R2 ;MOV B,R4 ;MUL AB ; (R4)´(R2)MOV R5,A ;MOV R4,B ;MOV A,R2 ;MOV B,R3 ;MUL AB ; (R3)´(R2)ADD A,R4 ;MOV A,#0 ;ADDC A,B ;MOV R3,A ;
ê 单字节二进制数转十进制(BCD)数:二进制数在A,十进制数存入(R2R3)
MOV B,#10DIV AB ; 除十, 余个位MOV R3,B ; 个位存R3MOV B,#10DIV AB ; 再除十, 余十位MOV R2,A ; 商为百位,存R2MOV A,BSWAP A ; ADD A,R3 ; 十位与个位合并MOV R3,A;

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
最近文章
寂寞如雪
2009-05-19 19:01:18
夜色花
2009-05-19 18:56:22
没有爱可以重来
2009-05-19 18:54:59
推荐文章
最近访客