第3章++指令系统要点解析.ppt

  1. 1、本文档共87页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
定的、按一定顺序排列的表格存放在程序存储器中,在程序运行中由A的动态参量来确定读取对应的表格参数。 第3条为散转指令,A中内容为程序运行后的动态结果,可根据A中不同内容,实现跳向不同程序入口的跳转。 6.相对寻址方式 解决程序转移。该寻址是以该转移指令的地址(PC值)加上它的字节数,再加上相对偏移量(rel),形成新的转移目的地址,从而程序转移到该目的地址。转移的目的地址用下式计算: 目的地址=转移指令所在的地址+转移指令字节数+rel AT89S51有两个DPTR,通过设置特殊功能寄存器AUXR1中的DPS位来选择。当DPS=1,则指令中的DPTR即为DPTR1,DPTR0被屏蔽,反之亦然。 DPTR为16位的数据指针,分为DPH和DPL。操作十分灵活方便。设有两个DPTR后,就可避免频繁的出入堆栈操作。 对于所有MOV类指令,累加器A是一个特别重要的8位寄存器,CPU对它具有其他寄存器所没有的操作指令。后面将要介绍的加、减、乘、除指令都是以A作为目的操作数。 该指令占用一个字节,下一条指令的地址为1001H,(PC)=1001H再加上A中的30H,得1031H,结果把程序存储器中1031H的内容送入累加器A。 优点:不改变特殊功能寄存器及PC的状态,根据A的内容就可以取出表格中的常数。 缺点:表格只能存放在该条查表指令所在地址的+256个单元之内,表格大小受到限制,且表格只能被一段程序所用。 (2)MOVC A,@A+DPTR DPTR为基址寄存器,A的内容(无符号数)和DPTR的内容相加得到一个16位地址,把由该地址指定的程序存储器单 XCH A,R7 ;(A) ?(R7) XCH A,40H ;(A) ?(40H) XCH A,@R0 ;(A) ?((R0)) 结果为(A)=0FH,(R7)=80H,(40H)=08H,(30H)=F0H。 结果为(A)=0FH,(R7)=80H,(40H)=08H,(30H)=F0H。 10.半字节交换指令 XCHD A,@Ri 累加器的低4位与内部RAM低4位交换。 例如:(R0)=60H,(60H)=3EH,(A)=59H,执行完“XCHD A,@R0”指令,则(A)=5EH,(60H)=39H。 正确的做法是读D锁存器的Q端状态,那里储存的才是前一时刻送给P1.0的真实值。就是说,凡遇“读取P1口前一状态以便修改后再送出”的情形,都应当“读锁存器”的Q端信息,而不是读取引脚的信息。 当P1口外接输入设备时,要想P1口引脚上反映的是真实的输入信号,必须要设法先让该引脚内部的场效应管截止才行(见图2-7),否则当场效应管导通时,P1口引脚上将永远为低电平,无法正确反映外设的输入信号。让场效应管截止,就是用指令给P1口的相应位送一个“1”电平,这就是为什么读引脚之前,一定要先送出1的原因。 例如,指令“POP Acc”不能写成“POP A”; 指令“SETB Acc.0”,不能写成“SETB A.0”。 4.书写2位十六进制数据前要加“0” 经常遇到必须在某些数据或地址的前面多填一个“前导”0,否则汇编就通不过?这是汇编语言的严格性和规范性的体现。 由于部分十六进制数是用字母来表示的,而程序内的标号也常用字母表示,为了将标号和数据区分开,几乎所有的汇编语言都规定,凡是以字母开头(对十六进制数而言,就是A~F开头)的数字量,应当在前面添加一个数字0。 5.条件转移指令 执行指令时,如条件满足,则转移;不满足,则顺序执行下一指令。转移目的地址在以下一条指令首地址为中心的256B范围内(-128~+127)。 JZ rel ;如果累加器内容为0,则执行转移 JNZ rel ;如果累加器内容非0,则执行转移 6.比较不相等转移指令 CJNE A,direct,rel CJNE A,#data,rel CJNE Rn,#data,rel CJNE @Ri,#data,rel 比较前两个操作数大小,如果值不相等则转移,并转向目的地址。 如果第一操作数(无符号整数)小于第二操作数(无符号整数),则进位标志位Cy置1,否则Cy清0。该指令的执行不影响任何一个操作数的内容。 7.减1不为0转移指令 把减1与条件转移两种功能合在一起。两条: DJNZ Rn,rel ;n =0~7 DJNZ direct,rel 用于控制程序循环。预先装入循环次数,以减1后是否为“0”作为转移条件,即实现按次数控制循环。 8.调用子程序指令 (1)长调用指令 LCALL addr16 可调用64KB范围内程序存储器中的任何一个子程序。执行时,先把PC

文档评论(0)

三沙市的姑娘 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档