单片机原理及应用(第二版) 课件 3章 指令系统及汇编语言程序设计.pptx

单片机原理及应用(第二版) 课件 3章 指令系统及汇编语言程序设计.pptx

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

第3章指令系统及汇编语言程序设计;

3.1单片机的汇编语言与指令格式;

为了既能保持机器语言的特点,又能方便编写程序和阅读程序,人们采用助记符号来代替机器指令代码,助记符号与机器指令代码一一对应,我们把这种编程语言称为汇编语言(AssemblyLanguage)。需要说明的是,汇编语言是面向机器的程序设计语言,对于每种计算机,都有自己的汇编语言;汇编语言中由于使用了助记符号,因此将由汇编语言编制的程序输入计算机后,计算机不能像识别机器语言编写的程序一样直接识别和执行汇编语言程序,必须通过预先放入计算机的“汇编程序”的加工和翻译,才能把汇编语言程序变成能够被计算机识别和处理的二进制代码程序。;

3.1.2汇编语言的指令格式

MCS-51汇编语言的指令格式为

[标号:]操作码助记符[目的操作数][,源操作数][;注释]

其中:

[]:方括号表示该项是可选项,根据指令要求确定。

标号:用符号标明该指令所在程序存储器的地址,并以“:”结尾,设计者根据实际需要设置。

操作码助记符:用来规定指令所完成的操作,用英文缩写的指令功能助记符表示。该项不得省略。

;

目的操作数:表示操作的对象,是一个目标地址,也是存放操作结果的地址。目的操作数与操作码助记符之间必须用一个以上的空格分隔。

源操作数:表示操作的对象或者是操作数的来源,可以是一个地址或者一个立即数。源操作数与目的操作数中间用逗号分隔。

注释:是对指令或者程序段的解释说明,用以提高程序的可读性,注释前必须加分号。;

3.1.3汇编语言中常用符号约定

为了便于指令的描述,对指令中常用的符号有如下约定:

(1)?Rn:表示当前工作寄存器中的R0~R7,其中n=0~7。当前工作寄存器组由程序状态寄存器PSW的RS1和RS0位决定。

(2)?Ri:表示当前工作寄存器中的R0~R1,其中i取值为0或1。

(3)?direct:表示对内部单元直接寻址的8位地址,可以是内部RAM区的某一单元或某一特殊功能寄存器的地址,变化范围为00H~FFH。

;

(4)?@:表示间接寻址寄存器及地址寄存器的前缀。

(5)?DPTR:表示16位数据指针。

(6)?#data:表示指令中的8位立即数,其中#是立即数标识符,data表示8位数,取值范围为00H~FFH。

(7)?#data16:表示指令中的16位立即数,取值范围为0000H~FFFFH。

(8)?PC:表示16位程序计数器。

(9)?addr11:表示短转移的11位地址,用于2KB范围内寻址。

(10)?addr16:表示长转移的16位地址,用于64KB范围内寻址。;

(11)?rel:表示相对转移的地址偏移量。

(12)?bit:表示位寻址区的直接寻址位。

(13)?(x):表示x地址单元中的内容。

(14)?((x)):表示将x地址单元中的内容作为地址单元中的内容。

(15)?←:表示操作数据的流向,用箭头后面的内容替代前面的内容。

(16)?/:表示取反操作。;

3.2单片机的指令寻址方式;

该指令执行的操作是将立即数00H送到累加器A中,该指令就是立即数寻址。#00H中的“H”是说明该立即数是以十六进制表示的,实际编程时也可以用其他进制来表示。立即数寻址示意图如图3.1所示。;

3.2.2直接寻址

直接寻址是指把存放操作数的内存单元的地址直接写在指令中。在MCS-51单片机中,可以直接寻址的存储器主要有内部RAM区和特殊功能寄存器(SFR)区。例如:

MOVA,50H;(A)←(50H)

该指令执行的操作是将内部RAM中地址为50H单元的内容传送到累加器A中,其操作数50H就是存放数据的单元地址。所以该指令是直接寻址。若50H单元中的内容是55H,则该指令执行后A的内容就是55H。直接寻址示意图如图3.2所示。;

;

3.2.3寄存器寻址

寄存器寻址是指将操作数存放于寄存器中。寄存器包括工作寄存器R0~R7、累加器A、通用寄存器B、数据指针寄存器DPTR。例如:

MOVA,R0;(A)←(R0)

该指令执行的操作是把R0寄存器中的数据传送到A累加器中,其操作数存放在R0中,所以寻址方式为寄存器寻址。若R0寄存器单元中的内容是55H,则该指令执行后A的内容就是55H。寄存器寻址示意图如图3.3所示。;

;

3.2.4寄存器间接寻址

寄存器间接寻址是指将存放操作数的内部RAM地址放在特定的寄存器中,指令中只给出该寄存器。MCS-51指令系统中,能用于寄存器间接寻

文档评论(0)

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

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

1亿VIP精品文档

相关文档