- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
指令系统及程序设计
?1、用数据传送指令完成如下功能:
(1)工作寄存器R2的内容送给R3;
MOV A,R2
?????? MOV R3,A;
两个工作寄存器之间不能直接进行数据传送
(2)内部RAM20H单元的内容送给内部RAM30H单元;
?? MOV 30H,20H;
两个直接地址之间可以直接进行数据传送
(3)内部RAM20H单元的内容送给外部RAM20H单元;
?? MOV? R1,#20H
?????? MOV? A,@R1
?????? MOVX @R1,A;
内部RAM中的数据必须要先送到累加器A再由A送出到外部RAM去
??(4)外部RAM20H单元的内容送给外部RAM2000H单元;
?? MOV RI,#20H
?????? MOV DPTR,#2000H
?????? MOVX A,@R1
?????? MOVX @DPTR,A;
两个外部RAM单元也不能直接进行数据传递,必须要先将外部RAM一个单元数据送给A再由A到另一个外部RAM单元中去
??(5)ROM30H单元的内容送给内部RAM30H单元;
?? MOV DPTR,#0030H
?????? MOV A,#00H
?????? MOVC A,@A+DPTR
?????? MOV 30H,A
要先将ROM指定单元数据送给A再由A到内部RAM指定单元中
??
(6)ROM3000H单元的内容送给外部RAM2000H单元;
MOV DPTR,#3000H
?????? MOV A,#00H
?????? MOVC A,@A+DPTR
?????? MOV DPTR,#2000H
?????? MOVX @DPTR,A
要先将ROM指定单元数据送给A再由A到外部RAM指定单元中去
小结:
注意数据传送类指令有三种:MOV(内部数据传送)、MOVC(从程序存储器中取数)、MOVX(累加器A与外部数据存储器间进行数据传递),要注意区分三种指令,不要混淆;
外部数据存储器(外部RAM)只能用寄存器间接寻址方式访问,且只能与累加器A进行数据传送;
外部数据存储器(外部RAM)使用寄存器间接寻址的地址指针选取原则:地址在8位以内(00H-FFH)可以使用R0、R1,也可以使用DPTR;地址超过8位,只能使用DPTR;
内部数据存储器(内部RAM)低128B可以用直接寻址方式也可以寄存器间接寻址方式访问;内部数据存储器高128B(仅52子系列有)只能用寄存器间接寻址方式访问,地址指针选取R0或R1;
程序存储器(ROM)是只读的,从ROM中读取数据用MOVC指令,对应变址寻址方式,要预先在A和DPTR(MOVC A,@A+DPTR)或A(MOVC A,@A+PC)中设好相应的值;
?2、外部RAM20H单元的内容和外部RAM21H单元的内容相乘,结果低八位送外部RAM22H单元,高八位送外部RAM23H单元
MOV R1,#20H
?? MOVX A,@R1
?? MOV B,A
?? INC R1
?? MOVX A,@R1
?? MUL AB
?? INC R1
?? MOVX @R1,A
?? INC R1
?? MOV A,B
?? MOVX @R1,A
外部数据存储器(外部RAM)只能用寄存器间接寻址方式访问,且只能与累加器A进行数据传送;如MOVX B,@DPTR是非法指令。
3、完成两个三字节二进制数的加法:第一个数存在内部RAM的30H、31H、32H(32H为最低字节)单元,第二个数存在内部RAM的40H、41H、42H(42H为最低字节)单元,结果存入内部RAM的 30H、31H、32H(32H为最低字节)单元。
? ORG 0000H
?????? SJMP MAIN
?????? ORG 0030H
?MAIN: CLR C
?????? MOV R2,#3
?LOOP: MOV R0,#32H
?????? MOV R1,#42H
?????? MOV A,R0
?????? ADDC A,R1
?????? MOV R0,A
?????? DEC R0
?????? DEC R1
?????? DJNZ R2,LOOP
?????? SJMP $
注意三字节数加法,高字节做加法时要考虑到低字节所产生的进位,所以用ADDC指令。
4、用逻辑运算指令完成如下功能:
(1)内部RAM20H单元数的低三位清零,其余位保持不变;
ANL 20H,#0F8H;
??(2)内部RAM20H单元数的高两位置1 ,其余位保持不变;
ORL 20H,#0C0H
?(3)内部RAM20H单元数的高两位取反,其余位保持不变;
? XRL 20H,#0C0H
?(4)内部RAM20H单元数的所有位取反;
XRL 20H,#0F
文档评论(0)