专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

算术运算指令

作者:佚名   来源:本站原创   点击数:  更新时间:2007年09月17日   【字体:

表 3-3  算术运算指令

操作码

目标操作数

参与运算的操作数

说     明

Cy

AC

OV

P

ADD A Rn; direct; @Ri; # data

不带进位加

 

Ö

 

Ö

 

Ö

 

Ö

ADDC

A

Rn; direct; @Ri; # data

带进位加

SUBB

A

Rn; direct; @Ri; # data

带借位减

MUL

AB

(A)*(B)

积在(B)(A)

 

0

 

-

 

Ö

 

Ö

DIV

AB

(A)/(B)

商 (A) ,余数 (B)

DA

 A

只对加法作十进制修正

Ö

-

-

Ö

INC

A; Rn; direct; @Ri; DPTR

加一

 

-

 

-

 

-

 

Ö

DEC

A; 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,#30H

MOV  R2,#10

MOV  R3,#0

MOV  R4,#0

MOV  R5,#0

LOOP:MOV  A,@R0

ADD  A, R3

MOV  R3,A

INC  R0

MOV  A,@R0

ADDC  A,R4

MOV  R4,A

INC  R0

MOV  A,#0

ADDC  A,R5

MOV  R5,A

DJNZ  R2,LOOP

 


ê          将内部RAM中从30H开始存放的10个4位十进制正整数(压缩BCD码)相加,其和送(R5 R4 R3),低字节在R3。

 

ê      比较A与B中的无符号数,大数存B。

MOV  R2,A

CLR  C       ;确保C = 0

SUBB  A,B

JC  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   ;

转载须保留地址:http://www.51hei.com/mcu/281.html

 

ê          单字节二进制数转十进制(BCD)数:二进制数在A,十进制数存入(R2R3)


MOV  B,#10

DIV  AB      ; 除十, 余个位

MOV  R3,B  ; 个位存R3

MOV  B,#10

DIV  AB     ; 再除十, 余十位

MOV  R2,A ; 商为百位,存R2

MOV  A,B

SWAP  A    ;

ADD  A,R3 ; 十位与个位合并

MOV  R3,A;

这些算术运算指令你应该了解了吧

关闭窗口

相关文章