- 1、本文档共3页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
51单片机汇编语言教程:11课单片机算术运算指令
51单片机汇编语言教程-慧净电子会员收集整理 (全部28课)
51 11 -
51 11 -
5511 1111 --
单片机汇编语言教程:第 课 单片机算术运算指令
(基于HJ-1G、HJ-3G实验板)
不带进位位的单片机加法指令
ADDA,#DATA;例:ADDA,#10H
ADDA,direct ;例:ADDA,10H
ADDA,Rn;例:ADDA,R7
ADDA,@Ri ;例:ADDA,@R0
用途:将A中的值与其后面的值相加,最终结果否是回到A中。
例:MOVA,#30H
ADDA,#10H
则执行完本条指令后,A中的值为40H。
下面的题目自行练习
MOV34H,#10H
MOVR0,#13H
MOVA,34H
ADDA,R0
MOVR1,#34H
ADDA,@R1
带进位位的加法指令
ADDCA,Rn
ADDCA,direct
ADDCA,@Ri
ADDCA,#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。
带借位的单片机减法指令
SUBBA,Rn
SUBBA,direct
SUBBA,@Ri
SUBBA,#data
51 51 WWW.HLMCU.COM /
推荐使用慧净 实验板。推荐 学习网 淘宝网:
51单片机汇编语言教程-慧净电子会员收集整理 (全部28课)
设(每个H,(R2)=55H,CY=1,执行指令SUBBA,R2之后,A中的值为73H。
说明:没有不带借位的单片机减法指令,如果需要做不带位的减法指令(在做第一次相减时),
只要将CY 清零即可。
乘法指令
MULAB
此单片机指令的功能是将A和B 中的两个8位无符号数相乘,两数相乘结果一般比较大,
因此最终结果用1个16位数来表达,其中高8位放在B中,低8位放在A中。在乘积大于
FFFFFH(65535)时,0V置1(溢出),不然OV为0,而CY总是0。
例:(A)=4EH,(B)=5DH,执行指令
MULAB 后,乘积是1C56H,所以在B 中放的是1CH,而A中放的则是56H。
除法指令
DIVAB
此单片机指令的功能是将A中的8位无符号数除了B中的8位无符号数(A/B)。除法一般
会出现小数,但计算机中可没法直接表达小数,它用的是我们小学生还没接触到小数时用的
商和余数的概念,如13/5,其商是2,余数是3。除了以后,商放在A中,余数放在B中。
CY和OV 都是0。如果在做除法前B 中的值是00H,也就是除数为0,那么0V=1。
加1指令
INCA
INCRn
INCdirect
INC@Ri
INCDPTR
用途很简单,就是将后面目标中的值加1。例:(A)=12H,(R0)=33H,(21H)=32H,(34H)
=22H,DPTR
文档评论(0)