微机原理与控制第三章(2009年春季).ppt_第1页
微机原理与控制第三章(2009年春季).ppt_第2页
微机原理与控制第三章(2009年春季).ppt_第3页
微机原理与控制第三章(2009年春季).ppt_第4页
微机原理与控制第三章(2009年春季).ppt_第5页
已阅读5页,还剩135页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机原理与控制 工学院 第3章 MCS-51单片机的指令系统 l3.1 指令格式 l3.2 寻址方式 l3.3 数据传送指令 l3.4 算术运算指令 l3.5 逻辑运算和环移指令 l3.6 位操作指令 l3.7 控制转移指令 l3.8 调用和返回指令 l3.9 伪指令 l3.10汇编语言程序设计 微机原理与控制 工学院 3.1 指令格式 l单片机要执行某种操作,用户必须按照格式编写指令,单片 机才能识别并准确操作。指令的编码规则称为指令格式。 l3.1.1 指令的格式 l1指令的一般格式 lMCS-51单片机指令的一般格式为:操作码 操作数。例如 指令:74H 30H。 l1)操作码 用来表示执行什么样的操作,例如传送、加、减 等。MCS-51系列单片机的操作码为8位二进制的机器码, 在指令中为第一字节。用机器码写成的指令是机器指令,也 称为指令代码。 微机原理与控制 工学院 3.1 指令格式 l2)操作数 表示参与操作的数据或数据的存储地址,不同类型的指令 ,操作数的个数是不一样的,可以有3个、2个、1个等。在具有多个 操作数的指令中,把它们分别称为第一操作数、第二操作数等。如 果操作数是一个直接参加操作的数据,这种操作数称为立即数;而 大部分操作数存放于寄存器或数据存储器的某个存储单元,操作数 字段仅指出操作数所在的寄存器或存储器地址。 l2常用指令格式 l编写指令时,要记住各种由“0”和“1”二进制数组成的代码和他们的 含义是很困难的,既容易出错,又不易检查。所以常用的指令格式 是以助记符表示的符号指令,也称汇编语言,由标号、操作码助记 符、操作数和注释4个字段组成,格式如下: l标号: 操作码助记符 操作数1 ,操作数2 ;注释 l其中,方括号内的项为任选项,需要此项时,指令中不写方括号; 两操作数之间应以逗号分开。 微机原理与控制 工学院 3.1 指令格式 l例如,指令: START: MOV A,#79H ;A79H l1)标号 标号是用户定义的符号,由以字母开始的18个字 符(字母或数字)组成,它代表指令的符号地址,通常在程序 分支、转移等所需要的地方加上一个标号,并不是每条指令 都必须有标号。当将指令转换成机器指令时,指令第一字节( 也称首字节)的存储单元地址值赋给该标号。 l2)操作码助记符 助记符是一些代表操作含义的英文缩写, 一般由25个英文字母组成,如“MOV”表示“传送”、 “ADD”表示“加”等。操作码助记符对应的机器码是指令的第 一字节,也是指令不可缺少的部分。 l3)操作数 与机器指令格式中的操作数相似。 l4)注释 注释是对本指令或本段程序的功能说明,便于对程 序的阅读理解,在转换成机器指令时不予考虑。注释的前面 需加分号“;”。 微机原理与控制 工学院 3.1 指令格式 l单片机识别机器指令,编程人员使用符号指令,机器指 令与符号指令之间有一一对应的关系,绝没有重复。各 种指令的机器码不需要记忆,编程人员可查阅机器指令 与符号指令的映射表将符号指令译成机器指令,这个过 程称为汇编;但更多的是用专门的软件来完成汇编过程 。 l3.1.2 指令的分类 lMCS-51指令系统有33种操作功能。指令助记符与寻址方 式组合,得到111种指令。分类如下: 微机原理与控制 工学院 3.1 指令格式 l 1按字节数分类 l 1) 单字节指令,有49条。 l 2) 双字节指令,有45条。 l 3) 3字节指令,有17条。 l 2按指令执行时间分类 l 1) 单周期指令,有64条。 l 2) 双周期指令,有45条。 l 3) 四周期指令,乘、除各有1条。 微机原理与控制 工学院 3.1 指令格式 l3按功能分类 l1) 数据传送指令,有28条。 l这类指令主要用于单片机片内RAM和特殊功能寄存器SFR之间传 送数据,也可以用于单片机片内和片外存储单元之间传送数据。 数据传送指令是把源地址中操作数传送到目的地址(或目的寄存器 )的指令,在该指令执行后源地址中的操作数不被破坏。源操作数 有8位和16位之分,前者称为8位数传送指令,后者叫做16位数传 送指令。 l交换指令也属于数据传送指令,是把两个地址单元中内容相互交 换。因此,这类指令中的操作数或操作数地址是互为“源操作数” 和“目的操作数”的。 微机原理与控制 工学院 3.1 指令格式 l2) 算术运算指令,有24条。 l算术运算指令用于对两个操作数进行加、减、乘、除等算术运算 。在两个操作数中,一个应放在累加器A中,另一个可以在某个 寄存器或片内RAM单元中,也可以放在指令码的第二和第三字节 中。指令执行后,运算结果便可保留在累加器A中,运算中产生 的进位标志、奇偶标志和溢出标志等皆可保留在PSW中。参加运 算的两数可以是8位的,也可以是16位的。 l3) 逻辑运算和环移指令,有25条。 l这类指令包括逻辑运算和环移两类指令。逻辑操作指令用于对两 个操作数进行逻辑乘、逻辑加、逻辑取反和异或等操作,大多数 指令也需要把两个操作数中的一个预先放入累加器A,操作结果 也在累加器A中。环移指令可以对累加器A中的数进行环移。环移 指令有左环移和右环移之分,也有带进位位Cy和不带进位位Cy 之分。 微机原理与控制 工学院 3.1 指令格式 l4) 位操作指令,有12条。 l位操作指令又称布尔变量操作指令,共分为位传送、位 置位、位运算和位控制转移指令等四类。其中,位传送 、位置位和位运算指令的操作数不是以字节为单位进行 操作的,而是以字节中某位为单位进行的;位控制转移 指令不是以检测某个字节的结果为条件而转移的,而是 以检测字节中的某一位的状态来转移的。 l5) 控制转移指令,有22条。 l控制转移指令分为条件转移、无条件转移、调用和返回 等指令。这类指令的共同特点是可以改变程序执行的流 向,或者是使CPU转移到另一处执行,或者是继续顺序 地执行。无论是哪一类指令,执行后都会改变程序计数 器PC中的值。 微机原理与控制 工学院 3.1 指令格式 l3.1.3 指令的存放空间 l指令是单片机执行某种操作的命令,用户若要单片机完成一件事情, 必须先编写指令,再转成机器码形式,从键盘等设备输入到程序存储 器存放。存放在程序存储器的哪个空间,用户应首先给程序计数器 PC一个首地址,指令就从这个首地址开始存放,一个字节存放到一 个单元后,程序计数器PC自动加1,指令的下一字节存放在PC当前 值的地址单元。 l3.1.4 指令常用的缩写符号说明 l在描述MCS一51指令系统的功能时,经常使用一些缩写符号,各符 号的含义如下: l(1)A 累加器ACC。常用ACC表示其地址,用A表示其名称。 l(2)AB 累加器ACC和寄存器B组成的寄存器对。通常在乘、除法指 令中出现。 微机原理与控制 工学院 3.1 指令格式 l(3)Rn (n=07),选定的当前工作寄存器,范围为R0 R7。 l(4)Ri (i=0或1),工作寄存器R0或R1。 l(5) 间接寻址符号,简称间址符,常与Ri配合用,如 Ri,表示指令对Ri寄存器间接寻址。 l(6)#data 8位立即数,“#”表示后面的data是立即数而 不是直接地址。 l(7)direct 表示片内RAM存储单元的8位直接地址,立即 数和直接地址可用二进制码表示,后缀为“B”;也可用十 六进制码表示,后缀为“H”;如果是以字母开头的十六进 制数,在其前面应加一个“0”。如,二进制码10101000B 也可转成十六进制码A8H,但必须写成“0A8H”。 微机原理与控制 工学院 3.1 指令格式 l(8)DPTR:表示以DPTR为数据指针的间接寻址,用于对外部 64K RAMROM寻址。 l(9)rel 以补码形式表示的8位地址偏移量,范围为-128+127。 l(10)Bit 位地址。 l(11)$:当前指令的地址。 l指令中还经常使用到下列符号,含义如下: l 加; l 减; l 乘; l 除; 微机原理与控制 工学院 3.1 指令格式 l 逻辑与; l 逻辑或; l 逻辑异或; l 大于; l30H处理程序 l lLOW: ;(A)00H,则转移执行M2 ,故1(A)。若CY=1,说明(A)00H,则顺序执行,置一1到A。 l(3)第七条指令“MOV A,#0FFH”。因“一1”是负数,所以其补码表 示为0FFH即10000001H。 微机原理与控制 工学院 3.10 汇编语言程序设计 l3循环程序设计 l所谓循环程序,是指计算机反复执行某一段程序。在复杂的数学计算 中,往往会遇到反复进行某一运算的情况,对于这一反复运算,若按 简单程序的设计方法进行设计,则程序会很长,有时甚至难以实现。 为此可以通过一定的控制方法,使计算机反复执行这一程序段,即编 写循环程序。这样可以大大简化程序设计工作,使程序变得简洁,而 且可以节省存储单元。 l(1)循环程序的结构 典型结构如图319所示。 微机原理与控制 工学院 图319循环程序的典型结构 微机原理与控制 工学院 3.10 汇编语言程序设计 l置初值 循环准备阶段设置循环次数和起始地址等参数 。 l循环工作部分 整个循环程序中最基本的部分,多次重 复被执行的某些操作。完成主要的计算任务或其他工作 。 l修改控制变量 修改循环次数、数据或地址指针等。 l循环控制结束部分 判断循环控制变量是否满足循环结 束的条件。如不满足,继续执行循环体;若条件满足, 顺序执行下面程序。 微机原理与控制 工学院 3.10 汇编语言程序设计 l(2)循环嵌套与多重循环 构成循环程序的形式和方法是多种多样的, 若循环体中不再包含循环程序,则称为单循环程序;如果一个循环程 序中包含了其他的循环程序,则称该循环为多重循环程序,或循环嵌 套。在多重循环程序中,只允许外重循环程序嵌套内重循环程序。而 不允许循环体相互交叉。也不允许从循环程序外部跳人循环程序内部 。如果在编写程序时出现了这种不符合要求的“交叉”或“跳人”,则计 算机在执行时必然出错。 l(3)循环程序举例。 微机原理与控制 工学院 3.10 汇编语言程序设计 l例352 循环次数已知的单重循环程序。 l设有50个单字节数,存放在内部数据存储器30H单元开始 的连续单元中,且总和也为单字节数,试编写求这50个数 之和的程序。 l解 (1)确定算法 若用简单程序编写,需要49条加法指令进 行相加,这样程序冗长,故应用循环程序求解。若使用循 环程序,需要设置两个计数指针,一个对地址计数,指示 下一个数的地址。另一个对相加次数计数,即控制循环的 次数。50个数,循环50次,十进制50化为二进制数为 00110010,写成十六进制数为32H。 l(2)画流程图 根据算法分析,画出图320所示的流程图。 微机原理与控制 工学院 图320 例352流程图 微机原理与控制 工学院 3.10 汇编语言程序设计 l(3)编写程序 设50个数连续存放在30H为首址的50个连续单元内,结果 存放在地址为60H的单元内。 lORG 2020H lSTART:CLR A ;A清零 l MOV R0,#30H ;R0首地址 l MOV R1,#32H ;置计数初值 lLOOP: ADD A,R0 ;求累加和 l INC R0 ;修改地址,每循环一次加1 l DJNZ R1,LOOP ;循环控制,(R1)0, 回到LOOP,(R1)=0, 顺序执行。 l MOV 60H,A ;结果60H l END 微机原理与控制 工学院 3.10 汇编语言程序设计 l4子程序设计 l在一个程序中,往往有很多地方需要执行同样的一种操作,但程序很 不规则,不能用循环程序来实现,这时我们可以把这个操作单独编制 成一个子程序,在原来程序中(主程序)需要执行这种操作的地方执行 一条调用指令,转到子程序完成规定操作以后用返回指令“RET”又返 回到原来的程序(主程序)继续执行下去。这样处理的好处是: l(1)避免在几个地方对同样一种操作进行重复编程,简化了程序的逻 辑结构; l(2)节省了程序存储器单元。 微机原理与控制 工学院 3.10 汇编语言程序设计 l另外,在子程序的执行过程中,还可能发生子程 序再次调用其他子程序的情况,称子程序嵌套。 子程序调用有一个特别的问题,就是参数传递。 主程序在调用子程序时,主程序应先把子程序需 要的有关参数(如入口参数)放到某些约定的位置 ,子程序在运行时,可以从约定的位置得到有关 的参数。同样,子程序在运行结束后,也应该把 运算结果(出口参数)送至约定位置。在通常情况 下,常以累加器A和工作寄存器Rn作为参数传递 的寄存器,也可以用指针寄存器、堆栈等参数传 递方法。 微机原理与控制 工学院 3.10 汇编语言程序设计 l例354 编写多字节数的加法程序。 l解 (1)确定算法 设这两个多字节数分别存放在起始地址70H和80H 的连续区域中(从低位字节开始存放),两个数的字节数存放在30H单 元中,最后求得的和存放在70H开始的区域中。 l(2)程序流程图如图322所示。 l(3)编写程序 l主程序: lORG lMOV R0,#70H ;第一加数的首址给R0 lMOV R1,#80H

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论