PIC8位单片机汇编语言常用指令的识读_第1页
PIC8位单片机汇编语言常用指令的识读_第2页
全文预览已结束

下载本文档

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

文档简介

个人收集整理-ZQ位单片机汇编语言常用指令的识读各大类单片机的指令系统是没有通用性的,它是由单片机生产厂家规定的,所以用户必须遵循厂家规定的标准,才能达到应用单片机的目的。 位单片机共有三个级别,有相对应的指令集。基本级系列芯片共有指令条,每条指令是位字长;中级系列芯片共有指令条,每条指令是位字长;高级系列芯片共有指令条,每条指令是位字长。其指令向下兼容。在这里笔者介绍 位单片机汇编语言指令的组成及指令中符号的功能,以供初学者阅读相关书籍和资料时快速入门。一、汇编语言指令格式系列微控制器汇编语言指令与系列单片机汇编语言一样,每条汇编语言指令由个部分组成,其书写格式如下:标号操作码助记符操作数,操作数;注释指令格式说明如下:指令的个部分之间由空格作隔离符,空格可以是格或多格,以保证交叉汇编时,机能识别指令。标号与系列单片机功能相同,标号代表指令的符号地址。在程序汇编时,已赋以指令存储器地址的具体数值。汇编语言中采用符号地址(即标号)是便于查看、修改,尤其是便于指令转移地址的表示。标号是指令格式中的可选项,只有在被其它语句引用时才需派上标号。在无标号的情况下,指令助记符前面必须保留一个或一个以上的空格再写指令助记符。指令助记符不能占用标号的位置,否则该助记符会被汇编程序作标号误处理。书写标号时,规定第一字符必须是字母或半角下划线“”,它后面可以跟英文和数字字符、冒号(:)制符表等,并可任意组合。再有标号不能用操作码助记符和寄存器的代号表示。标号也可以单独占一行。操作码助记符该字段是指令的必选项。该项可以是指令助记符,也可以由伪指令及宏命令组成,其作用是在交叉汇编时,“指令操作码助记符”与“操作码表”进行逐一比较,找出其相应的机器码一一代之。操作数由操作数的数据值或以符号表示的数据或地址值组成。若操作数有两个,则两个操作数之间用逗号(,)分开。当操作数是常数时,常数可以是二进制、八进制、十进制或十六进制数。还可以是被定义过的标号、字符串和码等。具体表示时,规定在二进制数前冠以字母“”,例如;八进制数前冠以字母“”,例如;十进制数前冠以字母“”,例如;十六进制数前冠以“”,例如。在这里 位单片机默认进制是十六进制,在十六进制数之前加上,如可以写成。指令的操作数项也是可选项。系列与系列位单片机一样,存在寻址方法,即操作数的来源或去向问题。因系列微控制器采用了精简指令集()结构体系,其寻址方式和指令都既少而又简单。其寻址方式根据操作数来源的不同,可分为立即数寻址、直接寻址、寄存器间接寻址和位寻址四种。所以系列单片机指令中的操作数常常出现有关寄存器符号。有关的寻址实例,均可在本文的后面找到。注释用来对程序作些说明,便于人们阅读程序。注释开始之前用分号(;)与其它部分相隔。当汇编程序检测到分号时,其后面的字符不再处理。值得注意:在用到子程序时应说明程序的入口条件、出口条件以及该程序应完成的功能和作用。二、清零指令(共条)寄存器清零指令实例:;寄存器被清零说明:该条指令很简单,其中为单片机的工作寄存器,相当于系列单片机中的累加器,是英语的缩写字母。看门狗定时器清零指令。实例:;看门狗定时器清零(若已赋值,同时清预分频器)说明:是英语 的缩写字母。见上述说明。注意该两条指令无操作数。寄存器清零指令。指令格式: 实例: ;对清零说明:在系列位单片机中,常用符号(或)代表片内的各种寄程器和的序号地址。取值按系列不同型号而不同,一般为。代表定时器计数器,所以对寄程器清零,采用了直接寻址方式直接给出要访问的寄存器。位清零指令。指令格式 ,实例: ,;把寄存器的位清零说明:是英语 的缩写。指令格式中的,同上说明;符号是表示片内某个位数据寄存器的位号(或位地址),所以的取值为或。实例中是的缩写。实例中的代表指令格式中的即寄存器的位。通过上述四条清零指令格式和实例,可以说明,学习系列位单片机的指令时应首先了解指令的助记符意义(功能),再有就是它的表达方式。初学者没有必要死记指令,重要是理解和实践。竞赛试题:有一(位)寄存器,其工作状态,对它执行指令: ,执行后的;和。指令中的标号是可选项,在什么条件下可派上用场? 三、面向字节、常数与控制操作的指令传送立即数至工作寄存器指令指令格式: ;表示常数、立即数和标号说明:是 的缩写实例: ;常数送口控制寄存器设置指令指令格式;说明; 是 的缩写。其功能是把工作寄存器的内容送入口控制寄存器。当时,置对应口为输出;,置口为输入。实例: ;把送入 ;置 口为输出 ;把送入 ;置 口为输入说明:这是汇编语言中常用的几条指令,即设置某个口(这里是口和口)为输入或输出的语句。可见,识读指令时,一应充分理解语句格式的功能,二应前后联系阅读。寄存器内容送寄存器(内容保持不变)指令指令格式: 说明:是 的缩写实例: ;送送 ;送内容到口说明:第一条指令(常数)送工作寄存器,第二条指令,把内容常数送到寄存器中,查表即为口,所以(口)寄存器传送指令指令格式: ,说明:是 的缩写。代表中的某个寄存器。指令中的规定:时,内容送;时,内容送寄存器。实例: , ;口内容送 ;口内容送说明:第一条指令中的代表寄存器,查寄存器表为口;代表,代表选择的目标为寄存器。第二条指令中的代表寄存器。所以两条指令结果是把口的内容送。至于内容是多少?还应在汇编语言开始时附加指令,这里从略。空操作指令指令格式:说明:是英语 的缩写。无操作数,所以称为空操作。执行指令只使程序计数器加,所以占用一个机器周期。实例: ;送到 ;内容写入口 ;空操作 , ;读操作说明:该三条指令是一种对口的口连续操作的实例,其目的达到写入口的内容要读出时,应保证写、读之间有个稳定时间,因此加入了空操作指令。无条件跳转指令指令格式: 说明:执行该条指令时,将指令转移到指定的地址(跳转)。指令中的,常与程序中的标号联系起来。实例:见第条指令中寄存器内容减,结果为零的间跳指令指令格式: ,说明:是英语 , 的缩写。符号,代表的意义,前述已作说明。该条指令是指寄存器的内容减存入()或()中。若指令执行结果减不为零,指令顺序执行;为零时,就间跳下一条指令后再执行(等效顺序执行一条空指令),实际指令中,当时,该项常被略去。寄存器内容加,结果为零间跳指令指令格式: ,说明:是英语 , 的缩写。该条指令与上一条()指令差别仅在于“”上,即执行这条指令时,寄存器内容加,若结果不为零,则指令顺序执行;为零则指令间跳执行。执行这条指令的其它逻辑关系与上条相同。子程序返回指令指令格式: 说明:是 的缩写。该指令代表子程序返回,返回前先把位立即数送。实例:某个汇编语言的延时子程序(摘要):() ;送延时常数入() ;送入计数器() ;对计数器清零() ;计数器加计数器加 结果不为零,跳转循环() ;() ;计数减计数器减 结果不为零,跳转循环重 复执行第条指令() ;() ;子程序执行结束返回说明:程序中的注释已分别对每条指令的功能作了说明,补充说明当执行第()条加指令结果为零时,就间跳转到执行第()条指令。当执行第()条减指令结果为零时,就间跳转到第()条子程序返回,整个延时指令才算完成。计数器或代表中某个寄存器,该寄存器由程序开始的伪指令赋值决定(关于伪指令今后将作专门介绍)。知识竞赛试题:请计算上文中()()延时程序的延时时间。已知所用的某个芯片的晶振为,每个指令周期执行时间为,除跳转指令是双周期外,其它指令是单周期指令。本文关于指令的注释将与前述指令中的略有不同。前述指令注释时是对指令具体完成的功能给以说明,这种注释方法对初学者确实易于接受和理解,但是实际应用中的产品汇编语言的注释通常是以程序要做什么(或指令的作用)而不是说指令的直接功能。鉴于上述原因,下述的指令注释将改变过去的注释方法,用程序应起的作用作注释。寄程器半字节交换指令指令格式:,说明:是 的合写。符号、的意义与前述的相同。该条指令的功能是寄存器的高位与低位交换,即指令执行前,若寄存器的位状态为、,执行后的位状态变为、,其结果存入()或()中。实例:中断现场保护是中断技术中重要部分。由于指令系统中没有进栈和出栈指令,所以只能用其它指令来实现。因为在主程序中常常用到工作寄存器和状态寄存器,所以中断现场保护常要保护寄存器和。下面是对系列芯片中断现场保护的实例程序。 ;将内容存入到临时寄存器 中,;交换与内容 ;将的内容存入到临 时寄存器中中断服务程序,;交换与 的内容 ;复原成原来的状态, ;交换内容,;复原成原来的状态说明:上述程序中各条指令的注释基本上都是以程序应达到的目的而注释的,对每条指令的功能几乎未涉及。这是初学者应特别注意的。子程序调用指令( )指令格式: ;为立即地址说明:子程序调用,不同型号芯片的实现方法不尽相同,其共同点是首先将返回地址()压栈保护,再转入所调用的子程序入口地址执行(与指令功能相似)。指令格式模式:;调用延时子程序 ;延时子程序 说明:调用指令执行前,地址调用指令执行后,地址(标号),堆栈指针(返回地址)。实例:见下条指令的实例寄存器内容取反指令指令格式:,说明:是 的缩写。其中时,操作();时,操作()。功能:寄存器内容取反后送入()或自身()。实例: ;主程序开始;设置口为输出, ;置口位为 ;闪动延时;口求反(亮灭亮控制);循环说明:上述指令是一种 发光控制实验部分程序。其中延时子程序未列出,但不影响本条指令的识读。程序中的主程序开始的三条指令,均已介绍过,紧跟着的指令是调用执行子程序,其入口地址为标号。子程序执行结束后,又执行 的发光亮灭亮灭控制指令。后面一条 指令是达到循环点亮目的。面向位的操作指令(共条,高级产品多增一条)该类指令除一条位清零外,另有一条寄存器位的置指令和另外两条位跳步指令(高级产品多增一条的位触发转换指令)。()位置指令。指令格式 ,说明:是 的缩写。和的意义与前述相同,该条指令的功能是将寄存器的位置。()位测试、为零间跳指令。指令格式 ,说明:是 , 的缩写。指令功能是测试寄存器位“”,如为,跳过下一条指令;为顺序执行,即当()时,就不执行当前指令而执行下一条指令(间跳),即用一条空指令代替它,所以该条指令占用个指令周期。()位测试、为间跳指令。指令格

温馨提示

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

评论

0/150

提交评论