第2章51单片机的指令系统和C语言.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第二章 51 单片机的指令系统和 C 语言 2.1 51 单片机的寻址 2.2 51 单片机的指令 2.3 51 单片机的伪指令和汇编程序设计 2.4 51 单片机的 C 语言 2.5 C51 语言程序设计技巧 汇编语言和 C 语言是 51 单片机软件开发中最常用的语言,而指令系统又是 汇编语言开发的基础,通常来说 C 语言会用于较复杂的大型程序编写,汇编语 言则用于对效率要求很高的场合,尤其是底层函数的编写。 2.1 51 单片机的寻址 2.1.1 助记符和寻址基础 指令的汇编语言格式使用助记符来表示一条指令,其基本格式为:操作码 + 操作数。 在 51 单片机指令系统中常用的助记符: ? Rn :当前使用的工作寄存器 R0~R7 。 / ? Ri :当前使用的工作寄存器中可以用作间址寄存器的两个 R0 、 R1 。 ? direct : 8 位内部存储器地址,可以是 RAM 或者是特殊寄存器。 ? #data : 8 位立即数。 ? #data16 : 16 位立即数。 ? addr16 : 16 位目的地址。 ? addr11 : 11 位目的地址。 ? rel : 8 位偏移量,可以带符号。 ? bit :位地址。 ? @ :间址寄存器前缀,例如 @Ri 。 ? / :位操作数前缀,表示对该位操作数进行取反操作。 ? (x) :寄存器或存储单元 x 的内容。 ? ((x)) :以寄存器或存储单元 x 的内容作为地址的存储单元的内容。 ? → :数据传送方式。 2.1 51 单片机的寻址 2.1.2 寻址方式 ? ? ? 立即寻址:立即寻址是直接给出操作数的寻址方式,操作码后面的内容就是操作 数,由于这些操作数立即传送或者赋值,所以被称为立即数 。 直接寻址:直接给出操作数所在存储器地址的方式被称为直接寻址,操作数的地 址可以是内部数据存储器的用户区、特殊功能寄存器或者位地址空间 。 寄存器寻址:寄存器寻址和直接寻址类似,只是将数据存放在寄存器中,然后直 接给出寄存器的地址,这些寄存器可以是 R0~R7 、 A 、 B 、 DPTR ,其中 A 、 B 可 以联合起来作为一个 16 位的寄存器参与寻址;当使用位操作指令时候还可以使用 CY 。 寄存器间接寻址:将操作数所在的存储器地址放在一个寄存器中,然后对这个寄 存器寻址,这就是寄存器间接寻址,寄存器间接寻址方式可以访问内部数据存储 器和外部数据存储器 。 变址间接寻址:变址间接寻址是将基址寄存器内部数据加上变址寄存器内部数据 的结果作为操作数的存放地址 。 相对寻址:相对寻址方式是以 PC 的内容作为基础地址,加上指令中给定的偏移 量,所得到的结果为转移地址,其中偏移量是 8 位带符号数,范围在 +127~ -128 之间,一般用于程序的跳转,只能寻址程序寄存器 。 寻址空间范围:寻址空间是指寻址指令能使用的存储器地址范围,表 2.1 给出了 常用的寻址方式的寻址空间范围。 ? ? ? ? 2.2 51 单片机的指令 2.2.1 数据传送指令 ? ? ? ? ? ? ? MOV 指令: MOV 是将数据存储器或者寄存器中的源操作数内容送入目的操作数 的指令。 MOVC 指令: MOVC 和 MOV 指令类似,但是只能用于访问程序存储器,一般用 于查表操作,使用间址变址寻址。 MOVX 指令: MOVX 指令也和 MOV 指令类似,但是用于访问外部数据存储器, 可以使用 R0~R7 和 DPTR 间接寻址。 XCH 指令: XCH 指令用于完成累加器和源操作数之间的数据交换,所有的目的 操作数必须是累加器 A ,源操作数则可以是寄存器寻址、直接寻址和寄存器间接 寻址。 XCHD 指令: XCHD 是一个半字节交换指令,和 XCH 类似,但是交换的只是源操 作数和目的操作数的低半字节,它们的高半字节保持不变。 PUSH 指令: PUSH 用于将操作数压入堆栈,其操作数必须为直接寻址,例 2.11 给 出了 PUSH 指令的应用方法。 POP 指令: POP 用于把数据从堆栈中弹出到指定的内部数据存储器或者特殊功能 寄存器。 2.2 51 单片机的指令 2.2.2 算术指令 ? ? ? ADD 和 ADDC 指令: ADD 和 ADDC 是加法指令,其中 ADD 是不带进位的加法运算 指令,两个相加的数中目的操作数存放到累加器中,原数据可以采用立即寻址、 寄存器寻址、寄存器间接寻址或者直接寻址方式。 SUBB 指令: SUBB 是带借位的减法,其用法和 ADDC 完全类似,也会影响 PSW 的 对应标志位。 MUL 和 DIV 指令: MUL 是乘法指令,目的操作数为累加器 A ,源操作数为 B 寄存 器,使用寄存器寻址,相乘之后的结果低字节存放

文档评论(0)

jinxuetong + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档