- 1、本文档共89页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
主要内容主要内容数据传送与交换指令注:①只能从程序存储器读取数据到A累加器。
②只能使用变址间接寻址方式1)DPTR为基址寄存器 MOVCA,@A+DPTR;A←(A+DPTR) 查表范围为64KB程序存储器任意空间。主要内容算术运算指令主要内容主要内容◆寻址方式◆数据传送与交换指令◆算术和逻辑运算指令◆控制转移指令◆位操作指令作用:改变程序计数器PC的值,从而改变程序执行方向。分为四大类: 无条件转移指令; 条件转移指令; 调用指令; 返回指令。控制转移指令1无条件转移类指令(4条)短转移类指令:AJMPaddr11长转移类指令:LJMPaddr16相对转移指令:SJMPrel间接转移指令:JMP@A+DPTR(1)上面的前三条指令,统统理解成:PC值改变,即跳转到一个标号处。那么它们的区别何在呢?跳转的范围不同。短转移类指令:AJMPaddr11长转移类指令:LJMPaddr16相对转移指令:SJMPrel转移范围:2KB64KB-128~+127指令长度不同原则上,所有用SJMP或AJMP的地方都可以用LJMP来替代。6累加器A与片外RAM之间的数据传递类指令(4条) MOVXA,@Ri MOVX@Ri,A MOVXA,@DPTR MOVX@DPTR,A说明:在51中,与外部存储器RAM打交道的只可以是A累加器。比如,要将外部RAM中某一单元(设为0100H单元的数据)送入另一个单元(设为0200H单元),也必须先将0100H单元中的内容读入A,然后再送到0200H单元中去。例:将外部RAM中100H单元中的内容送入外部RAM中200H单元中。 MOVDPTR,#0100H MOVXA,@DPTR MOVDPTR,#0200H MOVX@DPTR,A片外数据存储器不能直接寻址。下列为非法指令:MOVXA,2000H×MOVX2100H,2000H×7读程序存储器指令(2条)MOVCA,@A+DPTRMOVCA,@A+PC本组指令是将ROM中的数送入A中。本组指令也被称为查表指令,常用此指令来查一个已做好在ROM中的表格说明:查找到的结果被放在A中。2)PC为基址寄存器 MOVCA,@A+PC ;A←(A+PC) 常数表只能在查表指令后256B范围内。例:有一个数在R0中,要求用查表的方法确定它的平方值(此数的取值范围是0-5) MOVDPTR,#100H MOVA,R0 MOVCA,@A+DPTR .… ORG0100H DB0,1,4,9,16,25如果R0中的值为2,则最终地址为100H+2为102H,到102H单元中找到的是4。8堆栈操作(2条) PUSHdirect;SP?SP+1,(SP)?(direct) POPdirect;(direct)?(SP),SP?SP-1第一条为压入指令,就是将direct中的内容送入堆栈中,第二条为弹出指令,就是将堆栈中的内容送回到direct中。例: MOVSP,#5FH MOVA,#100 MOVB,#20 PUSHACC PUSHB将SP中的值加1,即变为60H,然后将A中的值送到60H单元中,因此执行完本条指令后,内存60H单元的值就是100,同样,执行PUSHB时,是将SP+1,即变为61H,然后将B中的值送入到61H单元中,即执行完本条指令后,61H单元中的值变为20。9交换指令(5条) XCHA,Rn ;A←→Rn XCHA,direct ;A←→(direct) XCHA,@Ri ;A←→(Ri) XCHDA,@Ri ;A.3~A.0←→(Ri).3~(Ri).0 SWAPA ;A.3~A.0←→A.7~A.4例:已知A中的内容为34H,R0指向的单元的内容为56H MOVR6,#29H XCHA,R6 SWAPA XCHA,R6XCHDA,@R0;R6=29H;A=29H,R6=34H;A=92H
文档评论(0)