(玩电子) 电子技术学习与研讨
当时方位:单片机教程网 >> 根底教程 >> 阅览文章

11课:单片机算术运算指令

作者:佚名   来历:本站原创   点击数:x  更新时刻:2007年08月15日   【字体:
casino

不带进位位的单片机加法指令

ADD A,#DATA ;例:ADD A,#10H

ADD A,direct ;例:ADD A,10H

ADD A,Rn ;例:ADD A,R7

ADD A,@Ri ;例:ADD A,@R0

用处:将A中的值与这今后边的值相加,终究成果否是回到A中。

例:MOV A,#30H

ADD A,#10H

则履行完本条指令后,A中的值为40H。

下面的标题自行操练

MOV 34H,#10H

MOV R0,#13H

MOV A,34H

ADD A,R0

MOV R1,#34H

ADD A,@R1

带进位位的加法指令

ADDC A,Rn

ADDC A,direct

ADDC A,@Ri

ADDC A,#data

用处:将A中的值和这今后边的值相加,并且加上进位位C中的值。

阐明:因为51单片机是一种8位机,所以只能做8位的数学运算,但8位运算的规模只要0-255,这在实践工作中是不行的,因而就要进行扩展,一般是将2个8位的数学运算合起来,成为一个16位的运算,这样,能表达的数的规模就能到达0-65535。怎么兼并呢?其实很简单,让咱们看一个10进制数的例程:

66+78。

这两个数相加,咱们底子不在意这的进程,但事实上咱们是这样做的:先做6+8(低位),然后再做6+7,这是高位。做了两次加法,仅仅咱们做的时分并没有故意分红两次加法来做算了,或者说咱们并没有意识到咱们做了两次加法。之所以要分红两次来做,是因为这两个数超过了一位数所能表达的范置(0-9)。

在做低位时产生了进位,咱们做的时分是在恰当的方位点一下,然后在做高位加法是将这一点加进去。那么计算机中做16位加法时相同如此,先做低8位的,假如两数相加产生了进位,也要“点一下”做个符号,这个符号便是进位位C,在PSW中。在进行高位加法是将这个C加进去。例:1067H+10A0H,先做67H+A0H=107H,而107H明显超过了0FFH,因而终究保存在A中的是7,而1则到了PSW中的CY位了,换言之,CY就适当所以100H。然后再做10H+10H+CY,成果是21H,所以终究的成果是2107H。

带借位的单片机减法指令

SUBB A,Rn

SUBB A,direct

SUBB A,@Ri

SUBB A,#data

设(每个H,(R2)=55H,CY=1,履行指令SUBB A,R2之后,A中的值为73H。

阐明:没有不带借位的单片机减法指令,假如需要做不带位的减法指令(在做第一次相减时),只要将CY清零即可。

乘法指令

MUL AB

此单片机指令的功用是将A和B中的两个8位无符号数相乘,两数相乘成果一般比较大,因而终究成果用1个16位数来表达,其间高8位放在B中,低8位放在A中。在乘积大于FFFFFH(65535)时,0V置1(溢出),否则OV为0,而CY总是0。

例:(A)=4EH,(B)=5DH,履行指令

MUL AB后,乘积是1C56H,所以在B中放的是1CH,而A中放的则是56H。

除法指令

DIV AB

此单片机指令的功用是将A中的8位无符号数除了B中的8位无符号数(A/B)。除法一般会呈现小数,但计算机中可无法直接表达小数,它用的是咱们小学生还没接触到小数时用的商和余数的概念,如13/5,其商是2,余数是3。除了今后,商放在A中,余数放在B中。CY和OV都是0。假如在做除法前B中的值是00H,也便是除数为0,那么0V=1。

加1指令

INC A

INC Rn

INC direct

INC @Ri

INC DPTR

用处很简单,便是将后边方针中的值加1。例:(A)=12H,(R0)=33H,(21H)=32H,(34H)=22H,DPTR=1234H。履行下面的指令:

INC A (A)=13H

INC R2 (R0)=34H

INC 21H (21H)=33H

INC @R0 (34H)=23H

INC DPTR ( DPTR)=1235H

后成果如上所示。

阐明:从成果上看INC A和ADD A,#1差不多,但INC A是单字节,单周期指令,而ADD #1则是双字节,双周期指令,并且INC A不会影响PSW位,如(A)=0FFH,INC A后(A)=00H,而CY仍然坚持不变。假如是ADD A ,#1,则(A)=00H,而CY一定是1。因而加1指令并不适合做加法,事实上它主要是用来做计数、地址增加等用处。别的,加法类指令都是以A为中心的��其间一个数有必要放在A中,而运算成果也有必要放在A中,而加1类指令的目标则广泛得多,能是寄存器、内存地址、间址寻址的地址等等。

减1指令

减1指令

DEC A

DEC RN

DEC direct

DEC @Ri

与加1指令相似,就不多说了。

归纳操练:

MOV A,#12H

MOV R0,#24H

MOV 21H,#56H

ADD A,#12H

MOV DPTR,#4316H

ADD A,DPH

ADD A,R0

CLR C

SUBB A,DPL

SUBB A,#25H

INC A

SETB C

ADDC A,21H

INC R0

SUBB A,R0

MOV 24H,#16H

CLR C

ADD A,@R0

先写出每步运转成果,然后将以上标题建入,并在软件仿真中运转,调查寄存器及有关单元的内容的改变,是否与自已的料想成果相同。
 

宣布谈论】【告知老友】【保藏此文】【封闭窗口

文章谈论

188bet uedbet 威廉希尔 明升 bwin 明升88 bodog bwin 明升m88.com 18luck 188bet unibet unibet Ladbrokes Ladbrokes casino m88明升 明升 明升 m88.com 188bet m88 明陞 uedbet赫塔菲官网 365bet官网 m88 help
188bet www.188bet.com bwin 平博 unibet 明升 188bet uk Ladbrokes 德赢vwin 188bet m88.com w88 平博88 uedbet体育 188bet 188bet 威廉希尔 明升体育app 平博88 M88 Games vwin德赢 uedbet官网 bodog fun88 188bet