网站大量收购独家精品文档,联系QQ:2885784924

第3章51单片机的指令系统.ppt

  1. 1、本文档共88页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章51单片机的指令系统.ppt

1.立即数寻址方式 直接在指令中给出操作数——也称立即数。 需在操作数前加前缀标志“#”。 例如: MOV A,#40H 翻译成机器代码后,第一个字节是操作码,第二字节是立即数,就是放在程序存储器内的常数。 2 寄存器寻址方式 指令中的操作数为某一寄存器的内容。 例如:MOV A,Rn ;(Rn)→A,n =0~7 把Rn中的源操作数送入到累加器A中。 本寻址方式的寄存器: (1)4组通用工作寄存区共32个工作寄存器。但只对当前工作寄存器区的8个工作寄存器寻址,指令中的寄存器名称只能是R0~R7。 (2)部分特殊功能寄存器,如累加器A、寄存器B以及数据指针寄存器DPTR等。 3.直接寻址方式 指令中直接给出操作数的单元字节地址(直接地址),该地址中的内容是操作数。 例如: MOV A,direct; “direct”是操作数的直接地址。 源操作数(右边的操作数)采用的是直接寻址方式。 适用对象: (1)片内RAM MOV A,42H;把内部RAM 42H单元的内容传送到A。 直接寻址方式 (2)特殊功能寄存器SFR MOV A,P0; SFR 符号地址 MOV A,80H;SFR 直接地址 直接寻址是访问片内所有特殊功能寄存器的唯一寻址方式。 (3)指令中两个操作数都可由直接寻址方式给出 例如: MOV direct1,direct2 MOV 42H,62H 把片内RAM中62H单元的内容送到片内RAM中的42H单元中 寄存器间接寻址方式 适用对象: (1)片内RAM MOV Ri,#40H MOV A,@Ri ;i=0或1 把内部RAM 40H地址单元中的内容传送给A。 (2)片外RAM MOV DPTR,#2000H; MOVX A, @ DPTR; 把外部RAM 2000H地址单元中的内容传送给A。 适用对象: (1)程序存储器中固定的表格项 MOVC A,@A+DPTR MOVC A,@A+PC 读取存放在程序存储器中的表格的某项 (2)程序存储器 JMP A,@A+DPTR 散转指令,PC=A+DPTR,A中内容为程序运行后的动态结果,可根据A中不同内容,实现跳向不同程序入口的跳转。 6.相对寻址方式 解决程序转移。 可用相对偏移量形成新的转向目的地址, 新的转向目的地址用下式计算: 目的地址=转移指令所在ROM的首地址+转移指令所占字节数+rel 其中,偏移量rel是带符号8位二进制补码数,–128~+127。 位地址的表示 (1)直接位地址给出 MOV C,40H;把位地址为40H的值送到进位位C。 (2)RAM单元字节地址+第N位 MOV C, 28H.0;把字节地址为28H的第0位值送进位位C (3)特殊功能寄存器名+第N位 CLR PSW.5 (4)用伪指令定义 片内 RAM(20H-2FH)中的位寻址区结构图 该指令占用一个字节,下一条指令的地址为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。 3.书写2位十六进制数据前要加“0” 经常遇到必须在某些数据或地址的前面多填一个“前导”0,否则汇编就通不过?这是汇编语言的严格性和规范性的体现。 由于部分十六进制数是用字母来表示的,而程序内的标号也常用字母表示,为了将标号和数据区分开,几乎所有的汇编语言都规定,凡是以字母开头(对十六进制数而言,就是A~F开头)的数字量,应当在前面添加一个数字0。 【例3-11】 (A)=90H,(R3)=73H,执行指令 XRL A,R

文档评论(0)

shiyouguizi + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档