资源预览内容
第1页 / 共81页
第2页 / 共81页
第3页 / 共81页
第4页 / 共81页
第5页 / 共81页
第6页 / 共81页
第7页 / 共81页
第8页 / 共81页
第9页 / 共81页
第10页 / 共81页
亲,该文档总共81页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
单片机应用技术 1/81 第4章 指令系统 4.1 4.1 助记符语言助记符语言 4.2 4.2 指令指令格式及分类格式及分类 4.3 4.3 寻址方式寻址方式 4.4 4.4 数据传送类指令数据传送类指令 4.6 4.6 算术运算类指令算术运算类指令 4.5 4.5 逻辑操作类指令逻辑操作类指令 4.7 4.7 位操作指令位操作指令 4.8 4.8 控制转移类指令控制转移类指令 单片机应用技术 2/81 4.1 助记符语言 高级语言编程简单,执行效率低,常用在计算和管理的场合。 汇编语言(助记符语言)编程繁琐,执行效率高,宜用于需要结构 紧凑、反应快速的实时控制场合。 助记符一般是由操作码和操作数两部分组成的。操作码反映了指令 的功能,操作数代表了指令的操作对象。 例如,ADD A,#6AH;AA+#6AH 其中ADD是操作码符号。A和6AH是操作数。前者反映了该指令的功能 是做加法,后者则表示相加的对象是A累加器中的内容和立即数6AH。 由助记符构成的编程语言一般称为汇编语言。 目前大多数单片机的编译系统都支持C语言编程,并可以对编译的代 码进行优化。使用C语言编程,具有编写简单、直观易读、通用性好等特 点,特别是控制任务比较复杂或者具有大量运算的系统中,C语言更显示 出了超越汇编语言的优势。然而,汇编语言是理解和掌握单片机原理及 应用的基础,并且,在控制系统不太复杂、实时性要求较高的控制系统 中,较多的用户还是使用汇编语言进行程序设计。 4.1.1 概述 单片机应用技术 3/81 4.1.2 操作码 操作码是指令功能的英文缩写。 操作码含义 1. 传送类: MOV MOVX MOVC 传送字节变量(数据存储器、I/O口) 外部送数到A 程序存储器送数到A 2. 数据操作类: ADD SUBB MUL DIV 加 带借位减 乘 除 3. 程序控制类: AJMP(SJMP、LJMP) JZ、JC、JB(JNZ、JNC、JNB) ACALL(LCALL) RET CJNE 绝对转移(短转移、长转移) 有条件转移 绝对调用(长调用) 子程序返回 第一操作数与第二操作数比较不等则转移 4. 逻辑操作类: ANL ORL XRL 与 或 异或 单片机应用技术 4/81 4.1.3 操作数 操作数是一条指令操作的对象。不同功能的指令,操作对象形式不同 。 操作数可以是数据,也可以是地址。 操作数是指令中给出的数据时,被称为立即数。它有8位和16位二进 制数两种。在助记符的数字前加以“#”来标记其是立即数,常用符号 “#data”表示。 操作数也可以是存放数据的地址,这些地址可以是: 1.所选定寄存器工作区内的R7R0,A、B、C(位)、AB(双字节) ,DPTR(双字节)等可编址的寄存器。 2. 内部数据存储器中低128字节,专用寄存器SFR,可寻址的位。 3. 外部数据存储器空间。 4. 程序存储器空间。 注意:编写程序时,操作数的最高位大于9时,在操作数的最高位 前要加写0。否则,编译会提示出错。例如:MOV A,#0F8H是正确的,而 MOV A,#F8H是不正确的。 单片机应用技术 5/81 4.2 指令格式及分类 用助记符来描述机器指令的语言称为符号语言或汇编语言,汇编 语言是一种面向机器的程序设计语言。其规定的格式如下: 标号:操作码助记符 第一操作数,第二操作数 ,第三操作数 ;注释 标号是表示该指令所在的符号地址,一般是由字母开头的字符串组成 。例如: ABC Q3 PAT D678 均为标号的允许格式 5AC -PTR +A等 均为标号不允许的格式 操作码助记符表示了指令的功能。 第一操作数、第二操作数都表示操作的对象,这些是指令的核心 部分。指令操作码部分是必不可少的。操作数段有的指令可以没有, 或者只有一个操作数,例如: RETI;中断返回,无操作数 CPL A;累加器逐位取反,只有一个操作数。 注释字段是为方便用户阅读程序所加注的说明。 4.2.1 汇编语言 单片机应用技术 6/81 4.2.2 指令代码的存储格式 指令代码是指令的二进制表示方法,是指令在存储器中存放的形 式。汇编语言只有经“编辑/汇编”程序翻译成机器语言,才能被执行 。STC12C5410AD单片机指令系统中的指令字长有单字节、双字节、三 字节三种。指令字节数越多,所占用内存单元越多。但是指令执行时 间长短并不和所占用字节数的多少成比例。例如乘法为单字节指令, 但是所需的指令执行时间却最长。 单字节指令:操作码 例:RET; 机器代码:22H 双字节指令:操 作 码 操 作 数 例:MOV A,#0FH; 机器代码:74 0F H 三字节指令:操作码 第一操作数 第二操作数 例:MOV 74H,#0BH; 机器代码:75 74 0BH 单片机应用技术 7/81 4.2.3 指令中的符号约定 符号含义 A累加器ACC B寄存器B C进(借)位标志位,在位操作指令中作为累加器使用 direct直接地址 bit位地址,内部RAM中的可寻址位和SFR中的寻址位 #data8位常数(8位立即数) #data1616位常数(16位立即数) 间接寻址 rel8位带符号偏移量。 Rn当前工作区(03区)的工作寄存器(n=0,1,7) Ri可作地址寄存器的工作寄存器R0和R1(i=0,1) (X)X寄存器内容 (X)由X寄存器寻址的存储单元的内容 表示数据的传送方向 /表示位操作数取反 表示逻辑与操作 表示逻辑或操作 表示逻辑异或操作 单片机应用技术 8/81 4.3 寻址方式 指令中的源操作数是立即数,叫做立即寻址。立即数的类型可 以是:二进制(B)、十进制、十六进制(H)、整数、序数或者字符。 立即数的字长可以是8位或16位。 例如: MOV A,#61H 这条指令是把61H这个数据送入到累加器A中。 例如: MOV DPTR,#2050H 这条指令是把2050H这个数据送入到数据指针DPTR中。 1立即寻址 操作数是指令的重要组成部分,它指定了参与运算的数或数所在单 元地址,而如何得到这个地址就称为寻址方式。一般来说,寻址方式越 多,计算机功能越强,灵活性越大。所以寻址方式对机器的性能有重大 影响。STC12C5410AD单片机共有7种寻址方式,描述如下: 单片机应用技术 9/81 2直接寻址 直接寻址就是在指令中包含了操作数的地址,该地址直接给出 了参加运算或传送的单元或位。它可访问三种地址空间: (1) 特殊功能寄存器SFR:直接寻址是唯一的访问形式 (2) 内部数据RAM中的00H7FH的128个字节单元 (3) 位地址空间 例如:MOV A,60H ;把60H单元内容送入累加器A中。 单片机应用技术 10/81 3寄存器寻址 指定某一可寻址的寄存器的内容为操作数,对寄存器ACC,B, DPTR和CY(进位标志,也是布尔处理机的累加器),其寻址时具体的 寄存器已隐含在其操作码中。而对选定的8个工作寄存器R7R0,则用 指令操作码的低3位指明所用的寄存器。在应用中,可以先通过PSW中 的RS1、RS0两位来选择寄存器组,再用操作码中低3位来确定是组内哪 一个寄存器,达到寻址的目的。 例如:INC R5;把寄存器R3的内容加1后再送回R5 单片机应用技术 11/81 4寄存器间接寻址 指令指定某一寄存器的内容作为操作数地址。 STC12C5410AD单片机中可用来间接寻址的寄存器有:选定工作寄存器区的 R0、R1,16位的数据指针DPTR,使用时前面加表示间接寻址。 例如:MOV A ,R0 ;将R0中的内容所表示的地址单元中的内容送给A MOVX DPTP ,A 单片机应用技术 12/81 5变址寻址 由指令指定的偏移量寄存器和变址寄存器DPTR或PC相 加所得结果作为操作数地址。 例如:MOVC A ,A+PC 其中A作为偏移量寄存器,PC作为变址寄存器,A中内 容为无符号数和PC相加,从而得到其真正的操作数地址。 单片机应用技术 13/81 6相对寻址 把指令中给定的地址偏移量与本指令所在单元地址(即程序计数 器PC中的内容)相加,即得到真正的程序转移地址。与变址方式不同 。该偏移量有正、负号,在该机器指令中必须以补码形式给出,所转 移的范围为相对于当前PC值的-128+127之间。 例如:JC 80H 若C=0,则PC值不变,若进位C=1,则以现行的PC为基地址加上80H 得到转向地址。 单片机应用技术 14/81 7位寻址 支持位单元存取操作是STC12C5410AD单片机的一个主要特点 。位操作指令能对位地址空间的每一位都可进行运算和传送操作 。 例如:MOV C,P1.0;将P1.0的状态传送到C SETB 20.6H ;将20H单元的第6位置为1 MOV A,50H;50H是字节地址 MOV C,50H ;50H是位地址 MOV 60H,50H;50H是字节地址 单片机应用技术 15/81 4.4 数据传送类指令 数据传送类指令是使用频率最高的一类 指令。主要用来给STC12C5410AD系统的内部 和外部资源赋值,进行堆栈的存取操作等。 数据传送类指令执行前后,对程序状态字PSW 不产生影响。按其操作方式,又可把它们分 为三种: 数据传送 数据交换 栈操作 单片机应用技术 16/81 4.4.1 数据传送指令 格式:MOV , 功能:把第二操作数指定的字节变量传送 到由第一操作数指定的单元中,不影响源字节 ,不影响任何别的寄存器或标志。这是最灵活 的操作,允许15种源和目的寻址方式组合。 一、 MOV指令 单片机应用技术 17/81 1. 立即数送累加器A和内部数据存储器(Rn,内部RAM,SFR)。共有4 条指令: MOV A, #data ;(A) #data MOV direct,#data ;(direct) #data MOV Ri, #data ;(Ri) #data MOV Rn, #data ;(Rn) #data 符号表示间接寻址,(Ri)表示把立即数送到由Ri寄存器的内容所 指出的那个RAM单元中去。Ri中i=0或i=1。 例1 MOV R0,#56H MOV R1,#59H 假设R0的内容为20H,则执行上述第一条指令后,立即数56H将送入内部 数据RAM字节地址为20H的单元中。 例2 MOVR0,#79H ;将立即数79H送到R0中 MOVR1,#15H ;将立即数15H送到R1中 例3 利用直接寻址可把立即数送入内部数据RAM任意单元或SFR中任一特殊功 能寄存器,如例1用间接寻址给内部RAM 20H单元送立即数56H,需两条指令: MOVR0,#20H MOVR0,#56H 用直接寻址只用一条指令: MOV20H,#56H 而指令MOVP1,#80H 则可把立即数80H直接送入P1(字节地址为90H)口中。 单片机应用技术 18/81 2.内部数据存储器(Rn,内部RAM,SFR)与累加器A传送数据 共有6条指令: MOV A, direct;(A) (direct) MOV A, Ri ;(A) (Ri) MOV A, Rn ;(A) (Rn) MOV direct, A ;(direct) (A) MOV Ri, A ;(Ri) (A) MOV Rn, A ;(Rn)(A) 间接寻址Ri是以Ri的内容作为地址,由于Ri为八位寄存器,寻址范围为 0255。但由于特殊功能寄存器SFR只能被直接寻址,而对于普通的8051单 片机来说,在SFR地址范围(128255)中很多单元又无定义,若对之读写, 将得不到确定的值,写入的数也将丢失。所以对内部数据存储器来说间接寻 址的真正作用范围实际上只有0
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号