- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
14第十三章MCS-51单片机的指令系统
在MCS-51指令中,没有不带借位位的减法指令,如果想不考虑借位位,就在该减法指令前加一条Cy的清零指令。 CLR C ; 0→Cy 例:编程求9875H-6354H,结果的高8位放在内RAM 21H单元中,低8位放在内RAM 20H单元中。 ORG 0100H CLR C MOV R0 , #20H MOV A , #75H SUBB A , #54H MOV @R0 , A MOV A , #98H SUBB A , #63H INC R0 MOV @R0 , A SJMP $ END b.减1指令 DEC A ;(A)-1→A DEC Rn ;(Rn)- 1→Rn DEC direct ;(direct)-1→direct DEC @Ri ?;((Ri))-1→(Ri) 注意:没有DEC DPTR指令! 可用DEC DPH和DEC DPL指令实现。 ③?十进制调整指令 紧跟在ADD或ADDC指令之后 ?DA A 只能用于BCD码加法运算中 例. 编写程序完成78+53的加法程序,并对调整过程进行分析 MOV A , #78H ;78H→A ADD A , #53H ;78H+53H=CBH→A DA A 在MCS-51中没有十进制减法调整指令,MCS-51中的BCD减法运算必须采用BCD补码运算法则,然后对其和进行十进制加法调整来实现。 例.在50H和51H中分别存有被减数84和减数35,试编程求差,并把结果存入52H中。 DA A MOV 52H,A CLR C SJMP $ END ORG 0100H CLR C MOV A,#9AH SUBB A,51H ADD A,50H ④ 乘法和除法指令 MUL AB ;A×B→A和B DIV AB ;A÷B→A和B 注意:在使用乘除法指令时,只对8位无符号数进行乘除运算,被乘数或被除数只能来自累加器A,乘数或除数必须来自累加器B,对于乘法运算,结果的高八位存入B中,低八位存入A中,对于除法运算,商数存入A中,余数存入B中。 例.已知两个8位无符号数分别放在50H和51H中,编程求两数之积,并把积的低8位存入52H中,积的高8位存入53H中。 INC R1 MOV @R1,A INC R1 MOV @R1,B SJMP $ END ORG 2000H MOV R1,#50H MOV A,@R1 INC R1 MOV B,@R1 MUL AB 3. 逻辑运算指令 ① 逻辑与操作指令 ANL ?A,direct? ;A∧(direct) →A ANL ?A,#data?? ? ;A∧data →A ANL ?A,Rn????? ;A∧(Rn) →A ANL ?A,@Ri ;A∧((Ri)) →A ANL ?direct,#data?;(direct)∧data →direct ANL ?direct,A?????;(direct)∧A →direct 某位与0相与,该位结果为0,因此ANL常用于将某一单元中的若干位清零,称为屏蔽。 例. (A)=45H,(R5) =7BH ANL A , R5 A= ? 41H 例.(30H)=35H(5的ASCⅡ码),试编程把它变为BCD码。 MOV A , 30H ;(30H)→A ANL A , #0FH ;A∧0FH →A MOV 30H ,A ;A→(30H) ② 逻辑或操作指令 ORL ?A,direct? ;(A)∨(direct) →A ORL ?A,#data?? ?;(A) ∨data →A ORL ?A,Rn????? ;(A) ∨(Rn) →A ORL ?A,@Ri ;(A) ∨((Ri)) →A ORL ?direct,#data?;(direct) ∨data →direct ORL ?direct,A?????;(direct) ∨(A) →direct 某位与0“或”则该位保持不变,与1“或”则该位置1,因此,ORL
文档评论(0)